WMTS服务解析

 

WMTS服务解析

1、基本思路

拼接地址,请求xml文件

处理获取的xml文件,返回参数

获取xml解析得到的参数,组织结构

2、对应函数

requestWMTS (olUrl)

handleWMTS(xml,fullName)

getWMTSparam(curRecord)

3、操作步骤

①点击【添加服务】

②输入名称、链接、类型

③点击【确定】(解析保存)

4、解析须知

(1)拼接地址结构

添加服务地址:http://你的Geoserver网址/gwc/service/wmts/rest/csdn:CSDNDOM/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png

结构:

Geoserver地址/gwc/service/wmts/rest/切片名/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png

拼接地址结构:

geoserverUrl + "/gwc/service/wmts?service=WMTS&version=1.0.0&request=GetCapabilities"

geoserverUrl即为geoserver服务地址;

service = WMTS即为wmts服务;

version=1.0.0即为geoserver版本,这个可以向下兼容;

request=GetCapability即为获取wmts全部信息;

 

(2)xml节点中冒号:问题

基本解决思路为:

将xml转为字符串,将:替换为规定符号(我用的C,后来直接将ows:替换为ows),再将string转为xml便于解析;

还有一种思路为:将xml转为字符串,使用正则表达式遍历,得到结果;

法一:缺点为若正巧出现关于C的特殊情况(后来直接将ows:替换为ows),需注意,且不建议使用特殊符号,建议使用大写字母。

法二:若熟练使用正则表达式还是建议使用正则表达式,更适合处理一些突发情况,但xml文件中内容很多,可能耗费时间。

(3)关于wmts参数

WMTS服务解析

 

 

存储参数结构

WMTS服务解析

 

 

加载需要参数结构

Wmts的xml文件链接:http://你的geoserver/gwc/service/wmts?service=WMTS&version=1.0.0&request=GetCapabilities

参数注:

Format一般为image/png,但也可能为image/jpeg等,但不影响加载;

Projection的units即为单位一般为度,这个要让他们发布服务时注意;

tilegrid中的extent和origin均用世界的,由于geoserver中openlayers的例子中是用的世界范围,我也用的世界范围,若有天需要范围可在xml文件中中拿到,然后计算中心即可;

tilegrid中的resolution与matrixIds是对应的,且xml文件中只能拿到matrixIds,拿不到resolution,我是将代码中写入了22级resolution,来与matrixIds对应,一般没问题,但他的级别是有30级的,若果真用到了就再把剩下的8级给加上。

5、链接获取

【添加服务】中链接的来源:

①geoserver发布wmts服务

②使用拼接地址拿到xml文件,用wmts名称查找到Layer位置,然后去拿图中地址

如图:

WMTS服务解析 

注意是第一个链接地址。

6、代码细节

其实在代码中完全可以看懂,略显繁琐,可以不看。

①hadleWMTS的maxtrixSet参数即为切片方案的名称,解析过程为拿到中的,之后去找下的对应的内容(即为切片方案名)进行比对,再在上层,拿到对应的级别的chidlren放在数组中。

?

②在现有的geoserver版本下,默认的matrixIds级别模板为crs:1,利用这点,利用split方法拿到坐标系code;百度后发现,大概在geoserver2.0后版本默认的级别模板有所不同。

 

③加载wmts需要的参数,最终组织在名为source的json对象中;像之前的【添加服务】功能是需要获取中心Center和范围Extent的,至于这点代码我也写了,若后期需要请自行取用(需要删改),其中为了不进行弹窗配置,在数据库的remark字段中,将其全部作为raster处理。

 

④获取的wmts的xml文件中有的对应两个切片方案,这个应该是该图层未进行切片处理,也可能是geoserver中设置对应了两个切片方案(应该不是),这点有待考证。

 

⑤还有一个点是,我只将解析的source,return了出来,至于formvalue我不知数据库中将如何组织,便未将名称链接等组织在内,其余暂时已无需要注意的点。

 

注:WMS服务解析类似,掌握WMTS服务解析,极易掌握WMS解析。

WMTS服务解析

扫码关注公众号

WMTS服务解析

上一篇:显存不足造成nan错误


下一篇:LeetCode剑指offer二叉树系列