WMTS服务解析
?
WMTS服務(wù)解析
1、基本思路
拼接地址,請求xml文件
↓
處理獲取的xml文件,返回參數(shù)
↓
獲取xml解析得到的參數(shù),組織結(jié)構(gòu)
2、對應(yīng)函數(shù)
requestWMTS?(olUrl)
↓
handleWMTS(xml,fullName)
↓
getWMTSparam(curRecord)
3、操作步驟
①點(diǎn)擊【添加服務(wù)】
②輸入名稱、鏈接、類型
③點(diǎn)擊【確定】(解析保存)
4、解析須知
(1)拼接地址結(jié)構(gòu)
添加服務(wù)地址:http://你的Geoserver網(wǎng)址/gwc/service/wmts/rest/csdn:CSDNDOM/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png
結(jié)構(gòu):
Geoserver地址/gwc/service/wmts/rest/切片名/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png
拼接地址結(jié)構(gòu):
geoserverUrl + "/gwc/service/wmts?service=WMTS&version=1.0.0&request=GetCapabilities"
geoserverUrl即為geoserver服務(wù)地址;
service = WMTS即為wmts服務(wù);
version=1.0.0即為geoserver版本,這個可以向下兼容;
request=GetCapability即為獲取wmts全部信息;
?
(2)xml節(jié)點(diǎn)中冒號:問題
基本解決思路為:
將xml轉(zhuǎn)為字符串,將:替換為規(guī)定符號(我用的C,后來直接將ows:替換為ows),再將string轉(zhuǎn)為xml便于解析;
還有一種思路為:將xml轉(zhuǎn)為字符串,使用正則表達(dá)式遍歷,得到結(jié)果;
法一:缺點(diǎn)為若正巧出現(xiàn)關(guān)于C的特殊情況(后來直接將ows:替換為ows),需注意,且不建議使用特殊符號,建議使用大寫字母。
法二:若熟練使用正則表達(dá)式還是建議使用正則表達(dá)式,更適合處理一些突發(fā)情況,但xml文件中內(nèi)容很多,可能耗費(fèi)時間。
(3)關(guān)于wmts參數(shù)
?
?
存儲參數(shù)結(jié)構(gòu)
?
?
加載需要參數(shù)結(jié)構(gòu)
Wmts的xml文件鏈接:http://你的geoserver/gwc/service/wmts?service=WMTS&version=1.0.0&request=GetCapabilities
參數(shù)注:
Format一般為image/png,但也可能為image/jpeg等,但不影響加載;
Projection的units即為單位一般為度,這個要讓他們發(fā)布服務(wù)時注意;
tilegrid中的extent和origin均用世界的,由于geoserver中openlayers的例子中是用的世界范圍,我也用的世界范圍,若有天需要范圍可在xml文件中中拿到,然后計算中心即可;
tilegrid中的resolution與matrixIds是對應(yīng)的,且xml文件中只能拿到matrixIds,拿不到resolution,我是將代碼中寫入了22級resolution,來與matrixIds對應(yīng),一般沒問題,但他的級別是有30級的,若果真用到了就再把剩下的8級給加上。
5、鏈接獲取
【添加服務(wù)】中鏈接的來源:
①geoserver發(fā)布wmts服務(wù)
②使用拼接地址拿到xml文件,用wmts名稱查找到Layer位置,然后去拿圖中地址
如圖:
注意是第一個鏈接地址。
6、代碼細(xì)節(jié)
其實(shí)在代碼中完全可以看懂,略顯繁瑣,可以不看。
①hadleWMTS的maxtrixSet參數(shù)即為切片方案的名稱,解析過程為拿到中的,之后去找下的對應(yīng)的內(nèi)容(即為切片方案名)進(jìn)行比對,再在上層,拿到對應(yīng)的級別的chidlren放在數(shù)組中。
?
②在現(xiàn)有的geoserver版本下,默認(rèn)的matrixIds級別模板為crs:1,利用這點(diǎn),利用split方法拿到坐標(biāo)系code;百度后發(fā)現(xiàn),大概在geoserver2.0后版本默認(rèn)的級別模板有所不同。
?
③加載wmts需要的參數(shù),最終組織在名為source的json對象中;像之前的【添加服務(wù)】功能是需要獲取中心Center和范圍Extent的,至于這點(diǎn)代碼我也寫了,若后期需要請自行取用(需要刪改),其中為了不進(jìn)行彈窗配置,在數(shù)據(jù)庫的remark字段中,將其全部作為raster處理。
?
④獲取的wmts的xml文件中有的對應(yīng)兩個切片方案,這個應(yīng)該是該圖層未進(jìn)行切片處理,也可能是geoserver中設(shè)置對應(yīng)了兩個切片方案(應(yīng)該不是),這點(diǎn)有待考證。
?
⑤還有一個點(diǎn)是,我只將解析的source,return了出來,至于formvalue我不知數(shù)據(jù)庫中將如何組織,便未將名稱鏈接等組織在內(nèi),其余暫時已無需要注意的點(diǎn)。
?
注:WMS服務(wù)解析類似,掌握WMTS服務(wù)解析,極易掌握WMS解析。
掃碼關(guān)注公眾號
總結(jié)
- 上一篇: iPhone 如何备份和恢复微信聊天记录
- 下一篇: arping指令即其参数对应的功能