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

扫码关注公众号
WMTS服务解析的更多相关文章
- 使用C++/libCurl/Jsoncpp读取arcgis wmts 服务(restful模式)
前言: 最近工作需要将arcgis的wmts服务接入我们的3DGis系统平台,要求用户只输入一个rest模式的wmts服务地址,系统即可自动获取并解析其元数据信息,生成wmts图层,并渲染显示.经过多 ...
- 超图不支持JPEG格式的WMTS服务
就目前面而言,超图不支持JPEG格式的WMTS服务,只支持PNG格式的. <本篇完>
- 如何在Skyline中加载ArcGISServer发布的WMS和WMTS服务
如何在Skyline中加载ArcGISServer发布的WMS和WMTS服务? 我这里的测试环境是ArcGISServer10.1和TerraExplorer Pro7.0,主要过程截图如下,
- (二十)ArcGIS JS 加载WMTS服务(超图示例)
前言 在前一篇中说到我们可以通过加载WMS服务解决用ArcGIS API加载超图发布的服务,但是WMS服务在加载效率上是低于切片服务的,加上超图的IServer,无力吐槽,所以,在加载速度的要求下,切 ...
- 【Oracle学习笔记-3】关于Oracle 10g中各种服务解析
[原创]关于oracle 10g中各种服务解析 (2014/10/16 8:39:40) 时间:2014-10-16 8-58-30 作者:ssslinppp 1. 当首次安装oracle 1 ...
- 使用GeoServer+QGIS发布WMTS服务 | Publishing WMTS Service Using GeoServer+QGIS
Web GIS系列: 1.搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 2.使用GeoServer+QGIS发布WMTS服务 3.使 ...
- (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。
1 arcgis加载天地图和wmts服务 arcgis for js加载天地图的例子网上有很多,这里先不写了,后期有空再贴代码,这里主要分析下WMTS服务为什么不显示,怎么解决. 条件:这里的WMTS ...
- 设置代理调用WMTS服务
一.数据准备 1.链接:http://pan.baidu.com/s/1sjzCytR 密码:uugc,下载DotNet版本 2. 发布切片服务,打开ogc服务可产看到相应的符合ogc标准的服务,如下 ...
- 使用C# + httpWebRequest 解析WMTS服务元数据
解析http://219.142.81.86/igserver/ogc/kvp/TAS10R52000J49/WMTSServer服务的元数据 // 测试httpWebRequest读取 wmts元数 ...
随机推荐
- Android SDK:Android standard develop kits 安卓开发的工具集
目前主流的安卓开发工具: 1.Adnroid-Adt-bundle SDK Manager.exe: Tools(安卓的开发小工具) 各种安卓版本 Extras 额外的开发包 在线更新/安装的安卓版本 ...
- typora与picgo搭配gitee的图床使用
关于基础配置,参考下面4篇文章 https://segmentfault.com/a/1190000039358062 https://blog.csdn.net/qq_42827680/articl ...
- mysql表查询、多表查询(增强查询的使用)子查询、合并查询,外连接,mysql5种约束,自增长
一.查询加强 1.在mysql中,日期类型可以直接比较,需要注意格式 2.%:表示0到多个字符, _:表示单个字符 exp:显示第二个字符为大写O的所有员工的姓名和工资 select name fr ...
- 反射(reflection),通过反射创建对象
简单尝试: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public cl ...
- LeetCode随缘刷题之转化成小写字母
这道题应该是最简单的一道题了把,简直在侮辱我. package leetcode.day_12_12; /** * 709. 转换成小写字母 * 给你一个字符串 s ,将该字符串中的大写字母转换成相同 ...
- Scala函数高级篇
一.匿名函数 没有名字的函数就是匿名函数,格式:(x:Int)=>{函数体} x:表示输入参数类型:Int:表示输入参数类型:函数体:表示具体代码逻辑 传递匿名函数至简原则: 参数的类型可以省略 ...
- Spring系列11:@ComponentScan批量注册bean
回顾 在前面的章节,我们介绍了@Comfiguration和@Bean结合AnnotationConfigApplicationContext零xml配置文件使用Spring容器的方式,也介绍了通过& ...
- MySQL数据库初识、下载使用(针对库、表、记录的增删改查)
今日内容概要 数据演变史 数据库软件的本质 MySQL简介 下载与安装 基本配置 基本SQL语句 内容详细 1.数据演变史 # 1.单独的文本文件 没有固定的存放位置和格式 文件名:user.txt ...
- Solution -「UOJ #46」玄学
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\) 和 \(q\) 次操作,操作内容如下: 给出 \(l,r,k,b\),声明一个修改方案,表示 ...
- Python基础—装饰器(Day11)
装饰器 1.装饰器是在不改变原函数的执行的情况下为原函数增额外的功能. 简单版装饰器import time def func1(): print('执行速度') def timmer(f): star ...