李爾園,李洪平
(1.中國(guó)海洋大學(xué) 信息科學(xué)與工程學(xué)院 海洋技術(shù)系,山東 青島 266100)
基于World Wind的海洋數(shù)據(jù)可視化研究
李爾園1,李洪平1
(1.中國(guó)海洋大學(xué) 信息科學(xué)與工程學(xué)院 海洋技術(shù)系,山東 青島 266100)
以World Wind提供的類(lèi)和接口為基礎(chǔ),設(shè)計(jì)、開(kāi)發(fā)了柵格圖面圖元、矢量箭頭和等值線(xiàn)生成算法,并進(jìn)行了可視化實(shí)現(xiàn)。此外,還實(shí)現(xiàn)了基于三維地形的多層疊加圖。不僅提高了可視化效率,還豐富了World Wind的海洋數(shù)據(jù)可視化表現(xiàn)形式。研究開(kāi)發(fā)的海洋數(shù)據(jù)可視化算法,能夠滿(mǎn)足實(shí)際應(yīng)用需求,并已成功應(yīng)用到南海海洋信息服務(wù)系統(tǒng)中。
World Wind;海洋數(shù)據(jù);可視化
21世紀(jì),海洋的經(jīng)濟(jì)地位和戰(zhàn)略作用逐漸凸顯,人類(lèi)開(kāi)發(fā)和利用海洋資源的活動(dòng)越來(lái)越頻繁,獲得的海洋數(shù)據(jù)也急劇增多。如何合理有效地管理海量海洋數(shù)據(jù),如何從海量數(shù)據(jù)中快速找到感興趣的數(shù)據(jù),并挖掘出數(shù)據(jù)背后隱藏的信息及所反映的規(guī)律,成為一大難題[1]?;谟?jì)算機(jī)科學(xué)的可視化技術(shù),將人腦分析無(wú)法解釋的數(shù)據(jù)轉(zhuǎn)換為人眼視覺(jué)圖形[2],為這一問(wèn)題提供了有效的解決方法。
NASA World Wind是美國(guó)航空航天管理局(NASA)推出的一款開(kāi)放源代碼的地理軟件,是一個(gè)3D的可視化虛擬地球儀[3],也是最流行的數(shù)字地球平臺(tái)之一,其數(shù)據(jù)和使用都完全免費(fèi)。NASA共提供了World Wind Java SDK和World Wind . NET兩種開(kāi)發(fā)包,本文采用World Wind Java SDK開(kāi)發(fā)包。因?yàn)?,使用Java開(kāi)發(fā)的項(xiàng)目可以通過(guò)Java Applet和Java Web Start兩種方式,快速實(shí)現(xiàn)分布式部署,滿(mǎn)足分布式的數(shù)據(jù)管理與共享服務(wù)要求。
海洋模式數(shù)據(jù)包括海風(fēng)、海浪、海流及海溫等,可以分為有方向(風(fēng)、流)和無(wú)方向(浪、溫)的,也可以分為一層(風(fēng)、浪)和多層(流、溫)的,對(duì)無(wú)方向的數(shù)據(jù)可以采用柵格圖或等值線(xiàn)圖(又可分為填充和不填充2種)的方式進(jìn)行可視化;對(duì)有方向的數(shù)據(jù)可以采用矢量箭頭圖或柵格圖疊加矢量箭頭的形式進(jìn)行可視化;對(duì)多層數(shù)據(jù)可基于三維地形進(jìn)行多層疊加顯示。
基于World Wind的可視化,最終結(jié)果均以其提供的點(diǎn)、線(xiàn)和多邊形圖元進(jìn)行顯示。然而,其自身提供的類(lèi),無(wú)法滿(mǎn)足海洋數(shù)據(jù)可視化的多樣性需求,需要根據(jù)實(shí)際情況,以提供的類(lèi)為基礎(chǔ),自定義相關(guān)類(lèi)及其生成算法。
2.1 柵格圖
柵格圖是海洋數(shù)據(jù)可視化的常用表現(xiàn)形式。模式數(shù)據(jù)是基于規(guī)則格網(wǎng)的,可以選擇每4個(gè)相鄰點(diǎn)構(gòu)成一個(gè)矩形,并以這4個(gè)點(diǎn)的平均值作為該矩形值的方式構(gòu)建柵格圖的基本圖元。但是,這種構(gòu)建方法形成的圖元數(shù)量巨大,而World Wind對(duì)大量圖元的顯示較慢,因此無(wú)法滿(mǎn)足實(shí)際應(yīng)用要求。研究中,基于區(qū)域生長(zhǎng)法[4]的思想,提出了面圖元生長(zhǎng)算法,對(duì)大量面圖元進(jìn)行基于數(shù)據(jù)值的合并。但是,該算法中作為種子數(shù)據(jù)點(diǎn)的選取方法較為復(fù)雜。為了對(duì)該算法進(jìn)行簡(jiǎn)化和改進(jìn),提出了面圖元合并算法。該算法通過(guò)順序遍歷進(jìn)行圖元的合并,規(guī)避了種子數(shù)據(jù)點(diǎn)的選取。
面圖元合并算法的具體執(zhí)行過(guò)程為:用一個(gè)集合保存柵格圖的多邊形圖元,以四鄰點(diǎn)法構(gòu)建的矩形為基礎(chǔ),從右上角開(kāi)始,由上至下、從左到右進(jìn)行區(qū)域掃描。①判斷集合中是否包含與當(dāng)前矩形值相等的多邊形,若不包含,則執(zhí)行步驟②,若包含則執(zhí)行步驟③;②將當(dāng)前矩形作為一個(gè)元素添加到集合中,然后執(zhí)行步驟④;③判斷其是否鄰接,若鄰接則將當(dāng)前矩形與其鄰接的多邊形進(jìn)行合并,并執(zhí)行步驟④,若不鄰接則執(zhí)行步驟②;④判斷是否完成遍歷,若否,則掃描下一個(gè)矩形并重復(fù)步驟①,若是,則進(jìn)行集合內(nèi)多邊形的合并,并結(jié)束整個(gè)流程。
完成上述過(guò)程后,集合中剩余的多邊形就是構(gòu)成柵格圖的全部多邊形圖元,將這些圖元交由Polygon類(lèi)進(jìn)行展現(xiàn)就構(gòu)成了一幅柵格圖。
2.2 矢量箭頭圖
矢量箭頭圖是表達(dá)有方向數(shù)據(jù)(如風(fēng)、流)的最有效方式,它既能表示數(shù)據(jù)的大小分布情況,又能表現(xiàn)出數(shù)據(jù)的流動(dòng)趨勢(shì)。然而,World Wind并未提供矢量箭頭類(lèi)和矢量箭頭的構(gòu)建方法,需要基于提供的曲線(xiàn)類(lèi),自定義矢量箭頭類(lèi)及其構(gòu)建算法。自定義的矢量箭頭類(lèi),類(lèi)屬性包括箭頭顯示坐標(biāo)(x,y)、箭頭長(zhǎng)度L、箭頭方向α(與X軸正軸的夾角)、箭頭尾部長(zhǎng)度l、箭頭尾部與主線(xiàn)間的夾角β;類(lèi)方法包括類(lèi)構(gòu)造函數(shù)、箭頭構(gòu)建方法及箭頭顯示函數(shù)。
圖1 箭頭構(gòu)建示意圖
箭頭構(gòu)建如圖1所示,構(gòu)建算法的具體流程如下:
1)基于X分量和Y分量的大小,計(jì)算出該矢量的大小和方向(與X軸正軸方向的夾角);
2)對(duì)矢量的大小進(jìn)行歸一化;
3)以數(shù)據(jù)點(diǎn)P1為箭頭的起點(diǎn),并根據(jù)P1的坐標(biāo)(x1,y1)和歸一化后的大小和方向計(jì)算箭頭頭部點(diǎn)P2的坐標(biāo)(x2,y2);
4)設(shè)定箭頭尾巴與主線(xiàn)間的夾角和尾巴的長(zhǎng)度,并加上P1、P2的坐標(biāo),計(jì)算出箭頭2個(gè)小尾巴結(jié)尾點(diǎn)P3、P4的坐標(biāo)(x3,y3)和(x4,y4);
5)使用P1、P2點(diǎn)構(gòu)成直線(xiàn)L1,使用P2、P3、P4點(diǎn)構(gòu)成折線(xiàn)L2;
6)結(jié)合L1和L2就組成了一個(gè)矢量箭頭。
對(duì)所有的數(shù)據(jù)點(diǎn)執(zhí)行上述操作,并將得到的矢量箭頭交由提供的Polyline類(lèi)進(jìn)行展現(xiàn)就構(gòu)成了一幅既能表示大小又能表示方向的矢量箭頭圖。
2.3 等值線(xiàn)圖
等值線(xiàn)的生成方法主要有三角網(wǎng)格法[5]和矩形網(wǎng)格法,由于本研究使用的海洋模式數(shù)據(jù)為規(guī)則格網(wǎng)數(shù)據(jù),因此采用矩形格網(wǎng)法進(jìn)行等值線(xiàn)的生成?;谝?guī)則矩形格網(wǎng)的等值線(xiàn)生成算法,可分為3個(gè)步驟:計(jì)算等值點(diǎn)、等值點(diǎn)追蹤和等值線(xiàn)繪制[6]。
圖2所示的數(shù)據(jù)區(qū)域大小為m×n,X(列)方向的序號(hào)為j,Y(行)方向的序號(hào)為i。網(wǎng)格用左下角點(diǎn)的序號(hào)標(biāo)識(shí);邊以左端點(diǎn)或下方端點(diǎn)的序號(hào)進(jìn)行標(biāo)識(shí);點(diǎn)用P(i,j)標(biāo)識(shí);值用V(i,j)標(biāo)識(shí)。矩形網(wǎng)格法等值線(xiàn)生成算法流程如圖3所示。具體步驟如下:
圖2 矩形網(wǎng)格數(shù)據(jù)區(qū)域示意圖
1)計(jì)算等值點(diǎn)。根據(jù)公式(r=H-V(i,j))/(V(i,j+1)-V(i,j)) 的值來(lái)判定(i,j)橫邊上是否有等值點(diǎn);根據(jù)公式r=(H-V(i,j))/(V(i+1,j)-V(i,j))的值來(lái)判定(i,j)縱邊上是否有等值點(diǎn),H為當(dāng)前等值線(xiàn)的值,若0≤r≤1則表示有等值點(diǎn)穿過(guò),并將等值點(diǎn)的信息分別保存在數(shù)組xArray[m][n-1]和yArray[m-1][n]中(圖3a)。
2)等值點(diǎn)追蹤。根據(jù)自下而上、自上而下、自左向右和自右向左4種可能進(jìn)入方向和以當(dāng)前等值點(diǎn)所在邊為基準(zhǔn),從左邊、對(duì)邊和右邊3種可能走出方向,組成多種不同等值線(xiàn)穿過(guò)路徑,按照各自的優(yōu)先追蹤次序和追蹤方法完成等值線(xiàn)的追蹤(圖3b)[7]。
3)等值線(xiàn)繪制。按照先開(kāi)曲線(xiàn)、后閉曲線(xiàn)的順序,根據(jù)等值點(diǎn)追蹤方法進(jìn)行等值點(diǎn)的追蹤。進(jìn)行開(kāi)曲線(xiàn)追蹤時(shí),右邊界的等值點(diǎn)按自右向左,上邊界的等值點(diǎn)按自上而下,左邊界的等值點(diǎn)按自左向右,下邊界的等值點(diǎn)按自下而上的進(jìn)入方向,進(jìn)行等值線(xiàn)的追蹤繪制。進(jìn)行閉曲線(xiàn)追蹤時(shí),按照自左向右的進(jìn)入方向進(jìn)行追蹤。完成等值線(xiàn)追蹤后,只需將得到的等值線(xiàn)交由Polyline類(lèi)進(jìn)行展示,就可構(gòu)成一幅等值線(xiàn)圖。
2.4 基于三維地形的多層疊加圖
海風(fēng)和海浪數(shù)據(jù)只存在于海表,只有一層。而海流、海溫和鹽度等數(shù)據(jù),在不同的深度上都有不同的數(shù)據(jù)。研究中采用的海流、海溫和鹽度數(shù)據(jù)分為多層,因此提出了基于三維地形的海洋環(huán)境數(shù)據(jù)多層可視化形式。以三維地形為底,以海表海水面為頂,加上邊界,便形成了一個(gè)曲面立體。多層海洋數(shù)據(jù)圖層分布在該曲面立體內(nèi)的不同高度層上,每層海洋數(shù)據(jù)圖層采用一個(gè)單獨(dú)的World Wind圖層進(jìn)行管理和控制,可以控制每層數(shù)據(jù)是否顯示,以便詳細(xì)查看其中的某一圖層。
根據(jù)前述可視化方法,從數(shù)據(jù)本身的特點(diǎn)出發(fā),選擇合適的可視化形式??梢暬Y(jié)果展示見(jiàn)圖4。
圖3 矩形網(wǎng)格法等值線(xiàn)生成算法流程圖
NASA World Wind Java SDK本身提供了豐富的點(diǎn)、線(xiàn)及多邊形類(lèi)和接口,可以為海洋數(shù)據(jù)可視化提供有效的方法。然而,由于World Wind對(duì)海量可視化圖元的渲染速度較慢,無(wú)法滿(mǎn)足實(shí)際的應(yīng)用需求。在本研究中,一方面通過(guò)自定義的算法,大量減少了需要可視化渲染的圖元數(shù)量,加快了可視化顯示速度;另一方面,通過(guò)自定義矢量箭頭及等值線(xiàn)的生成算法和基于三維地形的多層可視化圖形顯示形式,豐富了海洋數(shù)據(jù)的可視化形式,滿(mǎn)足了海洋數(shù)據(jù)可視化的多樣性需求。研究中采用的“基于NASA World Wind的海洋數(shù)據(jù)可視化方法”已成功應(yīng)用到南海海洋信息服務(wù)系統(tǒng)中。
圖4 可視化結(jié)果展示
[1] 周海燕.空間數(shù)據(jù)挖掘的研究[D].鄭州:信息工程大學(xué),2003
[2] 任永功,于戈.?dāng)?shù)據(jù)可視化技術(shù)的研究與進(jìn)展[J].計(jì)算機(jī)科學(xué),2004,31(12):92-96
[3] 盧海濱,鄭文鋒,銀正彤,等.NASA World Wind Java SDK數(shù)字地球客戶(hù)端開(kāi)發(fā)[J].測(cè)繪科學(xué),2009,34(3):169-173
[4] 范沖,嚴(yán)林,吳杰.基于World Wind的三維地形可視化算法研究[J].測(cè)繪通報(bào),2013(3):64-66
[5] 孔俊,王佳男,谷文祥,等.基于區(qū)域的自動(dòng)種子區(qū)域生長(zhǎng)法的彩色圖像分割算法[J].東北師大學(xué)報(bào):自然科學(xué)版,2008,40(4):47-51
[6] 徐旭.基于三角網(wǎng)的等值線(xiàn)生成及填充算法[D].長(zhǎng)沙:中南大學(xué),2011
[7] 趙敬和.基于矩形網(wǎng)格法的不規(guī)則區(qū)域的等值線(xiàn)生成與填充算法的研究[D].北京:中國(guó)地質(zhì)大學(xué),2013
P208
B
1672-4623(2015)02-0025-03
10.3969/j.issn.1672-4623.2015.02.010
李爾園,碩士,研究方向?yàn)楹Q蟮乩硇畔⑾到y(tǒng)。
2014-03-07。
項(xiàng)目來(lái)源:國(guó)家高技術(shù)研究發(fā)展計(jì)劃資助項(xiàng)目(2013AA09A506-4)。