矢量瓦片化技術在恒歌專業版二維地圖中的應用
在科技水平的高速發展、GIS技術廣泛應用的當下,用戶從美觀、響應速度、渲染效率等方面都對二維地圖提出了全方位考驗。單次處理的數據量增大,矢量數據作為二維地圖的基石,如何解決數據解析渲染過程中出現的問題是個難題。本文將詳細講解恒歌科技采用的矢量瓦片化技術方案。
osgEarth是一個基于OpenSceneGraph (OSG)的開源可擴展地形渲染工具包,支持常見的柵格數據、矢量數據和模型數據加載。恒歌基礎版二維地圖是一款基于osgEarth 開發的基礎二維地圖平臺,地圖數據加載完全采用osgEarth 的加載方式。
在柵格數據的加載方面osgEarth采用柵格瓦片的形式加載,數據的加載速度和渲染效率都比較理想。矢量數據的加載,osgEarth采用的是一次性將整個矢量文件中的全部要素讀取構建為場景節點的方式,對于較小的矢量文件加載與渲染可以高效完成,但是當矢量文件較大時一次性解析所有的矢量要素在場景中進行渲染會導致加載速度慢、內存激增、渲染效率低的問題。
在矢量樣式配置方面基礎版二維地圖只提供了點、線、面的顏色、線寬、字體等基礎配置,難以通過符號化的思想配置出一副精美的矢量地圖。為了解決上述矢量數據加載速度、渲染效率和地圖效果等問題,恒歌科技采用了矢量瓦片技術和全新的樣式配置方式,打造了一款專業版二維地圖。本文將深度解析關鍵技術的實現,包括:矢量數據切片、地圖樣式配置、矢量瓦片加載與渲染。

△ 恒歌專業版二維地圖
1 矢量數據切片
隨著地理信息系統(GIS)技術的不斷發展與完善,地圖服務技術得到快速提高,谷歌地圖、百度地圖、高德地圖、騰訊地圖等在線地圖服務相繼出現,這些服務均采用將矢量數據柵格化分塊處理的方式,利用金字塔模型在服務器端緩存多分辨率的柵格切片數據,通過客戶端發送地圖請求范圍以及服務器端返回請求數據完成網絡傳輸。但是由于柵格切片的本質是圖片,客戶端獲取圖片后無法對原始數據進行編輯分析,地圖的交互式操作能力弱、地理空間分析的能力不足,難以滿足復雜的地理空間信息分析需求。
矢量數據是利用點線面的形式來表達現實世界。矢量數據由給定坐標的點構成,點可以連接成線,線可以連接成多邊形,通過這三種結構來表示任何一種地理特征。矢量數據可用于數據分析和可視化,矢量數據結構緊湊,圖形顯示的質量高,精度準確,但是大量的矢量直接加載就會存在加載慢、渲染效率低的問題,因此誕生了矢量切片的技術。
矢量切片原理是基于四叉樹金字塔模型進行切分,切片后的結果使用高效的結構化數據存儲格式protobuf進行存儲。矢量瓦片是由矢量數據組成的數據塊,包含了渲染所需要的幾何信息,相比傳統的柵格切片具有樣式靈活、高清顯示、方便數據二次投影和數據分析等諸多優點,同時也具備了柵格瓦片的只需要請求當前視野內的數據,具有快速加載和高效渲染的優點。

△ 四叉樹金字塔模型圖
瓦片數據雖然在加載速度和渲染效率上具有很大的優勢,但是大量的瓦片碎文件導致存儲與管理十分不便。FreeXGIS Tiles DataBase(簡稱:TDB)是恒歌科技自主研發的一種文件型數據庫存儲方式,也是一種高效的瓦片數據存儲文件格式,通過將大量的瓦片數據按規則壓縮到一個或多個數據文件中,具有讀寫快、管理便捷、占用空間小等特性。
因此,在專業版二維地圖中,矢量瓦片數據采用TDB的方式進行組織存儲,以減少數據存儲空間和提升數據遷移的速度。
2 地圖樣式配置
隨著GIS行業的不斷發展完善、硬件條件的不斷升級和審美的提升,想要呈現一副客戶滿意的電子地圖,不僅需要高效的響應速度和流暢的渲染效率,也需要合理、豐富、美觀的地圖顯示要素。恒歌專業版二維地圖提供對各類要素進行豐富的樣式配置能力,能夠制作出任意風格的二維地圖。
矢量要素的類型可分為點、線和面,在配置地圖風格的過程中,僅僅配置要素的基礎樣式只能滿足基本的顯示需求,若在地圖縮放過程中對一些要素的樣式加以動態變化,可使地圖顯示更加清晰、生動、美觀。
要素基礎樣式
點要素基礎樣式包括:文字的顏色、透明度、字體、排列方向以及文字避讓,圖標的名稱、顏色、透明度、避讓等。
以下對文字方向、文字避讓、圖標避讓進行簡要說明:文字方向,主要設置文字沿線顯示效果,效果如圖1文字沿線效果所示;文字、圖標避讓主要處理點標繪太密集、造成遮擋、顯示效果雜亂的問題。點標記不同的文字顏色、不同圖標以及避讓的效果如圖2點標記效果所示。
線基礎樣式配置:線的寬度、顏色、線型、透明度,線的貼圖、末端樣式、節點連接樣式等,效果如下圖所示。
△ 線的基礎樣式配置
面基礎樣式配置:面的填充顏色、透明度、填充圖標等樣式,效果如下圖所示。
△ 面的基礎樣式配置
要素動態樣式配置
動態樣式主要處理要素地圖縮放過程中漸變效果,使得渲染出的地圖更加真實,呈現的效果更加精美。比如,道路數據在矢量存儲中基本都以線的形式存儲,但實際中不同的道路寬度是不同的,而且在地圖放大過程中道路呈現的效果應該越來越寬,此時用線的基礎屬性設置就無法達到這種效果。動態樣式配置主要處理線寬漸變、文字大小、點線面顏色和透明度漸變效果。
△ 動態樣式效果
3 矢量瓦片加載與渲染
矢量切片和樣式配置是為最終可即時響應、高效渲染出一副精美地圖做的前置工作。在矢量瓦片數據與樣式文件準備完成后,想要呈現地圖,還有一個更重要的步驟就是矢量瓦片數據的加載與渲染。
OSG是一個開放源碼、跨平臺的圖形開發包,可快速、便捷地創建高性能、跨平臺的交互式圖形程序,完全是由標準C++程序和OpenGL編寫,充分利用STL設計模式,可直接調用顯卡資源,將圖形渲染性能發揮到最好。因此,采取基于OSG來實現矢量瓦片的高性能渲染工作。
實現思路為采用OSG的渲染和數據調度流程,將矢量瓦片數據與配置的樣式解析成OSG的場景節點,渲染出一副專業級的二維地圖。
4 效果案例展示
通過本方案實現的矢量地圖,不管是數據的加載、渲染還是地圖的精美程度都有了質的提升。
性能說明
為了測試專業版二維地圖效率,本文將以1GB、4GB、16GB和40GB的原始矢量數據作為測試數據,數據介紹如表1所示、測試結果如表2所示:
表1 測試地圖數據介紹
表2 地圖效率測試結果
效果展示
矢量瓦片技術加上豐富樣式的配置,實現了大批矢量數據在二維地圖中高效、美觀的展示,效果如下所示:
△ 恒歌專業版二維地圖效果