1. 程式人生 > >向量地圖方案的進一步探討

向量地圖方案的進一步探討

文章版權由作者李曉暉和部落格園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

1. 背景

       在之前多篇文章中我描述瞭如何編寫向量地圖切片工具、如何基於Geoserver來進行向量切片方案。這兩種方案各有侷限:

  1. 向量地圖預切片工具對實時資料的實時更新很難做出及時更新,需人工干預。    
  2. Geoserver切片方案需要依賴於Geoserver地理伺服器。

   這裡,我們可以將方案進一步升級。

2. 整體設計

       需要解決的幾點:

       a.統一向量資料來源,無需針對專案中不同系統採用不同的配圖方案。由於專案中環境複雜,往往涉及老系統、新系統、PC端、移動端。對於老系統並不支援向量切片的解析,難道還要再次對資料配圖,採用arcgis切片?

       b.擺脫Geoserver的束縛,對於已經有arcgis(10.2以前)的環境的專案,難道還要再安裝一個Geoserver?

       c.向量配圖得實現視覺化,難道每次手寫樣式檔案?

       d.即支援切片預處理,也得支援切片的動態更新。

       根據這幾點要求,做了如下設計:

 

       具體描述為:

       a.服務端支援根據PG資料來源生成向量切片。

       b.服務端支援根據PG資料來源和樣式檔案生成圖片切片。

       c.配圖平臺支援分別生成向量切片樣式檔案和圖片切片樣式檔案。

       d.前端根據產品版本,分別傳送對應格式的切片獲取請求。

3. 基於PG的向量切片生成

       9.6以上postgresql+2.4postgis,提供了兩個向量切片的空間函式:ST_AsMVT,ST_AsMVTGeom(mapbox格式),即可生成。但是由於不能保證各專案的PG為此版本以上,這裡採用可以普適的方案,服務端基於pbf開發包(java-vector-tile、protobuf-javanano、protobuf-java)來進行。

 

       a.根據瓦片範圍查詢PG庫獲取要素(wkt)。

       b.對要素解析成geometry格式。

       c.將要素的幾何座標轉換為螢幕座標。

       d.將此時的要素編碼成pbf格式。

       測試結果:

              

4. 基於PG的圖片切片生成

       在開源架構中,通常為:QGIS、UDig做桌面資料處理工具,Geoserver、MapServer是比較常用的地理伺服器,Postgresql+PostGIS作為空間資料庫。但是,隨著地理資料庫PG越來越強大,Geoserver的功能反而在被逐漸弱化。PG可以支援各類空間查詢,空間分析,甚至路徑分析上。而針對切片的生成,PG+Mapnik的方案,也能很好的解決。

       這裡選用python進行程式碼測試:

 

 

       測試樣式檔案,編寫資料來源配置和樣式配置:

 

       測試結果:

 

 

                    -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

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