天天看點

WebGIS中矢量切圖的初步研究

在GIS領域,金字塔技術一直是一個基礎性技術,WMTS規範專門制定了針對切片請求的格式。利用這種技術,前端可以快速展示出指定級别的地圖或影像。

但是,由于切圖本身是一張圖檔,圖檔上看似是興趣點的要素根本無法進行前端互動。于是,針對興趣點等矢量資料的展示,基本原理都是先擷取到矢量的地理資訊(比如GeoJson),在前端繪制(核心為一個element),于是該element便能進行滑鼠響應等互動了。

根據需要,每次向伺服器(比如根據地理範圍、屬性資訊)進行請求,将請求傳回的資料繪制在前端。

優點是,按需請求,資料傳回量有限,單個請求效率較高。

缺點是,頻繁和伺服器互動,在給伺服器造成巨大壓力的同時,多個請求,甚至某些重複請求,都會增大前端互動耗時,降低使用者體驗。

随着前端技術越來越成熟,電腦記憶體越來越大,RIA技術對矢量資料的展示做了更多的優化,其中一種常用方式就是矢量資料一次請求,按需展示方式。

WebGIS中矢量切圖的初步研究

檢視後端請求:

WebGIS中矢量切圖的初步研究

可以看見,在頁面初始化時就将所有矢量資訊讀取到前端,然後根據需求進行分級别聚類展示。

優點是:減少與服務端的互動,降低服務端的壓力,提高使用者體驗。

缺點是:第一次請求傳回的資料量過大,網絡耗時較多,伺服器在迎接第一次請求時也有相當壓力,并且對用戶端電腦組態有一定的依賴。

何為矢量切圖呢?說直白點,就是将矢量資料以建立金字塔的方式,切割成一個一個描述性檔案,比如以GeoJson格式組織或者以自定義格式組織。

這是一份矢量資料切圖完後的截圖:

WebGIS中矢量切圖的初步研究

檔案中具體内容為geojson格式組織:

WebGIS中矢量切圖的初步研究

在最近召開的esri大會上公布的esri的一個新的亮點便是他們的arcgispro産品在支援遙感資料處理、三維高效展示外,着重強調了對矢量切圖的支援。但是,目前該産品為beta版。

早前接觸過蘇州超擎公司,對方的産品也能支援矢量切圖,并且在此基礎上,對方還支援影像資料不切圖壓縮為流方式前端實時展示。

目前支援矢量切圖的開源軟體,在網上大家比較推崇的是TileStache工具,安裝這個工具比較耗費精力,以下均是該工具需要依賴的其他軟體環境:

WebGIS中矢量切圖的初步研究

簡單點說,需要配置好GDAL環境,python環境,均配置好後才可使用。并且目前隻測試了在win7上運作,在win8上便不可以。

目前支援矢量瓦片展示的前端有leaflet,openlayers,arcgis js4.0。

WebGIS中矢量切圖的初步研究
WebGIS中矢量切圖的初步研究

其支援的矢量瓦片格式為滿足Mapbox圖檔存儲的格式(https://www.mapbox.com/)。

WebGIS中矢量切圖的初步研究
WebGIS中矢量切圖的初步研究
WebGIS中矢量切圖的初步研究

這裡支援的是GeoJson格式的矢量瓦片。

a.矢量切圖工具隻能切WGS84坐标系下的矢量圖層。

b.leaflet隻能加載顯示可以轉換為WGS84坐标系的矢量瓦片資料。

繼承已有GIS架構中的canvastilelayer,利用開源的pbf解析庫,重寫gettile并解析重繪。擺脫leaflet對矢量瓦片坐标系的限制。利用該方式,矢量瓦片為任何坐标系均能支援。

WebGIS中矢量切圖的初步研究
WebGIS中矢量切圖的初步研究
WebGIS中矢量切圖的初步研究

将讀取過的矢量瓦片以一定的緩存機制緩存至記憶體中,使用緩存排程算法進行排程。

a.根據範圍查詢展示矢量資料時,可以完全使用矢量切圖。

b.根據範圍和屬性展示矢量資料時,可以先根據範圍傳回資料,在前端根據屬性資料進行過濾,最後展示。

開源矢量切圖工具目前隻能切WGS84的矢量資料,将任何格式資料轉換成WGS84的資料是不現實的。針對這種問題,自己開發矢量切圖工具不失為一種選擇。開發可以支援點資料的矢量切圖工具難度不大,但是開發能夠支援線和面資料的矢量切圖工具則存在不小的難度。後續還需繼續研究。

                                                                                                如果您覺得本文确實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                              

WebGIS中矢量切圖的初步研究

繼續閱讀