这个示例展示了如何访问来自美国地质调查局(USGS)国家地图SOAP服务器的图像。要创建映射,您需要以下信息。
获得一个地图贴图。
获取地图名称。
获取贴图的格式。
这个例子向你展示了如何在USGS web服务中调用函数,USGSImageryOnly_MapServer
,以获取这些信息。
安装Java®JDK™和Apache™CXF程序,并设置工具路径来运行此示例。
p = matlab.wsdl.setWSDLToolPath;如果(p.JDK) || isempty(p.CXF))安装JDK和Apache CXF程序) disp (“请参阅本例末尾的设置WSDL工具链接。”)其他的disp (的路径设置为:) matlab.wsdl.setWSDLToolPath结束
将当前文件夹更改为可写文件夹。
分配WSDL URL。
wsdlFile =...“http://basemap.nationalmap.gov/arcgis/services/USGSImageryOnly/MapServer?wsdl”;
为客户机创建类文件。
matlab.wsdl.createWSDLClient (wsdlFile)
创建USGSImageryOnly_MapServer \ USGSImageryOnly_MapServer。m .\+wsdl要使用USGSImageryOnly_MapServer,必须运行javaaddpath('.\+wsdl\mapserver.jar')。ans = @USGSImageryOnly_MapServer
将jar文件添加到Java路径。
javaaddpath (“\ wsdl + \ mapserver.jar。”)
启动服务。
wsdl = USGSImageryOnly_MapServer;
探索服务。
帮助USGSImageryOnly_MapServer
USGSImageryOnly_MapServer连接USGSImageryOnly_MapServer服务的客户端service = USGSImageryOnly_MapServer连接http://basemap.nationalmap.gov/arcgis/services/USGSImageryOnly/MapServer,返回service。要与服务通信,调用服务上的一个函数:[…]] =函数(服务、参数、…)有关函数列表,请参见USGSImageryOnly_MapServer文档。
点击链接医生USGSImageryOnly_MapServer
.MATLAB®打开的参考页USGSImageryOnly_MapServer
在帮助浏览器中。
请阅读文档以获得所需的输入GetMapTile
函数。
帮助GetMapTile
——帮助USGSImageryOnly_MapServer / GetMapTile GetMapTile结果= GetMapTile (obj, MapName水平,行,列,格式)输入:obj - USGSImageryOnly_MapServer对象MapName -串级数字标量(XML int)行——数字标量(XML int)列-数字标量(XML int)格式字符串输出:Result - vector of numbers 0-255 (XML base64Binary)参见USGSImageryOnly_MapServer。
你需要MapName
,水平
,行
,列
,格式
输入参数。
请阅读文档以获取提供映射名称的函数,GetDefaultMapName
.
帮助GetDefaultMapName
——help for USGSImageryOnly_MapServer/GetDefaultMapName——GetDefaultMapName Result = GetDefaultMapName(obj) Inputs: obj - USGSImageryOnly_MapServer object Output: Result - string参见USGSImageryOnly_MapServer。
这个函数提供一个映射名称。
请阅读文档以获取提供地图格式信息的函数,GetTileImageInfo
.
帮助GetTileImageInfo
——help for USGSImageryOnly_MapServer/GetTileImageInfo——GetTileImageInfo Result = GetTileImageInfo(obj,MapName) Inputs: obj - USGSImageryOnly_MapServer对象MapName - string Output: Result - TileImageInfo对象参见USGSImageryOnly_MapServer。
这个函数返回TileImageInfo
对象。
请阅读文档TileImageInfo
对象,单击显示为的帮助中的链接TileImageInfo
.
TileImageInfo(CacheTileFormat,CompressionQuality,Antialiasing) TileImageInfo对象for use with USGSImageryOnly_MapServer web客户端。CompressionQuality—numeric scalar (XML int)缓存平铺图像压缩质量。反锯齿字符串参见USGSImageryOnly_MapServer。
MATLAB在帮助浏览器中打开一个文档。格式信息为CacheTileFormat
.
创建JPEG数据。下面的代码需要了解JPEG图像格式和USGS服务器使用的平铺方案。
获取默认映射名。defaultMapName = GetDefaultMapName (wsdl);%获取地图计数。数= GetMapCount (wsdl);%获取映射名称。只有一个地图(计数值),%,但索引是基于零的。mapName = GetMapName(wsdl, count-1);%获取关于贴图的信息。tileImageInfo = GetTileImageInfo(wsdl, mapName);%获取数据的格式。格式= tileImageInfo.CacheTileFormat;由于格式被指定为“混合”,这意味着GetMapTile的结果是一个jpeg编码的流。%地图瓷砖组织与最低的级别为%最低层次的细节和瓷砖使用%的从零开始的索引。水平= 0;行= 0;坳= 0;jpeg = GetMapTile (wsdl、mapName水平,行,坳,格式);
将jpeg编码的数据写入文件。使用imread
读取并解码JPEG数据并返回一个m × n × 3uint8
矩阵。
ext =“jpg”;tilename = [“USGSImageryOnly_MapServer”“0 _0_0”ext);fid = fopen (tilename,' w ');写入文件(fid, jpeg)文件关闭(fid)
查看地图。
tileImage = imread (tilename);图imshow (tileImage)