矢量瓦片地圖的制圖流程與矢量瓦片符號繪制方法分析
引言
隨著OSM地圖、百度地圖、高德地圖等在線地圖服務(wù)迅速普及,地圖已經(jīng)成為人們?nèi)粘I畈豢扇鄙俚目茖W(xué)工具。隨著地圖的移動化應(yīng)用逐步深入,基于柵格瓦片技術(shù)的地圖服務(wù)由于受網(wǎng)絡(luò)帶寬、圖片無法交互以及不支持無級縮放等限制,已難以滿足用戶對地圖服務(wù)在交互性、高分辨率等方面的需求。矢量瓦片技術(shù)將瓦片服務(wù)的高效和矢量地圖的靈活交互結(jié)合在一起,為解決上述問題提供了一種新的解決方案,客戶端根據(jù)地圖顯示范圍和地圖配置樣式實現(xiàn)地圖的實時渲染:可交互式定制地圖樣式,滿足了用戶大眾化、地圖樣式個性化的需求。因而,矢量瓦片地圖逐漸被各地圖平臺所采用。
1矢量瓦片繪制流程
1.1符號繪制流程
與柵格瓦片不同,矢量瓦片以四叉樹金字塔模型來切割矢量數(shù)據(jù),并將矢量瓦片數(shù)據(jù)存儲于服務(wù)器端,客戶端根據(jù)地圖顯示范圍以及地圖樣式文件定義的數(shù)據(jù)源映射獲取服務(wù)器上存儲的矢量瓦片、圖表、字體等資源,然后按照地圖樣式文件定義的地圖表達(dá)規(guī)則渲染輸出地圖。
矢量瓦片繪制流程如圖1所示。
用戶可重新調(diào)整字體的大小、地圖符號的顏色/尺寸等屬性,改變現(xiàn)有的地圖樣式??蛻舳素?fù)責(zé)進(jìn)行地圖渲染輸出,服務(wù)器端只負(fù)責(zé)將矢量瓦片、符號、字體等資源傳遞給客戶端。
1.2硬件加速繪制技術(shù)
隨著圖形處理器(GPU)技術(shù)的不斷發(fā)展,在固定功能圖形渲染流水線(Fix-functionRenderingPipeline)的基礎(chǔ)上,增加了可編程圖形渲染流水線(ProgrammableRenderingPipeline)。通過撰寫著色器程序shader代碼,由GPU直接在硬件層面對這些shader代碼進(jìn)行編譯,從而實現(xiàn)特定的繪制效果。圖2展示了典型的可編程圖形渲染流水線。為了將矢量地理數(shù)據(jù)繪制到屏幕上,在圖元裝配階段把原始的幾何數(shù)據(jù)組織為點、線、三角形等幾何圖形:頂點著色器(Vertexshaders)允許通過編程實現(xiàn)對每個頂點屬性(位置、紋理、顏色等)的計算和變換操作。柵格化和插值階段將這些以三角形為代表的幾何圖形數(shù)據(jù)轉(zhuǎn)換為屏幕像素。像素著色器(Fragmentshaders)同樣以可編程的方式實現(xiàn)逐個像素的顏色等屬性的計算與操作。通過著色器程序(shader)實現(xiàn)對GPU內(nèi)部頂點和像素處理階段的直接操縱,使得圖形本身的處理速度和靈活性都得到了非常大的提高。
圖2可編程圖形渲染流水線
2矢量瓦片符號繪制
地圖符號是直觀表達(dá)空間要素特征與分布規(guī)律的主要手段,是表達(dá)地圖內(nèi)容、傳遞地理信息的主要媒介。一般會利用點狀、線狀、面狀地圖符號來描述客觀世界中具有特定位置的地理對象或者現(xiàn)象,并通過地圖制圖規(guī)則將繪制結(jié)果直觀、形象地展現(xiàn)在地圖上。矢量瓦片符號渲染過程以數(shù)據(jù)為驅(qū)動,依據(jù)繪制要求對數(shù)據(jù)進(jìn)行轉(zhuǎn)換和處理,建立地圖符號與地理要素之間的對應(yīng)關(guān)系,根據(jù)屬性信息以及符號樣式文件,利用圖形繪制API以及符號化繪制方法,在屏幕上輸出地圖。
2.1點狀符號繪制
點狀符號具有定位和定性特征,其大小并不指代地物的面積或范圍,與地圖的比例尺無關(guān),如水準(zhǔn)點、居民地、水塔、旅游景點等。
點狀符號采用預(yù)先制作好的圖片來代表點狀地物,柵格圖片填充的點狀符號的主要參數(shù)包括:圖片存儲的路徑、圖片的大小、圖片的位置、圖片的縮放系數(shù),圖片的旋轉(zhuǎn)角度等。
點狀要素的符號化表達(dá)方法主要包括:單一符號化、著色符號化、等級符號化、比例符號化以及分類符號化。單一符號化,所有的點狀要素都采用相同的點狀符號:著色符號化,即通過顏色變化體現(xiàn)點狀要素之間的屬性差異:比例符號化,則符號的尺寸成一定的函數(shù)關(guān)系,跟隨尺寸變化體現(xiàn)點狀要素之間的屬性差異:分類符號化,則可以根據(jù)點狀要素的屬性分類,不同類別的點狀要素配置的符號不同。
2.2面狀符號繪制
面狀符號用于表示分布范圍較廣的大面積地理要素,其范圍大小按比例尺顯示,如行政區(qū)劃、森林、湖泊等。面狀符號有一條有形或者無形的閉合輪廓,主要由兩部分構(gòu)成:輪廓邊界和內(nèi)部填充。輪廓邊界可以用線狀符號來表示,內(nèi)部填充包括顏色填充(純色填充和漸變填充)、符號填充(點狀符號填充和線狀符號填充)、紋理填充。純色填充是用一種顏色進(jìn)行面域填充,是最普遍和常用的填充方式。漸變填充是顏色按照一定規(guī)律變化的面域填充方式。點狀符號填充是面域內(nèi)點狀符號按照一定的方式排列(矩形填充、品形填充、散列填充),其填充參數(shù)主要包括點狀符號、符號的縮放比例、符號的旋轉(zhuǎn)角度、符號的橫向間隔和縱向間隔等。線狀符號填充,其填充參數(shù)主要包括線狀符號、符號的填充角度、符號的間隔等。紋理填充則是利用紋理圖片,基于圖片旋轉(zhuǎn)角度、圖片縮放比例等參數(shù)進(jìn)行面域填充。
3結(jié)語
當(dāng)前,GPU以其明顯的效率優(yōu)勢,成為當(dāng)前地理信息可視化領(lǐng)域的熱點。對于點狀符號,將其外接矩形直接生成兩個三角形,根據(jù)屬性信息從紋理緩存中獲取相應(yīng)的紋理符號,并綁定到三角形頂點。對于線狀符號,采用平行線推移算法將線狀要素離散為三角形條帶。對于面狀符號,采用已經(jīng)成熟的Delaunay三角網(wǎng)的剖分方法,將面狀要素離散為三角形圖元集合。
客戶端根據(jù)地圖顯示的范圍以及數(shù)據(jù)源從矢量瓦片數(shù)據(jù)庫獲取相應(yīng)的矢量瓦片。通過對符號樣式文件的編輯,可以動態(tài)地改變地圖符號樣式、實時輸出地圖??蛻舳素?fù)責(zé)數(shù)據(jù)的解析與渲染任務(wù),緩解了服務(wù)器壓力,為用戶提供了一種交互式、可定制、可配置的地圖制圖服務(wù)。