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

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

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