辛全波 秦 柳 范俊甫 畢金強(qiáng)
1 交通運(yùn)輸部天津水運(yùn)工程科學(xué)研究所,天津,300456 2 山東理工大學(xué)建筑工程學(xué)院,山東 淄博,255000 3 天津大學(xué)海洋科學(xué)與技術(shù)學(xué)院,天津,300072
伴隨著航道養(yǎng)護(hù)工作的持續(xù)進(jìn)行,各港口積累了大量的水深數(shù)據(jù)。在發(fā)展趨勢(shì)上,航道應(yīng)用正向Web 端遷移[1],然而航道水深數(shù)據(jù)量大、密集度高、可視性差,同時(shí)受限于網(wǎng)絡(luò)傳輸、瀏覽器性能、兼容性等因素,在Web 端進(jìn)行航道三維可視化仍有提升空間。 Web 圖形庫(kù)(Web graphics library,WebGL)技術(shù)的出現(xiàn)為Web 端的三維可視化提供了新的解決方案,盡管WebGL 有諸多技術(shù)優(yōu)勢(shì)[2-4],但仍缺少一種行之有效的數(shù)據(jù)組織與可視化方法來(lái)直觀展現(xiàn)海量水深數(shù)據(jù)的分布與變化。
國(guó)內(nèi)多名學(xué)者對(duì)三維航道快速構(gòu)建與可視化方法開(kāi)展了研究。楊東遠(yuǎn)等[5]應(yīng)用GIS 與三維可視化技術(shù)建立了天津港三維港區(qū)與航道系統(tǒng),對(duì)大型場(chǎng)景的動(dòng)態(tài)組織與可視化技術(shù)進(jìn)行了研究。也有學(xué)者對(duì)海底地形模型的構(gòu)建與可視化中的關(guān)鍵技術(shù)和方法進(jìn)行了系統(tǒng)化研究[6-8]。范瑞杰[9]對(duì)海底地形建模方法的適用性進(jìn)行了研究,應(yīng)用OpenGL 三維圖形庫(kù)對(duì)海底地形真實(shí)感技術(shù)進(jìn)行研究。畢金強(qiáng)等[10]根據(jù)航道實(shí)體要素地理位置分布的層次性與關(guān)聯(lián)性,運(yùn)用時(shí)空GIS 建模、地形場(chǎng)景構(gòu)建、離散數(shù)據(jù)插值等技術(shù),實(shí)現(xiàn)了空間和時(shí)間維度的可視化表達(dá)。
可見(jiàn),國(guó)內(nèi)對(duì)水下測(cè)量數(shù)據(jù)的組織方法和水下地形構(gòu)建技術(shù)開(kāi)展了大量研究,但是對(duì)Web 端數(shù)據(jù)一體化管理和WebGL 三維可視化方法研究較少,體現(xiàn)在如下方面:①多以單時(shí)刻的數(shù)據(jù)為研究對(duì)象,缺少對(duì)長(zhǎng)時(shí)間序列的管理和可視化;②可視化依賴(lài)復(fù)雜的數(shù)據(jù)模型構(gòu)建過(guò)程,預(yù)處理時(shí)間比較長(zhǎng),需要人工參與;③開(kāi)發(fā)方式多為單機(jī)版,Web 端的三維顯示系統(tǒng)較少,不利于數(shù)據(jù)的共享。
在Web 顯示方面,一般通過(guò)三維數(shù)據(jù)建模[11,12]或者預(yù)處理生成地形模型文件[13,14],然后借助可視化插件實(shí)現(xiàn)地形可視化,需要長(zhǎng)時(shí)間的數(shù)據(jù)處理過(guò)程,難以滿(mǎn)足水深數(shù)據(jù)的即時(shí)顯示要求,而且處理后的模型文件占用空間大、可讀性差、解析難度大,難以滿(mǎn)足Web 端輕量級(jí)數(shù)據(jù)交換的要求。此外,Web端的顯示效率和顯示效果受網(wǎng)絡(luò)傳輸、瀏覽器性能、兼容性等影響較大。由此可見(jiàn),常規(guī)方法在Web 端并不適用。
本文以某沿海港口多年積累的航道水深測(cè)量數(shù)據(jù)為基礎(chǔ),對(duì)海量航道水深數(shù)據(jù)的組織方法和水下地形的實(shí)時(shí)可視化技術(shù)展開(kāi)研究,提出了一種多維度數(shù)據(jù)索引構(gòu)建方法,實(shí)現(xiàn)了海量數(shù)據(jù)的快速增量入庫(kù)和高效檢索。在此基礎(chǔ)上,研究了基于WebGL的三維航道可視化方法,實(shí)現(xiàn)了三維地形模型構(gòu)建和可視化渲染。
水深數(shù)據(jù)具有海量、多源、異構(gòu)、多尺度、時(shí)空性的特點(diǎn)。區(qū)別于一般水深測(cè)量數(shù)據(jù),航道水深測(cè)量數(shù)據(jù)受航道養(yǎng)護(hù)工作的影響,在深度分布和變化上具有顯著特征。在Web 端的應(yīng)用中經(jīng)常遇到數(shù)據(jù)來(lái)源不統(tǒng)一、數(shù)據(jù)格式不規(guī)范、空間參考不一致、測(cè)量尺度不匹配、數(shù)據(jù)范圍重疊等問(wèn)題。
這些問(wèn)題產(chǎn)生的主要原因是水深數(shù)據(jù)具有多維特性,僅從單維度無(wú)法準(zhǔn)確表達(dá)其特征。要實(shí)現(xiàn)水深數(shù)據(jù)的高效組織與管理,需要分析數(shù)據(jù)維度及數(shù)據(jù)內(nèi)容,建立面向多維度的數(shù)據(jù)索引。通過(guò)梳理與歸納,航道水深數(shù)據(jù)具有時(shí)間、空間和工程3個(gè)主要維度,各數(shù)據(jù)維度的具體內(nèi)容見(jiàn)表1。
多要素?cái)?shù)據(jù)索引的快速構(gòu)建既要基于航道水深數(shù)據(jù)維度,又要兼顧航道應(yīng)用的需求。在時(shí)間、空間、工程3個(gè)維度基礎(chǔ)上,面向空間查詢(xún)、淺點(diǎn)分析、疏浚分析、沖淤分析等航道特有的數(shù)據(jù)查詢(xún)和分析需求,將空間分布特征和關(guān)聯(lián)關(guān)系索引到數(shù)據(jù)中。多維度數(shù)據(jù)索引的構(gòu)建內(nèi)容如圖1所示
圖1 多維度數(shù)據(jù)索引構(gòu)建Fig.1 Construction of Multi-dimension Data Index
1)基于航道特征的多層次網(wǎng)格索引構(gòu)建。網(wǎng)格層次的劃分影響數(shù)據(jù)過(guò)渡的平滑程度,層級(jí)越多,過(guò)渡越平滑,數(shù)據(jù)索引效率越低。建立起航道、航段、位置的多層次網(wǎng)格拓?fù)潢P(guān)系,對(duì)網(wǎng)格和水深點(diǎn)構(gòu)建空間索引。對(duì)于已構(gòu)建的網(wǎng)格,通過(guò)疊加分析求出其與上級(jí)網(wǎng)格的拓?fù)潢P(guān)系,并應(yīng)用R樹(shù)算法構(gòu)建空間索引;對(duì)于水深點(diǎn),通過(guò)與多層次網(wǎng)格進(jìn)行疊加分析,建立其與網(wǎng)格的關(guān)聯(lián)。多層次網(wǎng)格索引構(gòu)建示意圖見(jiàn)圖2。
圖2 多層次網(wǎng)格索引構(gòu)建Fig.2 Construction of Multi-level Grid Index
2)基于測(cè)量工程的時(shí)空數(shù)據(jù)關(guān)聯(lián)。以測(cè)量工程為基礎(chǔ)既符合數(shù)據(jù)自身特征,又契合航道管理的需求。針對(duì)工程范圍重疊和測(cè)量時(shí)間相近現(xiàn)象普遍存在的情況,建立水深點(diǎn)與時(shí)間和工程的雙向關(guān)聯(lián),增加水深點(diǎn)測(cè)量時(shí)間,并構(gòu)建多尺度的時(shí)間索引。這樣既能根據(jù)測(cè)量工程正向查詢(xún)水深的分布數(shù)據(jù),又能根據(jù)水深點(diǎn)反向查詢(xún)測(cè)量工程信息,同時(shí)也支持按時(shí)間序列對(duì)水深數(shù)據(jù)和測(cè)量工程進(jìn)行回溯。
基于多維度數(shù)據(jù)索引,通過(guò)多維度組合的方式提供不同應(yīng)用場(chǎng)景下的數(shù)據(jù)檢索。
時(shí)空高效檢索是航道數(shù)據(jù)管理和可視化的基礎(chǔ),基于多維度數(shù)據(jù)索引,可以按照時(shí)間范圍、空間范圍和多層次網(wǎng)格快速篩選包含數(shù)據(jù)的網(wǎng)格,然后結(jié)合稀疏化算法檢索出所需的水深點(diǎn)。
航道淺點(diǎn)分析為通航和疏浚提供重要參考,常規(guī)的做法是數(shù)據(jù)遍歷,但查詢(xún)效率低?;诙嗑S度數(shù)據(jù)索引可將分析單元由水深點(diǎn)轉(zhuǎn)為航段或網(wǎng)格,并發(fā)揮數(shù)據(jù)庫(kù)嵌套查詢(xún)的優(yōu)勢(shì),提高查詢(xún)效率。
疏浚分析為航道養(yǎng)護(hù)工程提供決策支撐,計(jì)算復(fù)雜且耗時(shí)長(zhǎng)。基于多維度數(shù)據(jù)索引結(jié)合空間分析和多層次網(wǎng)格可將疏浚前后的水深分布及疏浚深度存儲(chǔ)到網(wǎng)格中,然后運(yùn)用R 樹(shù)空間索引快速篩選工程數(shù)據(jù)。
海量數(shù)據(jù)入庫(kù)是實(shí)現(xiàn)水深數(shù)據(jù)統(tǒng)一管理的前提,常規(guī)方法是不經(jīng)任何處理,將原始水深數(shù)據(jù)直接存儲(chǔ)入庫(kù)。這種方式具有結(jié)構(gòu)簡(jiǎn)單、存取方便、入庫(kù)效率高等優(yōu)點(diǎn),但是查詢(xún)效率低。基于多維度數(shù)據(jù)的索引構(gòu)建包含大量預(yù)處理運(yùn)算,為了獲得高效查詢(xún),犧牲了一定的數(shù)據(jù)入庫(kù)效率。為了分析索引構(gòu)建對(duì)數(shù)據(jù)入庫(kù)效率的影響,本文選取多組測(cè)量數(shù)據(jù)進(jìn)行分析,對(duì)比常規(guī)方法與本文方法的耗時(shí),具體信息如表2 所示。
表2 索引構(gòu)建對(duì)入庫(kù)效率的影響Tab.2 Influences of Index Construction on Storage Efficiency
實(shí)驗(yàn)結(jié)果表明,索引的構(gòu)建對(duì)數(shù)據(jù)入庫(kù)效率有一定的影響,考慮到在實(shí)際應(yīng)用中數(shù)據(jù)入庫(kù)以工程為單位進(jìn)行,總體耗時(shí)少,且入庫(kù)頻率低,與查詢(xún)分析效率的顯著提升相比,該影響可忽略不計(jì)。
本文從兩方面開(kāi)展基于WebGL 的三維航道可視化研究:①研究高效的三維地形模型構(gòu)建方法,能夠快速構(gòu)建航道三維地形模型;②基于三維地形模型完成離散水深數(shù)據(jù)到水下地形曲面的轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)即時(shí)渲染。
1)航道地形模型構(gòu)建流程分析。由于航道的幾何形態(tài)曲折、河道寬窄不一、水深分布復(fù)雜,基于規(guī)則格網(wǎng)和基于等高線(xiàn)的方法無(wú)法準(zhǔn)確表達(dá)航道特征,不適用于三維地形模型的構(gòu)建?;诓灰?guī)則三角網(wǎng)的方法因其高效的存儲(chǔ)效率、簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)和對(duì)特征地形的準(zhǔn)確表達(dá),成為航道地形模型構(gòu)建的常用方法。
構(gòu)建地形模型的流程為:按照空間特征或航行尺度將航道劃分為若干區(qū)塊,采用逐點(diǎn)插入法分別對(duì)每個(gè)區(qū)塊構(gòu)建不規(guī)則三角網(wǎng)[15,16],再將相鄰區(qū)塊接邊整合到一起。為了得到高精度的地形模型,可采用網(wǎng)格點(diǎn)內(nèi)插技術(shù)對(duì)各區(qū)塊的三角網(wǎng)進(jìn)行細(xì)化。區(qū)別于寬闊水域,航道的形態(tài)狹長(zhǎng)且曲折,水深測(cè)量數(shù)據(jù)多呈條帶狀分布,直接對(duì)其構(gòu)建Delaunay 三角網(wǎng)會(huì)在邊緣外產(chǎn)生冗余三角形,如圖3(a)所示。
圖3 基于邊界約束的三角網(wǎng)優(yōu)化Fig.3 Optimized Triangle Network Based on Boundary Constraints
出現(xiàn)這個(gè)問(wèn)題的原因是,Delaunay 三角網(wǎng)的構(gòu)建依據(jù)是任意三角形的外接圓,最外層的邊界形成一個(gè)凸多邊形的外殼,外殼內(nèi)的三角形都被作為目標(biāo)三角形提取出來(lái)。為了準(zhǔn)確表達(dá)航道特征,需要識(shí)別并濾除冗余多邊形。本文設(shè)計(jì)了基于邊界約束的三角網(wǎng)優(yōu)化方法,通過(guò)生成邊界的凹包多邊形,并濾除掉邊界以外的冗余數(shù)據(jù),得到符合航道特征的水下地形模型。
2)基于邊界約束的冗余三角形濾除。從圖3(a)可以看出,冗余三角形多為狹長(zhǎng)的鈍角三角形,根據(jù)這個(gè)特點(diǎn),可限定邊界長(zhǎng)度和內(nèi)角角度來(lái)識(shí)別冗余三角形。從三角網(wǎng)的最外層邊開(kāi)始遍歷,不斷刪除超過(guò)長(zhǎng)度限值的邊,最終得到所求的邊界。該方法過(guò)程簡(jiǎn)單,但需要對(duì)所有三角形進(jìn)行判斷,效率不高,而且在邊界處的準(zhǔn)確度不高。
本文從三角形與邊界的拓?fù)潢P(guān)系出發(fā),使用質(zhì)心求交的方法實(shí)現(xiàn)冗余三角形的過(guò)濾。存儲(chǔ)三角網(wǎng)的頂點(diǎn)與三角形的對(duì)應(yīng)關(guān)系,結(jié)合質(zhì)心求解公式建立三角形與質(zhì)心的映射關(guān)系,得到頂點(diǎn)、三角網(wǎng)與質(zhì)心三者的關(guān)聯(lián)關(guān)系,通過(guò)對(duì)凹多邊形與質(zhì)心求交運(yùn)算檢索出冗余多邊形。該方法將分析對(duì)象由邊線(xiàn)轉(zhuǎn)變?yōu)橘|(zhì)心,減少了運(yùn)算次數(shù),并能利用空間查詢(xún)的優(yōu)勢(shì),提升了計(jì)算效率。
3)基于alpha-shape 算法優(yōu)化的自適應(yīng)邊界提取方法。alpha-shape 是一種經(jīng)典的點(diǎn)集輪廓提取算法,它在對(duì)無(wú)序點(diǎn)集構(gòu)建凸包的基礎(chǔ)上擴(kuò)展了一個(gè)可設(shè)定參數(shù)α,用于控制輪廓信息的精確程度[17-19],其構(gòu)建過(guò)程可想象為一個(gè)半徑為α的球在點(diǎn)集上不停滾動(dòng),掠過(guò)的點(diǎn)集建立連接關(guān)系形成面,類(lèi)似于為多邊形的邊給出一個(gè)長(zhǎng)度限制,如圖4 所示。α越大,邊界越接近凸包;α越小,邊界越傾向于在一定位置凹陷進(jìn)去。
圖4 利用alpha-shape 提取輪廓Fig.4 Boundary Extraction by alpha-shape
α的動(dòng)態(tài)確定是準(zhǔn)確提取邊界的關(guān)鍵,α過(guò)大則會(huì)影響提取邊界的精度,過(guò)小則無(wú)法保證邊界的完整性。由于水深測(cè)量精度不盡相同,需要根據(jù)數(shù)據(jù)情況動(dòng)態(tài)確定α的取值,因此,研究水深數(shù)據(jù)與α的對(duì)應(yīng)關(guān)系,制定自適應(yīng)的動(dòng)態(tài)α調(diào)整策略對(duì)自動(dòng)化處理至關(guān)重要。
根據(jù)相關(guān)研究,α值取平均點(diǎn)間距的1~2 倍時(shí),得到的點(diǎn)集形狀相對(duì)完整又不會(huì)太破碎[20]??紤]到水深點(diǎn)密度與測(cè)量所采用的測(cè)圖比例尺有直接的關(guān)系,可以估算出不同比例尺對(duì)應(yīng)的鄰近點(diǎn)距離的取值范圍。《水運(yùn)工程測(cè)量規(guī)范》中規(guī)定了不同測(cè)圖比例尺對(duì)應(yīng)的定位點(diǎn)點(diǎn)位中誤差限值,比例尺精度表示地形圖上一段距離所表示的實(shí)地水平距離,因此,通過(guò)求出不同測(cè)圖比例尺對(duì)應(yīng)的點(diǎn)位實(shí)地距離限值,即點(diǎn)間距的最大值,進(jìn)一步得出α值的參考范圍。經(jīng)計(jì)算,不同測(cè)圖比例尺對(duì)應(yīng)的α值的參考范圍如表3 所示。α值確定后即可利用alpha-shape 算法生成凹包多邊形。
表3 不同測(cè)圖比例尺對(duì)應(yīng)的α 值參考范圍Tab.3 Reference Ranges of α Values at Different Mapping Scales
Web環(huán)境下的可視化渲染有兩種實(shí)現(xiàn)方式:①通過(guò)網(wǎng)格剖分構(gòu)建多邊形集合來(lái)擬合逼近地形曲面,對(duì)地形數(shù)據(jù)進(jìn)行內(nèi)插、剖分等處理[9],計(jì)算方法簡(jiǎn)單,但是數(shù)據(jù)冗余大,顯示效果受采樣密度影響較大;②構(gòu)建曲面擬合算法,通過(guò)數(shù)據(jù)預(yù)處理生成精細(xì)的柵格化數(shù)據(jù),這種方式運(yùn)行在中央處理器(central processing unit,CPU)上,對(duì)運(yùn)算效率和數(shù)據(jù)存儲(chǔ)的要求較高,不適用于大場(chǎng)景的顯示渲染。
本文應(yīng)用WebGL 的可編程管線(xiàn)進(jìn)行三維航道的可視化,充分發(fā)揮圖形處理器(graphics processing unit,GPU)的數(shù)據(jù)處理和圖形渲染能力??删幊啼秩竟芫€(xiàn)是將三維頂點(diǎn)加工轉(zhuǎn)換為離散像素點(diǎn)的一系列處理流程,相比固定渲染管線(xiàn),它將頂點(diǎn)著色器和片段著色器由可配置改為可編程,可根據(jù)具體需要來(lái)編寫(xiě)頂點(diǎn)渲染和像素渲染中的處理邏輯,實(shí)現(xiàn)場(chǎng)景定制化顯示。
圖5 為應(yīng)用可編程渲染管線(xiàn)進(jìn)行三維航道顯示的流程,可編程渲染管線(xiàn)包括數(shù)據(jù)輸入、頂點(diǎn)著色器、圖片裝配、光柵化、片元著色器、片元測(cè)試與融合、圖形輸出等環(huán)節(jié)。
圖5 基于可編程渲染管線(xiàn)的顯示流程Fig.5 Display Process Based on Programmable Rendering Pipeline
應(yīng)用上述流程和方法,實(shí)現(xiàn)了基于光照的明暗處理顯示和基于深度的分級(jí)設(shè)色顯示,能夠表現(xiàn)地形的起伏變化,如圖6 所示。經(jīng)測(cè)試,實(shí)驗(yàn)區(qū)域約有3 萬(wàn)個(gè)水深點(diǎn),在處理器Intel i7-4790@3.6 GHz 4核、顯卡NVIDA Quadro K620、分辨率1 024×768像素的環(huán)境下,每秒傳輸幀數(shù)保持在40 以上,顯示流暢,能夠滿(mǎn)足實(shí)際要求。
圖6 三維航道顯示效果圖Fig.6 Display Results of 3D Channel
本文在分析航道水深數(shù)據(jù)特征的基礎(chǔ)上,對(duì)Web 環(huán)境下的航道數(shù)據(jù)組織和三維可視化方法進(jìn)行研究,提出了一種基于多維度數(shù)據(jù)索引構(gòu)建方法和邊界約束的航道地形模型構(gòu)建方法,基于WebGL 技術(shù)實(shí)現(xiàn)了三維航道地形顯示。
該方法在實(shí)驗(yàn)港區(qū)取得了成功應(yīng)用,驗(yàn)證了其可行性和正確性,能夠滿(mǎn)足航道養(yǎng)護(hù)管理部門(mén)的實(shí)際需求。下一步將驗(yàn)證方法的普適性,并從真實(shí)感和效率上進(jìn)行提升和優(yōu)化。