zoukankan      html  css  js  c++  java
  • 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的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位置,然后去拿图中地址

    如图:

     

    注意是第一个链接地址。

    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解析。

    扫码关注公众号

    pygis,培养思维,分析实践
  • 相关阅读:
    php魔术常量,_CLASS_,_METHOD_,_FUNCTION_
    php里parent,::和self的分别
    rewrite例子集合
    PHP中::、->;、self、$this操作符的区别
    php中const和define的区别
    aliyun二级域名绑定
    数组操作函数8
    http 301 和 302的区别
    lnmp引发的fpm502错误!
    关于php下开发的跨域问题总结(全)
  • 原文地址:https://www.cnblogs.com/pygisxss/p/14988224.html
Copyright © 2011-2022 走看看