當前在網絡地圖服務中,大部分都會采取緩存技術來替代實時對數據進行可視化,用以提高地圖響應能力。本期五分鍾學GIS就給大家介紹OGC提出的緩存技術標准的WMTS服務。
WMTS簡介
WMTS,切片地圖Web服務(OpenGIS Web Map Tile Service),提供了一種采用預定義圖塊方法發布數字地圖服務的標准化解決方案。WMTS標准定義了一些操作,這些操作允許用戶訪問切片地圖。
WMTS服務是OGC提出的公開標准的服務對接的格式,而且它還是WMS服務的改進版,因而越來越多的GIS項目采用WMTS服務作為底圖服務,比如現在經常在項目中見到的用天地圖作為底圖服務的,就是對接天地圖的WMTS服務。
WMTS和WMS的區別
WMTS服務和WMS服務對客戶端請求服務的響應不同,比如在接受客戶端請求WMTS服務時,返回給客戶端是固定大小的瓦片,客戶端根據索引號來獲取每一張瓦片,而后拼接成地圖進行展示,如圖1所示;由於瓦片的規則是固定的,服務端可以預先緩存對應的瓦片,客戶端需要時直接返回即可,因而WMTS是可緩存的。
而當客戶端請求WMS服務時,返回給客戶端是一張完整的圖片,客戶端取到直接展示,如圖2所示;客戶端可以請求任意區域,正由於這個任意性和服務端只能返回一張指定范圍的圖片,復用的概率低之又低,當並發增大,服務端性能就隨之大大下降,故WMS僅是重在靈活性。
互聯網時代重在效率,對比於靈活性,大家更喜歡選用可緩存的性能更優的WMTS服務。
WMTS切片原理
WMTS規定使用瓦片矩陣集(Tile Matrix Set)來表示切割后的地圖,如圖1所示,不同瓦片矩陣具有不同的比例尺(分辨率),每個瓦片矩陣由瓦片矩陣標識符(一般為瓦片矩陣的序號,分辨率最低的一層為第0層,依次向上排)進行標識。
瓦片矩陣中的每個瓦片由瓦片的行列號來標識,行列號分別從瓦片矩陣左上角點所在的瓦片開始算起,起始行列值是(0,0),依次向下向右增加,如圖2所示,也就是取瓦片的索引號。
WMTS服務提供者只要遵循OGC標准的WMTS規范即可發布WMTS服務,但為了提高服務兼容性,WMTS還提出知名比例尺集(Well-known scale set)的概念,它是一個坐標參照系統和若干比例尺集合構成的眾所周知的組合,常見的知名比例尺集有GlobalCRS84Scale、GlobalCRS84Pixel、GoogleCRS84Quad以及GoogleMapsCompatible。
SuperMap iServer提供了發布WMTS服務的能力,並符合OGC(Open Geospatial Consortium,開放地理信息聯盟)制定的WMTS實現規范。
WMTS的讀取
WMTS 1.0.0規范支持以HTTP KVP(Key-Value Pair)方式、SOAP 方式和REST 方式發布WMTS服務。下面以HTTTP KVP方式為例,介紹WMTS服務包含的三個操作,通過這三個操作可以實現對WMTS服務的讀取。
1. GetCapabilities操作,獲取服務的元信息;
2. GetTile操作,獲取切片;
3. GetFeatureInfo操作,獲取點選的要素信息。
在三個操作中,首先可以通過GetCapabilities操作獲取一個Capabilities文檔,能力文檔是xml結構形式,文檔描述了服務中可用的資源以及對接該服務的必備條件,以下這幾個節點信息是從能力文件中需要獲取的對接WMTS服務的關鍵參數。
在文檔中,Contents節點描述了該服務器發布的WMTS服務的信息,了解Contents子集中layer(該服務器上一個頂層數據集的元數據)和TileMatrixSet(關於地圖切塊幾何規則的說明)的結構可以幫助使用者准確獲取相應的數據。
SuperMap對WMTS服務支持的方式
SuperMap iServer支持發布WMTS 1.0.0標准的服務,同時提供一個兼容《地理信息公共服務平台電子地圖數據規范》中地圖分級標准的服務。SuperMap iClient for JavaScript提供了對接WMTS服務的接口,下一期將給大家詳細闡述客戶端如何對接WMTS服務。