秦 聰, 李鵬飛
(山東光庭信息技術(shù)有限公司, 山東煙臺 264000)
地理信息系統(tǒng)(Geographic Information System, GIS)在土地資源開發(fā)、城市區(qū)域規(guī)劃和自然資源開發(fā)和管理等方面發(fā)揮重要作用[1]。傳統(tǒng)的GIS主要處理二維信息, 用二維信息表示現(xiàn)實空間中三維特征的變化, 在處理礦產(chǎn)、地質(zhì)、水域環(huán)境等三維場景信息時受到限制[2]。當(dāng)前三維時空數(shù)據(jù)內(nèi)容豐富、數(shù)據(jù)量較大, GIS無法滿足三維空間數(shù)據(jù)連續(xù)變化的精確分析和真實模擬。
針對上述存在的問題, 文獻(xiàn)[3]采用遞進(jìn)網(wǎng)絡(luò)表示連續(xù)的細(xì)化層次模型, 能夠有效控制簡化網(wǎng)格和原始網(wǎng)格的誤差。但在調(diào)節(jié)地形塊的可視范圍時出現(xiàn)掉幀的情況。文獻(xiàn)[4]提出一種基于地形不規(guī)則網(wǎng)絡(luò)表示場景信息的可視化, 實現(xiàn)地理時空信息的動態(tài)顯示。但沒有考慮到視點位置對渲染時空場景的影響。
針對上述研究中存在的不足, 本研究分析時空數(shù)據(jù)特征, 結(jié)合三維GIS和時態(tài)GIS可視化, 建立三維時空數(shù)據(jù)模型, 并基于OSG三維圖形庫渲染時空數(shù)據(jù)場景模型, 實現(xiàn)地信時空的動態(tài)可視化。
當(dāng)前時空數(shù)據(jù)可視化技術(shù)中的三維布局法使用三維環(huán)境表示時空軌跡數(shù)據(jù), 將時空數(shù)據(jù)分層繪制, 考慮不同數(shù)據(jù)層之間的時序變化, 避免了二維平面圖空間重疊問題。但是在處理大規(guī)模地信時空軌跡數(shù)據(jù)時, 可能會出現(xiàn)視覺遮擋的情況, 導(dǎo)致可視化結(jié)果比較混亂。本研究地信時空數(shù)據(jù)的三維可視化是在WEBGL(Web Graphics Library)的基礎(chǔ)上, 在網(wǎng)絡(luò)環(huán)境下構(gòu)建三維地理場景并實現(xiàn)動態(tài)交互。WEBGL圖形庫是在瀏覽器中可繪制和渲染的三維圖形, 并支持用戶和三維圖形之間進(jìn)行交互的3D繪圖標(biāo)準(zhǔn)[5]。WEBGL為HTML5的Canvas元素提供GPU硬件加速功能, 并且調(diào)用的OpenGL接口是統(tǒng)一、開放、跨平臺的標(biāo)準(zhǔn)規(guī)范?;赪EBGL的時空數(shù)據(jù)三維可視化過程如圖1所示。
圖1 WEBGL的時空數(shù)據(jù)三維可視化過程Fig.1 3D visualization process of spatio-temporal data in WEBGL
WEBGL主要基于光柵化在二維平面上進(jìn)行渲染操作, 形成三維視覺效果的API, 根據(jù)投影矩陣確定圖形顏色并實現(xiàn)坐標(biāo)轉(zhuǎn)換。由OpenGL ES著色器語言編寫頂點著色器, 編譯完成后傳遞到圖形硬件GPU上運(yùn)行[7]。圖元裝配主要進(jìn)行裁剪、透視分割和Viewport變換的操作, 在這一過程中GPU執(zhí)行頂點著色器程序, 將頂點坐標(biāo)轉(zhuǎn)換成在屏幕上顯示的坐標(biāo)[6]。
使用粒子系統(tǒng)實現(xiàn)時空數(shù)據(jù)動態(tài)變化, 根據(jù)地信時空對象的外形特征和運(yùn)動特征構(gòu)成一個不規(guī)則的模糊集合, 通過引入外部參數(shù)來控制三維時空數(shù)據(jù)的動態(tài)變化。粒子系統(tǒng)由粒子集合以及相應(yīng)的屬性信息組成, 粒子的相關(guān)屬性包括粒子位置、速度、瞬時加速度、方向、顏色等信息, 可表示為
其中Atti表示粒子的相關(guān)屬性。整個粒子系統(tǒng)包括了所有粒子每個時刻的狀態(tài), 即
根據(jù)地信時空數(shù)據(jù)特點, 將每一個實體由帶有時間屬性的控制點組成, 粒子活動過程中的屬性變化實現(xiàn)時空數(shù)據(jù)的動態(tài)可視化, 粒子系統(tǒng)動態(tài)可視化流程如圖2所示。
圖2 粒子系統(tǒng)動態(tài)可視化流程Fig.2 Dynamic visualization process of particle system
更新粒子屬性階段, 利用該粒子前一幀所在的空間位置、運(yùn)動速度以及每兩幀的時間間隔計算粒子當(dāng)前幀的位置[7], 第n+1幀粒子空間位置可表示為
式(3)中velocityn.x、velocityn.y、velocityn.z為粒子的運(yùn)動速度分量, Δt為時間間隔。在繪制渲染階段對于不同尺度下的粒子軌跡采用了不同的繪制方法, 從小至大以線段、粒子和三維模型的形式表示。隨著時間戳的增加, 當(dāng)當(dāng)前時間戳超過粒子軌跡序列的時間范圍時, 刪除該粒子。通過大量的粒子構(gòu)成粒子系統(tǒng), 粒子變化的靈活性能夠模擬任何地信時空變化過程, 通過動態(tài)設(shè)置參數(shù)來達(dá)到更加真實的動態(tài)可視化效果。
本研究使用動態(tài)加載技術(shù), 并對連續(xù)的地理空間數(shù)據(jù)進(jìn)行分割。通過裁剪動態(tài)載入圖像網(wǎng)格, 去除載入過程中視錐體用不到的網(wǎng)格。通過運(yùn)動估計預(yù)測, 首先加載外部三角網(wǎng)格, 防止地信時空可視化過程中因視點移動出現(xiàn)卡頓、掉幀的情況[8]。
首先將屏幕顯示的二維X-Y平面分割成大小為Δd的網(wǎng)格, 三維空間內(nèi)一點v0=(x0,y0,z0)所在的網(wǎng)格為(i,j)。三維地信時空可視化距離為p個網(wǎng)格, 一次載入的網(wǎng)格范圍為(i-p,j-p)到(i+p,j+p)。為了加快可視化速度, 減少載入的網(wǎng)格數(shù), 在較遠(yuǎn)的區(qū)域加載粗糙的時空數(shù)據(jù)[9]。離(i,j)越近的區(qū)域, 加載的時空數(shù)據(jù)的精度要求越高。選擇合適的網(wǎng)格分割距離m,n,k,l, 在X和Y方向?qū)⒕W(wǎng)格分割為精度較高的時空網(wǎng)格(x≤m,y≤k)和精度較低的時空網(wǎng)格(m<x≤n,k<y≤l)。在時空數(shù)據(jù)可視化過程中整個網(wǎng)格數(shù)據(jù)都會載入, 由于視點位置確定, 視錐體可視范圍有限, 大量的時空數(shù)據(jù)不會顯示在目標(biāo)視野內(nèi), 通過視錐過濾掉不必要顯示的時空數(shù)據(jù), 減少了加載傳輸?shù)娜哂鄶?shù)據(jù)[10]。視錐過濾后的網(wǎng)絡(luò)層次如圖3所示。
圖3 視錐過濾后的網(wǎng)絡(luò)層次Fig.3 Network hierarchy after viewing cone filtering
時空數(shù)據(jù)動態(tài)載入過程中, 加載速度和模型渲染效果與網(wǎng)格分割距離m,n,k,l有關(guān)。如果m,n,k,l的值過小, 傳輸時空數(shù)據(jù)量和渲染的網(wǎng)格過少, 導(dǎo)致可視化細(xì)節(jié)不夠, 渲染場景精度不高[11]。如果m,n,k,l的值過大, 則渲染場景細(xì)節(jié)過多導(dǎo)致傳輸量過大。本研究基于屏幕誤差保證動態(tài)載入網(wǎng)格的適配性, 引入多層級使時空數(shù)據(jù)渲染是與視點相關(guān)的多分辨率模型。對于模型頂點v0, 映射的線段sv可表示為
其中,δv為原始網(wǎng)格投影點?z距離誤差?為z軸的單位向量[12]。
sv與屏幕高度的投影誤差為屏幕空間誤差μv, 可表示為
為減少時空數(shù)據(jù)可視化過程中的視覺形變, 采用一種視覺變換, 變換后的視點位置e′確定當(dāng)前屏幕空間誤差, 可表示為
視點運(yùn)動中屏幕空間誤差參數(shù)如圖4所示。
圖4 屏幕空間誤差參數(shù)Fig.4 Screen space error parameters
時空數(shù)據(jù)加載過程中可能出現(xiàn)網(wǎng)絡(luò)延遲、移動設(shè)備渲染場景時間過長等問題, 導(dǎo)致三維地信場景出現(xiàn)不流暢的情況。時空場景需要更新時, 必須等待時空數(shù)據(jù)加載完成才能開始, 數(shù)據(jù)加載過程無法進(jìn)行交互處理。本研究根據(jù)當(dāng)前視點的坐標(biāo)和視點變化的運(yùn)動向量[14], 估計下一個視點可能出現(xiàn)的位置, 預(yù)先載入部分時空數(shù)據(jù)到內(nèi)存中, 保證時空場景的渲染不會出現(xiàn)掉幀的情況。預(yù)測值為視點位置的期望值, 可表示為
通過預(yù)測下一個視點的位置和視點方向, 從當(dāng)前時空網(wǎng)格更新出新的網(wǎng)格, 并通過運(yùn)動估計預(yù)測, 預(yù)先加載時空場景視錐之外的三角網(wǎng)格, 使時空場景加載更加流暢, 防止數(shù)據(jù)加載過程掉幀。
為驗證本研究三維時空數(shù)據(jù)庫的地信時空可視化系統(tǒng)的性能, 分別使用文獻(xiàn)[3]可視化方法、文獻(xiàn)[4]可視化方法和本研究可視化方法進(jìn)行實驗, 對比3種系統(tǒng)得出的結(jié)果。本研究實驗環(huán)境如表1所示。
表1 實驗環(huán)境Tab.1 Experimental environment
系統(tǒng)主界面如圖5所示, 主界面中顯示地圖圖層, 用來展示地信時空數(shù)據(jù)的地理位置和空間分布, 借助地圖引擎提供的地理環(huán)境幫助用戶了解時空數(shù)據(jù)的動態(tài)變化, 地圖下方用D3.js的堆棧圖做了一個時間軸[15], 用來顯示每一時刻的地信時空情況。
圖5 系統(tǒng)主界面Fig.5 System main interface
本研究實驗所用的時空數(shù)據(jù)如表2所示。
表2 時空數(shù)據(jù)Tab.2 Spatio-temporal data
本研究對DOM、DEM和三維模型進(jìn)行時空建模, 利用三維時空數(shù)據(jù)完成動態(tài)可視化, 可視化結(jié)果如圖6所示。
圖6 時空數(shù)據(jù)可視化效果圖Fig.6 Visualization effect diagram of spatio-temporal data
比較3種可視化方法對時空數(shù)據(jù)進(jìn)行場景渲染、圖像加載和視點變化所使用的時間。3種可視化方法的運(yùn)行時間如圖7所示。
圖7 運(yùn)行時間Fig.7 Running time
對比3種可視化系統(tǒng)的運(yùn)行時間可知, 本研究加載時空數(shù)據(jù)圖像使用的時間最短, 僅為0.84 s, 移動數(shù)據(jù)和視點變化所使用的時間均低于其他系統(tǒng)。本研究通過運(yùn)動估計預(yù)測動態(tài)加載時空數(shù)據(jù), 減少了視錐之外的冗余數(shù)據(jù), 加快了數(shù)據(jù)載入時間。文獻(xiàn)[3]系統(tǒng)啟動時間為3.78 s, 比本研究時間長2.94 s, 文獻(xiàn)[4]系統(tǒng)啟動時間比本研究時間長4.38 s。說明文獻(xiàn)[3]和文獻(xiàn)[4]系統(tǒng)對時空數(shù)據(jù)進(jìn)行建模和渲染場景花費(fèi)時間過長, 可視化效率不高。同時視點變化耗時過長, 可能出現(xiàn)掉幀的情況。
3種可視化系統(tǒng)可視化過程中場景模型網(wǎng)格數(shù)和頂點數(shù)、顯示幀率如表3所示。
表3 運(yùn)行結(jié)果數(shù)據(jù)Tab.3 Running result data
由運(yùn)行結(jié)果數(shù)據(jù)可知, 本研究可視化顯示的平均幀率最高, 時空數(shù)據(jù)可視化結(jié)果顯示流暢, 場景的平均三角網(wǎng)格數(shù)量最小, 模型的頂點數(shù)最少。本研究在保證三維時空模型精度的同時, 有效減少了冗余的三角網(wǎng)格和頂點數(shù)量。文獻(xiàn)[3]系統(tǒng)得到的平均幀率只有23幀, 文獻(xiàn)[4]系統(tǒng)運(yùn)行結(jié)果只有25幀, 雖然達(dá)到了顯示幀率的最低標(biāo)準(zhǔn), 但在視覺感受上仍能感覺到動態(tài)顯示并不流暢。場景模型的數(shù)據(jù)量過大, 延長了加載數(shù)據(jù)時間和數(shù)據(jù)運(yùn)算量。
本研究根據(jù)二維地理信息時空數(shù)據(jù)建立起相應(yīng)的三維時空模型, 基于WEBGL圖像庫渲染場景模型實現(xiàn)動態(tài)可視化, 根據(jù)投影矩陣確定圖形顏色, 并實現(xiàn)坐標(biāo)轉(zhuǎn)換, 進(jìn)而將這個映射關(guān)系轉(zhuǎn)化為可視化數(shù)據(jù)?;诹W酉到y(tǒng)的粒子活動和屬性變化描述時空數(shù)據(jù)的動態(tài)變化, 粒子能夠描述任何地信時空對象的外觀特征和運(yùn)動特征, 通過設(shè)置參數(shù)達(dá)到動態(tài)模擬效果, 通過視錐過濾和動態(tài)加載減少動態(tài)顯示不必要的時空網(wǎng)格數(shù)據(jù)。
由于傳統(tǒng)GIS數(shù)據(jù)中包含的時間信息較少, 本研究時間數(shù)據(jù)較為粗略, 尺度不統(tǒng)一, 數(shù)據(jù)采集和監(jiān)測技術(shù)還需進(jìn)一步優(yōu)化, 使采集時間信息更加全面。