李爾園,李洪平
(1.中國海洋大學 信息科學與工程學院 海洋技術系,山東 青島 266100)
基于World Wind的海洋數據可視化研究
李爾園1,李洪平1
(1.中國海洋大學 信息科學與工程學院 海洋技術系,山東 青島 266100)

以World Wind提供的類和接口為基礎,設計、開發了柵格圖面圖元、矢量箭頭和等值線生成算法,并進行了可視化實現。此外,還實現了基于三維地形的多層疊加圖。不僅提高了可視化效率,還豐富了World Wind的海洋數據可視化表現形式。研究開發的海洋數據可視化算法,能夠滿足實際應用需求,并已成功應用到南海海洋信息服務系統中。
World Wind;海洋數據;可視化
21世紀,海洋的經濟地位和戰略作用逐漸凸顯,人類開發和利用海洋資源的活動越來越頻繁,獲得的海洋數據也急劇增多。如何合理有效地管理海量海洋數據,如何從海量數據中快速找到感興趣的數據,并挖掘出數據背后隱藏的信息及所反映的規律,成為一大難題[1]?;谟嬎銠C科學的可視化技術,將人腦分析無法解釋的數據轉換為人眼視覺圖形[2],為這一問題提供了有效的解決方法。
NASA World Wind是美國航空航天管理局(NASA)推出的一款開放源代碼的地理軟件,是一個3D的可視化虛擬地球儀[3],也是最流行的數字地球平臺之一,其數據和使用都完全免費。NASA共提供了World Wind Java SDK和World Wind . NET兩種開發包,本文采用World Wind Java SDK開發包。因為,使用Java開發的項目可以通過Java Applet和Java Web Start兩種方式,快速實現分布式部署,滿足分布式的數據管理與共享服務要求。
海洋模式數據包括海風、海浪、海流及海溫等,可以分為有方向(風、流)和無方向(浪、溫)的,也可以分為一層(風、浪)和多層(流、溫)的,對無方向的數據可以采用柵格圖或等值線圖(又可分為填充和不填充2種)的方式進行可視化;對有方向的數據可以采用矢量箭頭圖或柵格圖疊加矢量箭頭的形式進行可視化;對多層數據可基于三維地形進行多層疊加顯示。
基于World Wind的可視化,最終結果均以其提供的點、線和多邊形圖元進行顯示。然而,其自身提供的類,無法滿足海洋數據可視化的多樣性需求,需要根據實際情況,以提供的類為基礎,自定義相關類及其生成算法。
2.1 柵格圖
柵格圖是海洋數據可視化的常用表現形式。模式數據是基于規則格網的,可以選擇每4個相鄰點構成一個矩形,并以這4個點的平均值作為該矩形值的方式構建柵格圖的基本圖元。但是,這種構建方法形成的圖元數量巨大,而World Wind對大量圖元的顯示較慢,因此無法滿足實際應用要求。研究中,基于區域生長法[4]的思想,提出了面圖元生長算法,對大量面圖元進行基于數據值的合并。但是,該算法中作為種子數據點的選取方法較為復雜。為了對該算法進行簡化和改進,提出了面圖元合并算法。該算法通過順序遍歷進行圖元的合并,規避了種子數據點的選取。
面圖元合并算法的具體執行過程為:用一個集合保存柵格圖的多邊形圖元,以四鄰點法構建的矩形為基礎,從右上角開始,由上至下、從左到右進行區域掃描。①判斷集合中是否包含與當前矩形值相等的多邊形,若不包含,則執行步驟②,若包含則執行步驟③;②將當前矩形作為一個元素添加到集合中,然后執行步驟④;③判斷其是否鄰接,若鄰接則將當前矩形與其鄰接的多邊形進行合并,并執行步驟④,若不鄰接則執行步驟②;④判斷是否完成遍歷,若否,則掃描下一個矩形并重復步驟①,若是,則進行集合內多邊形的合并,并結束整個流程。
完成上述過程后,集合中剩余的多邊形就是構成柵格圖的全部多邊形圖元,將這些圖元交由Polygon類進行展現就構成了一幅柵格圖。
2.2 矢量箭頭圖
矢量箭頭圖是表達有方向數據(如風、流)的最有效方式,它既能表示數據的大小分布情況,又能表現出數據的流動趨勢。然而,World Wind并未提供矢量箭頭類和矢量箭頭的構建方法,需要基于提供的曲線類,自定義矢量箭頭類及其構建算法。自定義的矢量箭頭類,類屬性包括箭頭顯示坐標(x,y)、箭頭長度L、箭頭方向α(與X軸正軸的夾角)、箭頭尾部長度l、箭頭尾部與主線間的夾角β;類方法包括類構造函數、箭頭構建方法及箭頭顯示函數。

圖1 箭頭構建示意圖
箭頭構建如圖1所示,構建算法的具體流程如下:
1)基于X分量和Y分量的大小,計算出該矢量的大小和方向(與X軸正軸方向的夾角);
2)對矢量的大小進行歸一化;
3)以數據點P1為箭頭的起點,并根據P1的坐標(x1,y1)和歸一化后的大小和方向計算箭頭頭部點P2的坐標(x2,y2);
4)設定箭頭尾巴與主線間的夾角和尾巴的長度,并加上P1、P2的坐標,計算出箭頭2個小尾巴結尾點P3、P4的坐標(x3,y3)和(x4,y4);
5)使用P1、P2點構成直線L1,使用P2、P3、P4點構成折線L2;
6)結合L1和L2就組成了一個矢量箭頭。
對所有的數據點執行上述操作,并將得到的矢量箭頭交由提供的Polyline類進行展現就構成了一幅既能表示大小又能表示方向的矢量箭頭圖。
2.3 等值線圖
等值線的生成方法主要有三角網格法[5]和矩形網格法,由于本研究使用的海洋模式數據為規則格網數據,因此采用矩形格網法進行等值線的生成。基于規則矩形格網的等值線生成算法,可分為3個步驟:計算等值點、等值點追蹤和等值線繪制[6]。
圖2所示的數據區域大小為m×n,X(列)方向的序號為j,Y(行)方向的序號為i。網格用左下角點的序號標識;邊以左端點或下方端點的序號進行標識;點用P(i,j)標識;值用V(i,j)標識。矩形網格法等值線生成算法流程如圖3所示。具體步驟如下:

圖2 矩形網格數據區域示意圖
1)計算等值點。根據公式(r=H-V(i,j))/(V(i,j+1)-V(i,j)) 的值來判定(i,j)橫邊上是否有等值點;根據公式r=(H-V(i,j))/(V(i+1,j)-V(i,j))的值來判定(i,j)縱邊上是否有等值點,H為當前等值線的值,若0≤r≤1則表示有等值點穿過,并將等值點的信息分別保存在數組xArray[m][n-1]和yArray[m-1][n]中(圖3a)。
2)等值點追蹤。根據自下而上、自上而下、自左向右和自右向左4種可能進入方向和以當前等值點所在邊為基準,從左邊、對邊和右邊3種可能走出方向,組成多種不同等值線穿過路徑,按照各自的優先追蹤次序和追蹤方法完成等值線的追蹤(圖3b)[7]。
3)等值線繪制。按照先開曲線、后閉曲線的順序,根據等值點追蹤方法進行等值點的追蹤。進行開曲線追蹤時,右邊界的等值點按自右向左,上邊界的等值點按自上而下,左邊界的等值點按自左向右,下邊界的等值點按自下而上的進入方向,進行等值線的追蹤繪制。進行閉曲線追蹤時,按照自左向右的進入方向進行追蹤。完成等值線追蹤后,只需將得到的等值線交由Polyline類進行展示,就可構成一幅等值線圖。
2.4 基于三維地形的多層疊加圖
海風和海浪數據只存在于海表,只有一層。而海流、海溫和鹽度等數據,在不同的深度上都有不同的數據。研究中采用的海流、海溫和鹽度數據分為多層,因此提出了基于三維地形的海洋環境數據多層可視化形式。以三維地形為底,以海表海水面為頂,加上邊界,便形成了一個曲面立體。多層海洋數據圖層分布在該曲面立體內的不同高度層上,每層海洋數據圖層采用一個單獨的World Wind圖層進行管理和控制,可以控制每層數據是否顯示,以便詳細查看其中的某一圖層。
根據前述可視化方法,從數據本身的特點出發,選擇合適的可視化形式??梢暬Y果展示見圖4。

圖3 矩形網格法等值線生成算法流程圖
NASA World Wind Java SDK本身提供了豐富的點、線及多邊形類和接口,可以為海洋數據可視化提供有效的方法。然而,由于World Wind對海量可視化圖元的渲染速度較慢,無法滿足實際的應用需求。在本研究中,一方面通過自定義的算法,大量減少了需要可視化渲染的圖元數量,加快了可視化顯示速度;另一方面,通過自定義矢量箭頭及等值線的生成算法和基于三維地形的多層可視化圖形顯示形式,豐富了海洋數據的可視化形式,滿足了海洋數據可視化的多樣性需求。研究中采用的“基于NASA World Wind的海洋數據可視化方法”已成功應用到南海海洋信息服務系統中。

圖4 可視化結果展示
[1] 周海燕.空間數據挖掘的研究[D].鄭州:信息工程大學,2003
[2] 任永功,于戈.數據可視化技術的研究與進展[J].計算機科學,2004,31(12):92-96
[3] 盧海濱,鄭文鋒,銀正彤,等.NASA World Wind Java SDK數字地球客戶端開發[J].測繪科學,2009,34(3):169-173
[4] 范沖,嚴林,吳杰.基于World Wind的三維地形可視化算法研究[J].測繪通報,2013(3):64-66
[5] 孔俊,王佳男,谷文祥,等.基于區域的自動種子區域生長法的彩色圖像分割算法[J].東北師大學報:自然科學版,2008,40(4):47-51
[6] 徐旭.基于三角網的等值線生成及填充算法[D].長沙:中南大學,2011
[7] 趙敬和.基于矩形網格法的不規則區域的等值線生成與填充算法的研究[D].北京:中國地質大學,2013
P208
B
1672-4623(2015)02-0025-03
10.3969/j.issn.1672-4623.2015.02.010
李爾園,碩士,研究方向為海洋地理信息系統。
2014-03-07。
項目來源:國家高技術研究發展計劃資助項目(2013AA09A506-4)。