文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/。html
在GIS領域,金字塔技術一直是一個基礎性技術,WMTS規範專門制定了針對切片請求的格式。利用這種技術,前端能夠快速展現出指定級別的地圖或影像。前端
可是,因爲切圖自己是一張圖片,圖片上看似是興趣點的要素根本沒法進行前端交互。因而,針對興趣點等矢量數據的展現,基本原理都是先獲取到矢量的地理信息(好比GeoJson),在前端繪製(內核爲一個element),因而該element便能進行鼠標響應等交互了。python
根據須要,每次向服務器(好比根據地理範圍、屬性信息)進行請求,將請求返回的數據繪製在前端。算法
優勢是,按需請求,數據返回量有限,單個請求效率較高。json
缺點是,頻繁和服務器交互,在給服務器形成巨大壓力的同時,多個請求,甚至某些重複請求,都會增大前端交互耗時,下降用戶體驗。canvas
隨着前端技術愈來愈成熟,電腦內存愈來愈大,RIA技術對矢量數據的展現作了更多的優化,其中一種經常使用方式就是矢量數據一次請求,按需展現方式。後端
好比如下使用LeafLet開發的例子:http://demo.qunee.com/map/LeafLet+MapABC.html緩存
查看後端請求:服務器
能夠看見,在頁面初始化時就將全部矢量信息讀取到前端,而後根據需求進行分級別聚類展現。微信
優勢是:減小與服務端的交互,下降服務端的壓力,提升用戶體驗。
缺點是:第一次請求返回的數據量過大,網絡耗時較多,服務器在迎接第一次請求時也有至關壓力,而且對客戶端電腦配置有必定的依賴。
何爲矢量切圖呢?說直白點,就是將矢量數據以創建金字塔的方式,切割成一個一個描述性文件,好比以GeoJson格式組織或者以自定義格式組織。
這是一份矢量數據切圖完後的截圖:
文件中具體內容爲geojson格式組織:
在最近召開的esri大會上公佈的esri的一個新的亮點即是他們的arcgispro產品在支持遙感數據處理、三維高效展現外,着重強調了對矢量切圖的支持。可是,目前該產品爲beta版。
早前接觸過蘇州超擎公司,對方的產品也能支持矢量切圖,而且在此基礎上,對方還支持影像數據不切圖壓縮爲流方式前端實時展現。
目前支持矢量切圖的開源軟件,在網上你們比較推崇的是TileStache工具,安裝這個工具比較耗費精力,如下均是該工具須要依賴的其餘軟件環境:
簡單點說,須要配置好GDAL環境,python環境,均配置好後纔可以使用。而且目前只測試了在win7上運行,在win8上便不能夠。
目前支持矢量瓦片展現的前端有leaflet,openlayers,arcgis js4.0。
展現例子地址爲:http://basemapsbeta.arcgis.com/preview/app/index.html
其支持的矢量瓦片格式爲知足Mapbox圖片存儲的格式(https://www.mapbox.com/)。
展現例子地址爲:http://basemapsbeta.arcgis.com/preview/app/index.html
這裏支持的是GeoJson格式的矢量瓦片。
a.矢量切圖工具只能切WGS84座標系下的矢量圖層。
b.leaflet只能加載顯示能夠轉換爲WGS84座標系的矢量瓦片數據。
繼承已有GIS框架中的canvastilelayer,利用開源的pbf解析庫,重寫gettile並解析重繪。擺脫leaflet對矢量瓦片座標系的限制。利用該方式,矢量瓦片爲任何座標系均能支持。
將讀取過的矢量瓦片以必定的緩存機制緩存至內存中,使用緩存調度算法進行調度。
a.根據範圍查詢展現矢量數據時,能夠徹底使用矢量切圖。
b.根據範圍和屬性展現矢量數據時,能夠先根據範圍返回數據,在前端根據屬性數據進行過濾,最後展現。
開源矢量切圖工具目前只能切WGS84的矢量數據,將任何格式數據轉換成WGS84的數據是不現實的。針對這種問題,本身開發矢量切圖工具不失爲一種選擇。開發能夠支持點數據的矢量切圖工具難度不大,可是開發可以支持線和麪數據的矢量切圖工具則存在不小的難度。後續還需繼續研究。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^