温馨提示:觉得码字太多,看不下去的,可以直接从后往前看。

一、WMTS服务加载方式

第一种是根据request=getcapabilitites的方式读取xml文件来加载文件中包含的服务。根据需要再进行指定图层,比如:http://localhost:8080/geoserver/gwc/service/wmts?SERVICE=wmts&REQUEST=getcapabilities&VERSION=1.0.0。不同的服务提供者会有不同的提供方式,但是都是以xml的形式汇总了相应的服务图层。下面列举几个常见的在线服务地址:

1、 openlayers:https://openlayers.org/en/latest/examples/data/WMTSCapabilities.xml2、mapbox提供的第三方访问方式:https://api.mapbox.com/styles/v1/dengzengjian/cjmhvbjkc3n1m2sp7kksazvy1/wmts?access_token=YOUR_TOKEN3、 geoserver:http://localhost:8080/geoserver/gwc/service/wmts?SERVICE=wmts&REQUEST=getcapabilities&VERSION=1.0.0

第二种是根据图层对应的ResourceURL来进行单个图层的加载。打开相应的wmts服务能力的文件或者界面,再查询需要的图层名,就能找到加载该图层的地址。比如打开geoserver的地址可以看到如下图的内容。

图1  geoserver的wmts能力描述题

其中ResouceURL中便是单个图层加载的wmts地址。

以上两种方式中第一种,在常见的客户端软件中比较多,比如arcgis,QGIS等相关桌面端GIS软件,都是通过这种方式来加载的,这种方式能简便很多,读取一次便能获取多个图层的信息。第二种就只能是单个图层的加载。目前BS开发的系统中,比较常见的是第二种方式,根据需要也可以使用第一种方式。cesiumjs同一个api支持两种方式的加载。openlayers针对两种加载方式有一定的区别,可以查看相关的官方demo。

二、常见的wmts服务能力地址获取

上面描述了两种加载方式,我们知道不管是以哪一种方式来加载,我们都需要找到各自的wmts服务能力的xml内容。那么下面介绍几种wmts的能力文件的获取方式。

1、geoserver服务地址查询方式:在主页的右边能看到相关的服务能力列表,点击wmts即可查看当前所有的wmts 服务内容,

  图2  geoserver查找参考

2、mapbox的获取方式:在studio 编辑完自定义风格地图后点击分享,即可得到如下界面,如图中所示进行复制相应地址便是wmts的能力配置文件capabiltuies的.xml数据

图3 mapbox的wmts能力描述查找

3、openlayer提供的wmts地图服务地址:在openlayers新版本中example中wmts capability的例子中能看到他们官方的wmts服务地址。经过调试找到他的完整地址是:

https://openlayers.org/en/latest/examples/data/WMTSCapabilities.xml

图4 openlayers的wmts能力描述查找

4、天地图的wmts地址:通过访问天地图官网地图API能看到示例中有元数据的地址以及瓦片请求地址示例。我们可以看到元数据和请求示例地址提供的链接

https://t1.tianditu.gov.cn/img_w/wmts?request=GetCapabilities&service=wmts
http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={x}&TILECOL={y}&tk=您的密钥

注意:这里提供的是img_w图层的请求方式,那么如何请求其他的图层呢??

根据元数据的链接内容可知,这只是img_w图层的wmts元数据,所以根据这里面的内容只能加载img_w的服务。

我们可以看到链接地址和图中列表中的请求路径服务地址,只有一处不一致,那里就是图层的名称。我们只需要将元数据链接中img_w换成我们需要加载的图层名就能获取wmts的相关信息。

同理在请求链接中,将img_w换成所需图层名,并将请求参数中的LAYER、STYLE、TILEMATRIXSET按照元数据中的内容进行修改即可。

比如cva_w图层则请求链接为:http://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={x}&TILECOL={y}&tk=您的密钥

图5 天地图的wmts能力描述查找

三、加载示例

参考上面的内容,我们可以分别找到需要加载图层的wmts服务能力描述。用代码加载就很简单了,毕竟只要按照标准来设置便不会错。分别找出wmts服务能力内容,图6为mapbox,图1为geoserver、天地图参考图5及上述内容进行修改即可。

图6 mapbox的wmts描述

以cesiumjs加载为例,分别加载mapbox、tdt和geoserver的wmts。前面两个只支持以第二种加载方式,geoserver的服务通过调整,同时支持采用两种方式加载。


const wmts = "http://localhost:8080/geoserver/gwc/service/wmts?SERVICE=wmts&VERSION=1.0.0";const wmts_geoserver ="http://localhost:8080/geoserver/gwc/service/wmts/rest/cite:shenzhen_16/{style}/{TileMatrixSet}/{TileMatrixSet}:{TileMatrix}/{TileRow}/{TileCol}?format=image/png"
const mapbox_wmts='https://api.mapbox.com/styles/v1/dengzengjian/cjmhvbjkc3n1m2sp7kksazvy1/tiles/{TileMatrix}/{TileCol}/{TileRow}?access_token=YOUR_TOKEN“
const tdt_img ="http://t{s}.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=YOUR_TOKEN"//加载mapboxde wmts服务
let layer_mb =new Cesium.WebMapTileServiceImageryProvider({url: this.global.mapbox_wmts,layer: "dzj",style: "default",format: "image/png",tileMatrixSetID: "GoogleMapsCompatible",//wmts})this.viewer.imageryLayers.addImageryProvider(layer_mb)//tdt
let tdtlayer =new Cesium.WebMapTileServiceImageryProvider({//天地图影像底图url: this.global.tdt_img,subdomains: [0,1,2,3,4,5,6,7],layer: "tdtImgLayer",//只要有值就行url 中已经有了,图层名错误,不影响加载})
this.viewer.imageryLayers.addImageryProvider(tdtlayer)//geoserver
//添加geoserver wmts 使用第二种方式加载   url进行了修改为默认方式let layer =new Cesium.WebMapTileServiceImageryProvider({//shenzhen geoserver影像底图url: this.global.wmts_geoserver,layer: "cite:shenzhen_17",style: "raster",format: "image/png",tileMatrixSetID: "EPSG:900913",//geoserver中的配置})this.viewer.imageryLayers.addImageryProvider(layer)// 使用第一种方式加载geoserver 的wmts
//添加geoserver wmtslet layer =new Cesium.WebMapTileServiceImageryProvider({//shenzhen geoserver影像底图url: this.global.wmts,layer: "cite:shenzhen_17",style: "raster",format: "image/png",tileMatrixSetID: "3857",//geoserver中的配置})this.viewer.imageryLayers.addImageryProvider(layer)

tips:geoserver中wmts切片网格默认的tilemartix是由{tilematrixset:tilematrix}组成的,跟一般的tilematrix 不太一样,因此在采用第二种方式加载geoserver的wmts 时需要修改martrix为tilematrixset:tilematrix,具体查看代码中url。图7中也能看到绿色框内的默认值。

一般martrix是以数字来做层级表示的,api中加载默认的matrix也是默认为纯数字,因此在geoserver中修改tilematrix的值为数字,就能跟常见的wmts一样请求。比如我新增的3857格网就改为了数字的方式表示matrix。

图中的绿色就是默认的表达方式,3857是修改后的表达方式。只要将其修改后,就不要修改url中的tilematrix。

图 7 geoserver修改前后内容

觉得有用的话,扫描下面二维码,关注我,及时获取更多干货!!!!

一文搞清各种来源的wmts服务加载,告别ctrl+c,v相关推荐

  1. Openlayers与GeoServer:跨域配置与WMS服务加载

    跨域配置与WMS服务加载 下载与安装 访问GeoSever主页 发布WMS网络地图服务 DataV下载GeoJSON边界数据 QGIS制作Shapefile数据源和Style样式文件 GeoServe ...

  2. 一文分析 mp4对比m3u8 第一帧加载慢的原因

    工作室正在做的软件,是一个以长视频播放为主的Android与IOS 手机软件. 最近半年,老板要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数).失败率 (播放失败的次数 / 播放总数) 等 ...

  3. 一文了解 Java 中 so 文件的加载原理

    前言 无论是 Android 开发者还是 Java 工程师应该都有使用过 JNI 开发,但对于 JVM 如何加载 so.Android 系统如何加载 so,可能鲜有时间了解. 本文通过代码.流程解释, ...

  4. mapTalks:基础操作与WMS/WMTS地图服务加载

    maptalks是插件式的轻量级二三维地图渲染库,核心库包含最常用的核心功能,包括底图渲染,矢量渲染,内置的绘图交互工具,测距侧面工具等.出于兼容性考虑,核心库主要基于canvas技术开发的(底图在三 ...

  5. ol+天地图+geoserver_GeoServer的WMS服务加载到天地图

    自己发布的WMS服务(地图数据)如何叠加到天地图中去呢,下面就展示一下. 1.数据准备 首先需要发布一个WMS服务,具体的发布过程就不说了.现有一个WMS服务如下: 点击OpenLayers链接后可以 ...

  6. DevTools 无法加载来源映射:无法加载 chrome-extension: 警告的原因以及如何去除(全网最全 最详细解决方案)

    是类似这样的一个警告.每次都有看着还是挺难受的. 这个警告的原因是你的浏览器插件造成的.例如警告已经很明确的告诉你是chrome-extension,也就是谷歌插件的问题.后面的字符串其实就是这个插件 ...

  7. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...

    1 arcgis加载天地图和wmts服务 arcgis for js加载天地图的例子网上有很多,这里先不写了,后期有空再贴代码,这里主要分析下WMTS服务为什么不显示,怎么解决. 条件:这里的WMTS ...

  8. Arcgis加载WMTS离线地图服务

    ARCGIS搭建离线地图服务器,进行离线地图二次开发 1.     离线地图金字塔瓦片数据  (下载数据教程:http://www.bigemap.com/helps/doc20190312126.h ...

  9. OpenLayers加载不同WMTS服务

    作者:yyy 前言 WMTS,Web地图瓦片服务(Web Map Tile Service)当前版本是1.0.0.WMTS标准定义了一些操作,这些操作允许用户访问瓦片地图.WMTS可能是OGC首个支持 ...

最新文章

  1. MySQL几个特别语法示例
  2. SpringBoot文件上传大小设置(yml中配置)
  3. 韩语识别_韩语文字识别_韩语图片识别 - 云+社区 - 腾讯云
  4. 51nod 1130 N的阶乘的长度 V2(斯特林近似)
  5. python mql4_使用MQL5将OHLC值从Python API集成到MT5
  6. Garbled Circuits介绍 - 3 Yao的混淆电路协议
  7. 【落谷1957】口算练习题题解
  8. win10 mysql 入站规则_WIn10防火墙入站规则设置无效
  9. Spring详解一号IOC京都大火篇
  10. GSL科学计算库——计算高斯-勒让德积分
  11. CUrl 创始人怒怼苹果:靠开源年赚数十亿,却把开发者当免费工具人
  12. 使用 break 语句直接强行退出循环
  13. 数学课本五大奇人【zhuan】
  14. 【微信小程序|组件库】首页功能模块界面
  15. 如何关闭Mysql后台运行
  16. 看看老板叫你造的马,被你“蹧”成什么样了丨极客官舍
  17. Latex插入多张图片及图片图题的间隔位置等问题处理
  18. mysql在GROUP_CONCAT中拼接字符串
  19. Java 适配器模式
  20. 理解__unsafe_unretained

热门文章

  1. 计算机二级信息管理,2021年上半年全国计算机等级考试[信息管理技术]精选模拟试题及答案解析...
  2. Python石头剪刀布游戏简单易懂
  3. 【直击DTCC】从技术到艺术的转身 IBM赋能数据可视化
  4. 深入RocketMQ-消息原理篇
  5. 计算机如何启动及为何MBR的地址为0x7c00
  6. android格式转化,旭日Android视频格式转换器
  7. 都2020年了,你还不知道这些办公神器?!
  8. [转]网络推广经典方法
  9. 西门子200高数计数器读取增量式编码器数值
  10. gradle connect timed out