張雅靜 柴柏林 李 琦
(1.中國石油大學(華東)海洋與空間信息學院 青島 266580)(2.中國石油大學(華東)計算機科學與技術學院 青島 266580)
科學計算可視化是通過研究計算機工具、技術和系統,把實驗或數值計算獲得的大量抽象數據轉換為人的視覺可以直接感受的計算機圖形圖像,進而進行數據探索和分析[1~2]。由于海洋數據具有多源、異構、多維度、多尺度等特點,將其分為結構化數據和非結構化數據,其中非結構化三角網格數據是海洋數據的研究熱點。海洋標量數據是一類只有數值大小,沒有方向的海洋環境數據。基于三角網格的海洋標量數據可視化是分析其內在規律和特性的有效方法。
我國傳統的可視化平臺大多數是基于單機或是基于C/S架構的,如OSG[3]、EVoGloble等,存在著適用范圍窄,維護更新周期長,數據格式多樣且雜亂等諸多問題。基于Skyline的“中國近海數字海洋信息基礎框架”[4]采用的是B/S架構,傾向于信息的發布和業務數據的展示等,但是要下載安裝插件;康林沖[5]等基于B/S架構實現的海洋環境數據可視化是利用SkylineGlobe可視化插件,給瀏覽網頁以及使用過程中帶來了很大的不便。綜上所述,傳統的C/S架構開發周期長,且只適用于二維平面,而B/S架構適用于三維立體,擴展性強,地圖服務數據格式統一,且隨著OpenGL技術和HTML5技術的快速發展,基于B/S架構系統可視化逐步成為眾多領域的研究熱點,并且無插件可視化的研究應用較少。
Cesium[6~7]是國外一個基于JavaScript編寫的使用WebGL的地圖引擎,是一款開源的三維地球框架。它支持三維地球(3D),二維地圖(2D)以及2.5D哥倫布視圖(2.5D)形式的地圖展示,可以自行繪制高亮區域,并提供良好的觸摸支持,通過CZML創建數據驅動的時間動態場景,高分辨率的世界地形可視化,使用WMS,TMS,Bind以及ESRI的標準繪制影像圖層。Cesium支持KML,GeoJSON和TopoJSON等多種數據格式,且作為一個開源的框架,是基于OpenGL生成三維虛擬地球中比較活躍的,在眾多領域都有廣泛的應用。
綜上所述,本文采用B/S架構,研究了非結構化三角網格數據可視化方法,設計并實現了基于Cesium框架的非結構化三角網格標量數據可視化系統。以全球海洋表面溫度、海平面高度數據等為例,進行可視化系統的驗證。
基于非結構化三角網格的海洋標量數據三維可視化系統是以Cesium三維虛擬地球為依托,采用JavaScript開發語言和OpenGL圖形渲染引擎進行開發,系統采用(B/S)瀏覽器/服務器模式架構[8]。
(B/S)瀏覽器/服務器架構下三維標量數據可視化系統主要是對海洋數據中只有數值大小沒有方向的非結構化三角網格標量數據進行可視化,例如海表溫度、海水鹽度、海平面高度、海水密度等。該系統主要分為瀏覽器端和服務器端兩部分。系統設計的總體框架如圖1所示。

圖1 B/S架構下三維可視化系統總體框架
瀏覽器端可以去訪問服務器端產生的基礎地理數據、三角網格海洋標量數據等信息,服務器端主要是提供數據發布、地圖、分析查詢等服務功能,實現瀏覽器端對多種數據的請求與響應。瀏覽器端基于Cesium三維虛擬地球的API進行可視化渲染與繪制,用戶可以根據自身的需求查詢相應數據并進行可視化,選取想要的部分進行可視化展示和分析。
基于海洋標量數據的特點以及系統可視化的需求,將分為數據預處理、可視化映射標準、可視化渲染以及可視化應用展示等主要功能模塊。
數據預處理模塊是對基于非結構化三角網格的海洋標量數據進行預處理,包括NC文件的解析、投影坐標的轉換、插值以及裁剪等過程,從而形成系統可解析的格式。系統模塊支持NetCDF、文本等數據格式的預處理。對于非結構化三角網格數據,由于非結構化三角網格密度不一、無法直接通過經緯度坐標來獲取所在網格,因此將NC文件進行解析,建立邊列表數據結構。
可視化映射標準模塊是采用自定義的色彩映射表繪制海洋標量數據,根據數據自身的特性采用不同階數的漸變色。以藍色為代表的冷色調表示低數值,以紅色為代表的暖色調表示高數值。色彩映射漸變表如表1所示。

表1 RGB色彩映射漸變表
可視化渲染模塊主要是基于OpenGL3D圖形接口來進行渲染繪制,允許跨平臺開發。采用基于幾何圖形對象的點、面可視化方法進行表達[8]。點方式的可視化是直接以點狀對象進行海洋標量數據的可視化表達,以不同的顏色和大小來表示海洋標量數值[9]。面方式可視化是將不同的點進行插值計算得出相應的顏色,以三角網格面的形式進行展示[10~11]。
可視化應用展示模塊是將海面溫度數據以及海平面高度數據等不同海洋標量數據進行三維可視化顯示。
WGS-84坐標系[12](World Geodetic System-1984 Coordinate System)是國際上通用的地心坐標系,也稱為大地坐標系,坐標原點是地球的質心,用經緯度來表示地球上物體的位置,本文所使用的NETCDF文件數據就是用經緯度來表示的。
瀏覽器端為了實現海洋標量數據可視化,必須將地心坐標系轉換為OpenGL可以支持的坐標系。首先,需要將以經緯度坐標形式存儲的NC文件數據轉換為地心地固坐標系(ECEF坐標系),其轉換形式如式(1)所示。

式(2)中,?代表經度值,θ代表緯度值,h代表高度值,a、b和e分別代表WGS-84坐標系中定義的地球長半軸(固定值14960m)、短半軸(固定值14958m)和離心率(固定值0.0167)。
其次,要完成圖像的繪制,須利用頂點著色器將地心地固坐標系(ECEF坐標系)轉換為用于圖像顯示的屏幕坐標系。如圖2所示。

圖2 屏幕坐標系轉換流程圖
無監督分箱[13~14]是指將連續的特征屬性轉換為離散的標稱屬性,在建立分類模型時,對連續變量離散化,使模型更加穩定,易于快速迭代,同時增強對異常數據的魯棒性。一般地,它是一種離散化的形式,也可以是分組,比如,折線圖、直方圖等。
本文采用的是基于無監督的離散劃分方法,不需要引入目標值,其具體步驟為
1)對整體特征數據進行排序;
2)對所有的數據遍歷一遍,尋找合適的分割點;
3)根據分割點確定連續值的取值范圍;
4)當達到停止準則時終止離散過程,否則繼續。
層次細節(Levels of Details,LOD)技術[15]最早是由Clark提出的,目前廣泛應用于數據可視化,本系統在數據的可視化顯示中運用層次細節技術。
層次細節技術依據不同的視點選擇合適的層次細節進行繪制,符合人的視覺特性。當離視點比較近時選擇高分辨率的LOD進行繪制顯示[16];當遠離視點時,屏幕上只有幾個像素,采用插值、重采樣等方法轉換為低分辨率的數據,用低分辨率的LOD進行繪制顯示即可。沒有必要繪制全部的細節層次,這樣既保證了觀測的效果,又加速了數據的可視化顯示[17]。
直方圖均衡化是一種有效的圖像增強技術,是處理灰度圖像以及灰度變換的一個重要方法[18],是以累計分布函數變換為基礎的直方圖修正法[19]。直方圖均衡化的基本思想是通過重新均勻地分布各灰度值來增強圖像的對比度。對圖像中像素個數較多的灰度值進行展寬操作,較少的灰度值進行合并操作,從而增大對比度,使圖像更加清晰。
本文是基于直方圖均衡化思想,先將基于非結構化的海洋標量數據可視化圖轉換成灰度圖像,利用直方圖均衡化原理重新分配像素值,把圖像中灰度直方圖從比較集中的區域變成均勻分布,從而使可視化圖像均勻清晰的分布。
本文使用Cesium開源三維地球框架,基于JavaScript開發語言和OpenGL相關庫,實現三角網格海洋標量數據可視化。實驗的PC配置為:操作系統為64bit的Windows10,處理器為Intel(R)Core(TM)i7-4702MQ,內存為16GB,顯卡為NVIDIA GeForce GTX 760M,瀏覽器為Google Chrome。數據集是海洋模式FVCOM輸出的全球海洋表面標量數據集(溫度、鹽度、海平面高度等),該數據集可提供某一時刻的全球海表面數據,數據結構為非結構化三角網格形式。整體流程圖如圖3所示。

圖3 基于非結構化三角網格的海洋標量數據可視化流程圖
海洋標量數據是一種只有大小沒有方向的數據類型[20],根據海洋數據類型和環境要素屬性的不同,可以將可視化方法分為某一時刻曲線圖、直方圖以及大面圖等。某一時刻曲線圖是指基于全球三角網格數據類型的不同海洋環境要素在某一時刻的統計分布圖,本文分別以海面溫度和海平面高度數據為例,進行海洋標量數據的可視化表達,如圖4所示。

圖4 全球海洋標量數據統計分布圖
直方圖是指將全球非結構化三角網格數據進行排序,經過無監督分箱把不同海洋環境要素(海面溫度、海平面高度)數據按照依次遞增的順序進行排序分組,根據不同海洋環境要素數據本身的特性進行類別的劃分,形成不同類別的可視化直方圖,分別如圖5(a)、(b)所示。

圖5 不同海洋環境要素類別可視化圖
從上圖可以看出,不同海洋環境要素的數據分布情況完全不同,全球海面溫度(SST)分布范圍相對均勻,全球海面高度(SSH)主要集中在0m附近,這是因為海平面高度是圍繞海面上下波動。
系統是以三角網格面積基元為單位進行三維可視化,在三維場景中進行不同海洋要素的可視化表達,不同的顏色或大小表示海洋要素值。如圖6所示,分別展示了海面溫度(SST)和海平面高度(SSH)的三維可視化效果。顏色深淺表示要素值高低。同時采用了無監督分箱、層次細節和直方圖均衡化思想,實現了非結構化三角網格數據的可視化,提高了可視化的效率,增強了可視化的效果。

圖6 非結構化三角網格數據三維可視化
本文采用B/S架構,基于Cesium實現了非結構化三角網格的海洋標量數據的三維可視化系統。針對非結構化三角網格數據的特性,結合三維虛擬地球引擎,對海洋標量數據進行了可視化方法的研究及其實現。詳細闡述了可視化系統的體系架構和技術實現。并以海面溫度和海平面高度數據為對象驗證了所提方法的可行性與效果,基本滿足了可視化的需求。同時也為其他海洋要素的數據可視化分析提供了思路,隨著海洋領域需求的不斷發展與壯大,在進一步完善本系統的同時,將逐步研究海洋矢量數據的可視化表達與分析。