SuperMap iClient如何使用WMTS地图服务

什么是WMTS服务

WMTS,切片地图Web服务(Web Map Tile Service)当前版本是1.0.0。该服务符合 OGC(Open Geospatial Consortium,开放地理信息联盟)制定的 WMTS 实现规范。

WMTS 是 OGC 提出的缓存技术标准,即在服务器端缓存被切割成一定大小瓦片的地图,对客户端只提供这些预先定义好的单个瓦片的服务,将更多的数据处理操作如图层叠加等放在客户端,从而缓解 GIS 服务器端数据处理的压力,改善用户体验。

如何使用WMTS地图服务

  本文将对iServer的WMTS服务, 天地图的WMTS服务, ArcGIS的WMTS服务进行剖析

1.针对iServer发布的WMTS服务

  针对iServer Java 6R发布的WMTS,我们在使用iClinet对接时,需要注意以下几个参数,这里我用iClinet for JavaScript代码作为示范:

layer = new SuperMap.Layer.WMTS({name: "World",

url: http://localhost:8090/iserver/services/map-world/wmts100   //WMTS服务地址

layer: "World",  //图层名称

style: "default",  //图层样式

matrixSet: "GlobalCRS84Scale_World",  //发布的标识符矩阵集

format: "image/png", //图像的MIME类型,默认为 "image/png"

resolutions:resolutions, //地图分辨率

opacity: 1,

requestEncoding:"KVP"}); //请求编码 ,一般默认都是KVP

综合上面红色字体的部分,我们可以得出,如果是iServer发布的地图,除地图url外,我们需要获取以上5个属性,那么究竟如何获取这5个属性呢? 

获取方法:

  1. 首先,启动iServer6R

  2. 其次浏览器中输入: http://localhost:8090/iserver/services/map-world/wmts100 然后回车

  3. 搜索Contents节点,我们可以获取所需4个属性

<Contents>

<Layer>

<ows:Title>World</ows:Title>

<ows:Identifier>World</ows:Identifier>

<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">

<ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>

<ows:UpperCorner>180.0 90.0</ows:UpperCorner>

</ows:WGS84BoundingBox>

<ows:BoundingBox crs="urn:ogc:def:crs:EPSG::3857">

<ows:LowerCorner>-2.0037508342789244E7 -2.0037508342789236E7</ows:LowerCorner>

<ows:UpperCorner>2.0037508342789244E7 2.0037508342789244E7</ows:UpperCorner>

</ows:BoundingBox>

<Style isDefault="true">

<ows:Identifier>default</ows:Identifier>

</Style>

<Format>image/png</Format>

<TileMatrixSetLink>

<TileMatrixSet>Custom_World</TileMatrixSet>

</TileMatrixSetLink>

<TileMatrixSetLink>

<TileMatrixSet>GlobalCRS84Scale_World</TileMatrixSet>

</TileMatrixSetLink>

<TileMatrixSetLink>

<TileMatrixSet>GoogleMapsCompatible_World</TileMatrixSet>

</TileMatrixSetLink>

<ResourceURL format="image/png"

resourceType="tile" template="http://localhost:8090/iserver/services/map-world/wmts100/

World/default/Custom_World/{TileMatrix}/{TileRow}/{TileCol}.png"/>

<ResourceURL format="image/png"

resourceType="tile" template="http://localhost:8090/iserver/services/map-world/wmts100/

World/default/GlobalCRS84Scale_World/{TileMatrix}/{TileRow}/{TileCol}.png"/>

<ResourceURL format="image/png"

resourceType="tile" template="http://localhost:8090/iserver/services/map-world/wmts100/

\World/default/GoogleMapsCompatible_World/{TileMatrix}/{TileRow}/{TileCol}.png"/>

</Layer>

从高亮的部分,可以得出以下对应情况

WMTS服务参数

iClinet for JavaScript代码

<ows:Title>World</ows:Title>

layer: "World"

<ows:Identifier>default</ows:Identifier>

style: "default"

<TileMatrixSet>GlobalCRS84Scale_World</TileMatrixSet>

matrixSet: "GlobalCRS84Scale_World"

format="image/png"

format: "image/png"

4. 最后在根据自己地图,计算当前图层的分辨率数组信息.如本范例分辨率数组是:

var resolutions = [1.25764139776733,0.628820698883665,0.251528279553466,

0.125764139776733,0.0628820698883665,0.0251528279553466,

0.0125764139776733,0.00628820698883665,0.00251528279553466,

0.00125764139776733,0.000628820698883665,0.000251528279553466,

0.000125764139776733,0.0000628820698883665,0.0000251528279553466,

0.0000125764139776733, 0.00000628820698883665,0.00000251528279553466,

0.00000125764139776733,0.000000628820698883665,0.000000251528279553466];

最终效果图:

    

2.针对天地图官网发布的WMTS服务

  针对天地图官网发布的WMTS服务,我们在使用iClinet对接时,需要注意以下几个参数,这里我用iClinet for JavaScript代码作为示范:

  1. 天地图官网公布的WMTS服务地址,请查看http://www.tianditu.cn/guide/index.html

    

  2. 我选取http://t0.tianditu.com/vec_c/wmts为服务地址, 搜索Contents节点,获取4个重要信息:

<Contents>

<Layer>

<ows:Title>cva</ows:Title>

<ows:Abstract>cva</ows:Abstract>

<ows:Identifier>cva</ows:Identifier>

<ows:WGS84BoundingBox>

<ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>

<ows:UpperCorner>180.0 90.0</ows:UpperCorner>

</ows:WGS84BoundingBox>

<ows:BoundingBox>

<ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>

<ows:UpperCorner>180.0 90.0</ows:UpperCorner>

</ows:BoundingBox>

<Style>

<ows:Identifier>default</ows:Identifier>

</Style>

<Format>tiles</Format>

<TileMatrixSetLink>

<TileMatrixSet>c</TileMatrixSet>

</TileMatrixSetLink>

</Layer>

<TileMatrixSet>

<ows:Identifier>c</ows:Identifier>

<ows:SupportedCRS>urn:ogc:def:crs:EPSG::4490</ows:SupportedCRS>

  

从高亮的部分,可以得出以下对应情况

天地图官网WMTS服务参数

iClinet for JavaScript代码

<ows:Title>cva</ows:Title>

layer: "vec"

<ows:Identifier>default</ows:Identifier>

style: "default"

<TileMatrixSet>c</TileMatrixSet>

matrixSet: "c"

<Format>tiles</Format>

format: "tiles"

由于此天地图官网提供的WMTS服务,为全球经纬度范围(东西经±180度,南北纬±90度),则不需要设置原点和全副范围.

  那么在iClinet for JavaScript代码中可以这样写:

layer = new SuperMap.Layer.WMTS({name: "vec",

url: "http://t0.tianditu.com/vec_c/wmts",

layer: "vec",

style: "default",

matrixSet: "c",

format: "tiles",

opacity: 1,

requestEncoding:"KVP"});

  最终效果图:

      

   当然如果再叠加一幅中文标记wmts地图(该步骤同上述步骤相似,请开发人员自己尝试),最终效果:

        

3.针对ArcGIS发布的WMTS服务

  针对ArcGIS发布的WMTS,我们在使用iClinet对接时,需要注意以下几个参数,这里我用iClinet for JavaScript代码作为示范:

     1. 使用ArcGIS发布地图服务,切缓存 (此步骤略) 出图正常

     

  

    2. 得到ArcGIS的WMTS服务地址, (http://localhost:6080/arcgis/rest/services/china/MapServer/wmts)搜索Contents节点,获取6个重要信息:

<Contents>

<!-- Layer -->

<Layer>

<ows:Title>china</ows:Title>

<ows:Identifier>china</ows:Identifier>

<ows:BoundingBox crs="urn:ogc:def:crs:EPSG::0">

<ows:LowerCorner>73.62004852294922 3.8537260781998635</ows:LowerCorner>

<ows:UpperCorner>134.76846313476562 53.553741455078125</ows:UpperCorner>

</ows:BoundingBox>

<ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">

<ows:LowerCorner>73.62004852294922 3.8537260781998635</ows:LowerCorner>

<ows:UpperCorner>134.76846313476562 53.553741455078125</ows:UpperCorner>

</ows:WGS84BoundingBox>

<Style isDefault="true">

<ows:Title>Default Style</ows:Title>

<ows:Identifier>default</ows:Identifier>

</Style>

<Format>image/png</Format>

<TileMatrixSetLink>

<TileMatrixSet>default028mm</TileMatrixSet>

</TileMatrixSetLink>

<TileMatrixSetLink>

<TileMatrixSet>nativeTileMatrixSet</TileMatrixSet>

</TileMatrixSetLink>

<ResourceURL

format="image/png"

resourceType="tile" template="http://localhost:6080/arcgis/rest/services/china/MapServer/WMTS

/tile/1.0.0/china/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png"/>

</Layer>

以及矩阵原点属性

<TileMatrix>

<ows:Identifier>0</ows:Identifier>

<ScaleDenominator>6.047619047619047E7</ScaleDenominator>

<TopLeftCorner>-400.0 400.0</TopLeftCorner>

<TileWidth>256</TileWidth>

<TileHeight>256</TileHeight>

<MatrixWidth>2</MatrixWidth>

<MatrixHeight>3</MatrixHeight>

  从高亮的部分,可以得出以下对应情况

ArcGIS WMTS服务参数

iClinet for JavaScript代码

<ows:Title>china</ows:Title>

layer: "china"

<ows:Identifier>default</ows:Identifier>

style: "default"

<TileMatrixSet>default028mm</TileMatrixSet>

matrixSet: "default028mm"

<Format>image/png</Format>

format: "image/png"

<ows:LowerCorner>73.62004852294922 3.8537260781998635</ows:LowerCorner>

<ows:UpperCorner>134.76846313476562 53.553741455078125</ows:UpperCorner>

tileFullExtent: new SuperMap.Bounds(

73.62004852294922,

3.8537260781998635,

134.76846313476562,

53.553741455078125)

<TopLeftCorner>-400.0 400.0</TopLeftCorner>

tileOrigin:new SuperMap.LonLat(-400,400)

  3. 获取ArcGIS所切图层的分辨率,访问地图rest服务(http://localhost:6080/arcgis/rest/services/china/MapServer )我们可以获取resolutions

              

  那么在iClinet for JavaScript中完整代码可以这样写

var resolutions = [0.15228550437351568,0.07614275218675784,0.03807137609337892,0.01903568804668946,0.00951784402334473]; //分辨率

var maxExtent = new SuperMap.Bounds(73.62004852294922,3.8537260781998635,134.76846313476562,53.553741455078125); //全副范围

layer = new SuperMap.Layer.WMTS({name: "china",

url: "http://localhost:6080/arcgis/rest/services/china/MapServer/wmts"

layer: "china",

style: "default",

matrixSet: "default028mm",

format: "image/png",

resolutions:resolutions,

opacity: 1,

tileFullExtent:maxExtent,     //瓦片设置的最大范围

tileOrigin:new SuperMap.LonLat(-400,400),   //瓦片矩阵左上角

requestEncoding:"KVP"

});

 最终效果图:

        

    

    注意:在对接ArcGIS wmts服务时:

      1. 需要设置瓦片设置的最大范围(全副范围)

      2. 需要设置瓦片矩阵左上角 (如果不出图,有时候需要根据请求瓦片行列号,微调这个值)

      3. 需要设置分辨率

    (转贴请注明出处:http://www.cnblogs.com/zhangyongli2011/    如发现有错,请留言 谢谢)

SuperMap iClient如何使用WMTS地图服务的更多相关文章

  1. SuperMap iClient 如何使用 WMTS 地图服务(转载)

    原文链接: WMTS服务初步理解与读取 https://blog.csdn.net/supermapsupport/article/details/76806670 SuperMap iClient ...

  2. SuperMap iClient如何使用WMTS地图服务(转)

    http://blog.sina.com.cn/s/blog_6259ebd50102v221.html 什么是WMTS服务 WMTS,切片地图Web服务(Web Map Tile Service)当 ...

  3. SuperMap iClient如何使用WMS地图服务

    什么是WMS服务 WMS(Web Map Service,Web 地图服务)服务,该服务符合 OGC(Open Geospatial Consortium,开放地理信息联盟)制定的 WMS 实现规范. ...

  4. SuperMap iClient for JavaScript 新手入门

    地理信息系统(英语:Geographic Information System,缩写:GIS)是一门综合性学科,结合地理学与地图学,已经广泛的应用在不同的领域,是用于输入.存储.查询.分析和显示地理数 ...

  5. SuperMap iClient 7C——网络客户端GIS开发平台 产品新特性

    SuperMap iClient 7C是空间信息和服务的可视化交互开发平台,是SuperMap服务器系列产品的统一客户端.产品基于统一的架构体系,面向Web端和移动端提供了多种类型的SDK开发包,帮助 ...

  6. SuperMap iClient

    SuperMap iClient 7C——网络客户端GIS开发平台 产品新特性   SuperMap iClient 7C是空间信息和服务的可视化交互开发平台,是SuperMap服务器系列产品的统一客 ...

  7. Skyline中加载WMTS地图

    Skyline中默认是Bing地图,必应虽然免费无偏移,但在国内的影像质量并不是很好.不用担心,Skyline支持多种影像图层,包括WFS.WMS.WMTS地图服务.使用地图作为底图有两个好处: (1 ...

  8. 不偏移的天地图地图服务-SuperMap版

    在<不偏移的天地图地图服务-ArcGIS版>中,提供了相应的服务地址:而SuperMap中,则是将纠偏的方法集成到程序中,只需要修改一个配置参数,则可以实现天地图的纠偏. 打开Web型数据 ...

  9. 常见地图服务(WMS、WFS、WCS、TMS、WMTS

    1.网络地图服务(WMS) 网络地图服务(WMS)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.能够根据用户的请求返回相应的地图(包括PNG,GIF,JPEG等栅格形式或 ...

随机推荐

  1. Spring和依赖注入的价值

    javaeye上看到有帖子,置疑spring和依赖注入的价值,回复内容整理如下: 依赖注入对设计有利,而spring则促进了依赖注入的使用. 如果业务处理类,它所使用的倚赖,都是依靠在这个类内部实现或 ...

  2. 【Kruskal】舒适的路线

    [codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,… ...

  3. (转)Hadoop系列-IPC模型

    学习笔记Mark IPC 实现RPC的一种方法,具有快速.简单的特点. 它不像Sun公司提供的标准RPC包,基于Java序列化. IPC无需创建网络stubs和skeletons. IPC中的方法调用 ...

  4. CentOS中如何安装7ZIP

    7-zip以高压缩率著称,并且是一款免费开源的压缩软件.在常规的Linux发行版中,无法通过简单的yum命令来安装该软件.那么在CentOS中,如何安装7ZIP呢?有以下3种方法: 第一种,源码编译安 ...

  5. DockManager

    Devexpress----DockManager类似VS左右上下浮动栏停靠DockManager->Customize->DockPanel->NEW->Text='详细': ...

  6. ARM体系下的GCC内联汇编

    转:http://andyhuzhill.github.io/arm/gcc/asm/2012/09/25/gcc-inline-assemly/ 在操作系统级的编程中,有时候,C语言并不能完全的使用 ...

  7. 改变element-ui滚动条设置,

    基于vue的滚动条组件之--element隐藏组件滚动条scrollbar使用 在项目中,总是需要用到滚动条,但windows浏览器默认的滚动条是很丑的,为了页面美观,可以考虑优化滚动条样式.  vu ...

  8. XMPP资源绑定(Resource Binding)与单台设备登录控制

    原文:http://blog.csdn.net/brasbug/article/details/26353511 一个XMPP的账号由三部分组成: 用户名(user/node),域名(domain)和 ...

  9. [java] 模拟QPS

    在WEB服务器端,每日的访问量巨大.在非生产环境需要对服务器进行压力测试,一般使用后台线程和Sleep方式来模拟线上的压力.这里使用ScheduledExecutorService实现一种简单的QPS ...

  10. javascript正则中ASCII与unicode

    正则表达式中允许直接利用ASCII和Unicode编码来查找我们相应的字符串. ASCII: 下面是检索ASCII编码在x41-x7a范围内的所有匹配的字符串.(x41,x7a为十六进制) var s ...