显示世界地图
这个例子展示了如何访问来自美国地质调查局(USGS)国家地图SOAP服务器的图像。要创建映射,您需要以下信息。
获取一个地图贴图。
获取地图名称。
获取磁贴的格式。
这个例子向您展示了如何调用USGS web服务中的函数。USGSImageryOnly_MapServer
,来获取这些信息。
安装Java®JDK™和Apache™CXF程序,并设置工具路径来运行本示例。
p = matlab.wsdl.setWSDLToolPath;如果(isempty(p.JDK) || isempty(p.CXF))安装Java Development Kit (JDK)和Apache CXF程序。) disp (请参阅本示例末尾的setup WSDL Tools链接。)其他的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。要与服务通信,调用service上的一个函数:[…]= FUNCTION(SERVICE,arg,…)函数列表请参见文档USGSImageryOnly_MapServer。
点击链接医生USGSImageryOnly_MapServer
。MATLAB®打开的参考页面USGSImageryOnly_MapServer
在帮助浏览器中。
的必要输入,请阅读文档GetMapTile
函数。
帮助GetMapTile
——help for USGSImageryOnly_MapServer/GetMapTile——GetMapTile Result = GetMapTile(obj,MapName,Level,Row,Column,Format)输入:obj - USGSImageryOnly_MapServer对象MapName - string Level -数字标量(XML int) Row -数字标量(XML int) Column -数字标量(XML int) Format - string输出:Result - 0-255的数字向量(XML base64Binary)参见USGSImageryOnly_MapServer。
你需要MapName
,水平
,行
,列
,格式
输入参数。
请阅读提供映射名称的函数的文档。GetDefaultMapName
。
帮助GetDefaultMapName
——help for USGSImageryOnly_MapServer/GetDefaultMapName——GetDefaultMapName Result = GetDefaultMapName(obj)输入:obj - USGSImageryOnly_MapServer对象输出:Result - string参见USGSImageryOnly_MapServer。
这个函数提供了一个映射名称。
请阅读提供映射格式信息的函数的文档。GetTileImageInfo
。
帮助GetTileImageInfo
——help for USGSImageryOnly_MapServer/GetTileImageInfo——GetTileImageInfo Result = GetTileImageInfo(obj,MapName)输入:obj - USGSImageryOnly_MapServer对象MapName - string输出:Result - TileImageInfo对象参见USGSImageryOnly_MapServer。
这个函数返回一个TileImageInfo
对象。
的文档TileImageInfo
通过单击显示到的帮助中的链接TileImageInfo
。
TileImageInfo(CacheTileFormat,CompressionQuality,Antialiasing) TileImageInfo对象,用于USGSImageryOnly_MapServer web客户端。CompressionQuality -数字标量(XML int)缓存图像压缩质量。抗锯齿- string参见USGSImageryOnly_MapServer。
MATLAB在帮助浏览器中打开文档。格式信息为CacheTileFormat
。
创建JPEG数据。下面的代码需要了解JPEG图像格式和USGS服务器使用的平铺方案。
%获取默认映射名称。defaultMapName = GetDefaultMapName(wsdl);%获取地图计数。count = GetMapCount(wsdl);%获取地图名称。只有一个地图(计数值),%,但索引是从零开始的。mapName = GetMapName(wsdl, count-1);获取有关磁贴的信息。tileImageInfo = GetTileImageInfo(wsdl, mapName);%获取数据的格式。format = tileImageInfo.CacheTileFormat;由于格式被指定为“混合”,这意味着GetMapTile的结果是一个jpeg编码的流。%地图块按最低级别组织为%的细节和瓷砖使用的最低水平%从零开始的索引。Level = 0;Row = 0;Col = 0;jpeg = GetMapTile(wsdl,mapName,level,row,col,format);
将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)