張雅靜 柴柏林 李 琦
(1.中國石油大學(xué)(華東)海洋與空間信息學(xué)院 青島 266580)(2.中國石油大學(xué)(華東)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 青島 266580)
科學(xué)計(jì)算可視化是通過研究計(jì)算機(jī)工具、技術(shù)和系統(tǒng),把實(shí)驗(yàn)或數(shù)值計(jì)算獲得的大量抽象數(shù)據(jù)轉(zhuǎn)換為人的視覺可以直接感受的計(jì)算機(jī)圖形圖像,進(jìn)而進(jìn)行數(shù)據(jù)探索和分析[1~2]。由于海洋數(shù)據(jù)具有多源、異構(gòu)、多維度、多尺度等特點(diǎn),將其分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),其中非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)是海洋數(shù)據(jù)的研究熱點(diǎn)。海洋標(biāo)量數(shù)據(jù)是一類只有數(shù)值大小,沒有方向的海洋環(huán)境數(shù)據(jù)。基于三角網(wǎng)格的海洋標(biāo)量數(shù)據(jù)可視化是分析其內(nèi)在規(guī)律和特性的有效方法。
我國傳統(tǒng)的可視化平臺(tái)大多數(shù)是基于單機(jī)或是基于C/S架構(gòu)的,如OSG[3]、EVoGloble等,存在著適用范圍窄,維護(hù)更新周期長,數(shù)據(jù)格式多樣且雜亂等諸多問題?;赟kyline的“中國近海數(shù)字海洋信息基礎(chǔ)框架”[4]采用的是B/S架構(gòu),傾向于信息的發(fā)布和業(yè)務(wù)數(shù)據(jù)的展示等,但是要下載安裝插件;康林沖[5]等基于B/S架構(gòu)實(shí)現(xiàn)的海洋環(huán)境數(shù)據(jù)可視化是利用SkylineGlobe可視化插件,給瀏覽網(wǎng)頁以及使用過程中帶來了很大的不便。綜上所述,傳統(tǒng)的C/S架構(gòu)開發(fā)周期長,且只適用于二維平面,而B/S架構(gòu)適用于三維立體,擴(kuò)展性強(qiáng),地圖服務(wù)數(shù)據(jù)格式統(tǒng)一,且隨著OpenGL技術(shù)和HTML5技術(shù)的快速發(fā)展,基于B/S架構(gòu)系統(tǒng)可視化逐步成為眾多領(lǐng)域的研究熱點(diǎn),并且無插件可視化的研究應(yīng)用較少。
Cesium[6~7]是國外一個(gè)基于JavaScript編寫的使用WebGL的地圖引擎,是一款開源的三維地球框架。它支持三維地球(3D),二維地圖(2D)以及2.5D哥倫布視圖(2.5D)形式的地圖展示,可以自行繪制高亮區(qū)域,并提供良好的觸摸支持,通過CZML創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的時(shí)間動(dòng)態(tài)場景,高分辨率的世界地形可視化,使用WMS,TMS,Bind以及ESRI的標(biāo)準(zhǔn)繪制影像圖層。Cesium支持KML,GeoJSON和TopoJSON等多種數(shù)據(jù)格式,且作為一個(gè)開源的框架,是基于OpenGL生成三維虛擬地球中比較活躍的,在眾多領(lǐng)域都有廣泛的應(yīng)用。
綜上所述,本文采用B/S架構(gòu),研究了非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)可視化方法,設(shè)計(jì)并實(shí)現(xiàn)了基于Cesium框架的非結(jié)構(gòu)化三角網(wǎng)格標(biāo)量數(shù)據(jù)可視化系統(tǒng)。以全球海洋表面溫度、海平面高度數(shù)據(jù)等為例,進(jìn)行可視化系統(tǒng)的驗(yàn)證。
基于非結(jié)構(gòu)化三角網(wǎng)格的海洋標(biāo)量數(shù)據(jù)三維可視化系統(tǒng)是以Cesium三維虛擬地球?yàn)橐劳校捎肑avaScript開發(fā)語言和OpenGL圖形渲染引擎進(jìn)行開發(fā),系統(tǒng)采用(B/S)瀏覽器/服務(wù)器模式架構(gòu)[8]。
(B/S)瀏覽器/服務(wù)器架構(gòu)下三維標(biāo)量數(shù)據(jù)可視化系統(tǒng)主要是對海洋數(shù)據(jù)中只有數(shù)值大小沒有方向的非結(jié)構(gòu)化三角網(wǎng)格標(biāo)量數(shù)據(jù)進(jìn)行可視化,例如海表溫度、海水鹽度、海平面高度、海水密度等。該系統(tǒng)主要分為瀏覽器端和服務(wù)器端兩部分。系統(tǒng)設(shè)計(jì)的總體框架如圖1所示。
圖1 B/S架構(gòu)下三維可視化系統(tǒng)總體框架
瀏覽器端可以去訪問服務(wù)器端產(chǎn)生的基礎(chǔ)地理數(shù)據(jù)、三角網(wǎng)格海洋標(biāo)量數(shù)據(jù)等信息,服務(wù)器端主要是提供數(shù)據(jù)發(fā)布、地圖、分析查詢等服務(wù)功能,實(shí)現(xiàn)瀏覽器端對多種數(shù)據(jù)的請求與響應(yīng)。瀏覽器端基于Cesium三維虛擬地球的API進(jìn)行可視化渲染與繪制,用戶可以根據(jù)自身的需求查詢相應(yīng)數(shù)據(jù)并進(jìn)行可視化,選取想要的部分進(jìn)行可視化展示和分析。
基于海洋標(biāo)量數(shù)據(jù)的特點(diǎn)以及系統(tǒng)可視化的需求,將分為數(shù)據(jù)預(yù)處理、可視化映射標(biāo)準(zhǔn)、可視化渲染以及可視化應(yīng)用展示等主要功能模塊。
數(shù)據(jù)預(yù)處理模塊是對基于非結(jié)構(gòu)化三角網(wǎng)格的海洋標(biāo)量數(shù)據(jù)進(jìn)行預(yù)處理,包括NC文件的解析、投影坐標(biāo)的轉(zhuǎn)換、插值以及裁剪等過程,從而形成系統(tǒng)可解析的格式。系統(tǒng)模塊支持NetCDF、文本等數(shù)據(jù)格式的預(yù)處理。對于非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù),由于非結(jié)構(gòu)化三角網(wǎng)格密度不一、無法直接通過經(jīng)緯度坐標(biāo)來獲取所在網(wǎng)格,因此將NC文件進(jìn)行解析,建立邊列表數(shù)據(jù)結(jié)構(gòu)。
可視化映射標(biāo)準(zhǔn)模塊是采用自定義的色彩映射表繪制海洋標(biāo)量數(shù)據(jù),根據(jù)數(shù)據(jù)自身的特性采用不同階數(shù)的漸變色。以藍(lán)色為代表的冷色調(diào)表示低數(shù)值,以紅色為代表的暖色調(diào)表示高數(shù)值。色彩映射漸變表如表1所示。
表1 RGB色彩映射漸變表
可視化渲染模塊主要是基于OpenGL3D圖形接口來進(jìn)行渲染繪制,允許跨平臺(tái)開發(fā)。采用基于幾何圖形對象的點(diǎn)、面可視化方法進(jìn)行表達(dá)[8]。點(diǎn)方式的可視化是直接以點(diǎn)狀對象進(jìn)行海洋標(biāo)量數(shù)據(jù)的可視化表達(dá),以不同的顏色和大小來表示海洋標(biāo)量數(shù)值[9]。面方式可視化是將不同的點(diǎn)進(jìn)行插值計(jì)算得出相應(yīng)的顏色,以三角網(wǎng)格面的形式進(jìn)行展示[10~11]。
可視化應(yīng)用展示模塊是將海面溫度數(shù)據(jù)以及海平面高度數(shù)據(jù)等不同海洋標(biāo)量數(shù)據(jù)進(jìn)行三維可視化顯示。
WGS-84坐標(biāo)系[12](World Geodetic System-1984 Coordinate System)是國際上通用的地心坐標(biāo)系,也稱為大地坐標(biāo)系,坐標(biāo)原點(diǎn)是地球的質(zhì)心,用經(jīng)緯度來表示地球上物體的位置,本文所使用的NETCDF文件數(shù)據(jù)就是用經(jīng)緯度來表示的。
瀏覽器端為了實(shí)現(xiàn)海洋標(biāo)量數(shù)據(jù)可視化,必須將地心坐標(biāo)系轉(zhuǎn)換為OpenGL可以支持的坐標(biāo)系。首先,需要將以經(jīng)緯度坐標(biāo)形式存儲(chǔ)的NC文件數(shù)據(jù)轉(zhuǎn)換為地心地固坐標(biāo)系(ECEF坐標(biāo)系),其轉(zhuǎn)換形式如式(1)所示。
式(2)中,?代表經(jīng)度值,θ代表緯度值,h代表高度值,a、b和e分別代表WGS-84坐標(biāo)系中定義的地球長半軸(固定值14960m)、短半軸(固定值14958m)和離心率(固定值0.0167)。
其次,要完成圖像的繪制,須利用頂點(diǎn)著色器將地心地固坐標(biāo)系(ECEF坐標(biāo)系)轉(zhuǎn)換為用于圖像顯示的屏幕坐標(biāo)系。如圖2所示。
圖2 屏幕坐標(biāo)系轉(zhuǎn)換流程圖
無監(jiān)督分箱[13~14]是指將連續(xù)的特征屬性轉(zhuǎn)換為離散的標(biāo)稱屬性,在建立分類模型時(shí),對連續(xù)變量離散化,使模型更加穩(wěn)定,易于快速迭代,同時(shí)增強(qiáng)對異常數(shù)據(jù)的魯棒性。一般地,它是一種離散化的形式,也可以是分組,比如,折線圖、直方圖等。
本文采用的是基于無監(jiān)督的離散劃分方法,不需要引入目標(biāo)值,其具體步驟為
1)對整體特征數(shù)據(jù)進(jìn)行排序;
2)對所有的數(shù)據(jù)遍歷一遍,尋找合適的分割點(diǎn);
3)根據(jù)分割點(diǎn)確定連續(xù)值的取值范圍;
4)當(dāng)達(dá)到停止準(zhǔn)則時(shí)終止離散過程,否則繼續(xù)。
層次細(xì)節(jié)(Levels of Details,LOD)技術(shù)[15]最早是由Clark提出的,目前廣泛應(yīng)用于數(shù)據(jù)可視化,本系統(tǒng)在數(shù)據(jù)的可視化顯示中運(yùn)用層次細(xì)節(jié)技術(shù)。
層次細(xì)節(jié)技術(shù)依據(jù)不同的視點(diǎn)選擇合適的層次細(xì)節(jié)進(jìn)行繪制,符合人的視覺特性。當(dāng)離視點(diǎn)比較近時(shí)選擇高分辨率的LOD進(jìn)行繪制顯示[16];當(dāng)遠(yuǎn)離視點(diǎn)時(shí),屏幕上只有幾個(gè)像素,采用插值、重采樣等方法轉(zhuǎn)換為低分辨率的數(shù)據(jù),用低分辨率的LOD進(jìn)行繪制顯示即可。沒有必要繪制全部的細(xì)節(jié)層次,這樣既保證了觀測的效果,又加速了數(shù)據(jù)的可視化顯示[17]。
直方圖均衡化是一種有效的圖像增強(qiáng)技術(shù),是處理灰度圖像以及灰度變換的一個(gè)重要方法[18],是以累計(jì)分布函數(shù)變換為基礎(chǔ)的直方圖修正法[19]。直方圖均衡化的基本思想是通過重新均勻地分布各灰度值來增強(qiáng)圖像的對比度。對圖像中像素個(gè)數(shù)較多的灰度值進(jìn)行展寬操作,較少的灰度值進(jìn)行合并操作,從而增大對比度,使圖像更加清晰。
本文是基于直方圖均衡化思想,先將基于非結(jié)構(gòu)化的海洋標(biāo)量數(shù)據(jù)可視化圖轉(zhuǎn)換成灰度圖像,利用直方圖均衡化原理重新分配像素值,把圖像中灰度直方圖從比較集中的區(qū)域變成均勻分布,從而使可視化圖像均勻清晰的分布。
本文使用Cesium開源三維地球框架,基于JavaScript開發(fā)語言和OpenGL相關(guān)庫,實(shí)現(xiàn)三角網(wǎng)格海洋標(biāo)量數(shù)據(jù)可視化。實(shí)驗(yàn)的PC配置為:操作系統(tǒng)為64bit的Windows10,處理器為Intel(R)Core(TM)i7-4702MQ,內(nèi)存為16GB,顯卡為NVIDIA GeForce GTX 760M,瀏覽器為Google Chrome。數(shù)據(jù)集是海洋模式FVCOM輸出的全球海洋表面標(biāo)量數(shù)據(jù)集(溫度、鹽度、海平面高度等),該數(shù)據(jù)集可提供某一時(shí)刻的全球海表面數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)為非結(jié)構(gòu)化三角網(wǎng)格形式。整體流程圖如圖3所示。
圖3 基于非結(jié)構(gòu)化三角網(wǎng)格的海洋標(biāo)量數(shù)據(jù)可視化流程圖
海洋標(biāo)量數(shù)據(jù)是一種只有大小沒有方向的數(shù)據(jù)類型[20],根據(jù)海洋數(shù)據(jù)類型和環(huán)境要素屬性的不同,可以將可視化方法分為某一時(shí)刻曲線圖、直方圖以及大面圖等。某一時(shí)刻曲線圖是指基于全球三角網(wǎng)格數(shù)據(jù)類型的不同海洋環(huán)境要素在某一時(shí)刻的統(tǒng)計(jì)分布圖,本文分別以海面溫度和海平面高度數(shù)據(jù)為例,進(jìn)行海洋標(biāo)量數(shù)據(jù)的可視化表達(dá),如圖4所示。
圖4 全球海洋標(biāo)量數(shù)據(jù)統(tǒng)計(jì)分布圖
直方圖是指將全球非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)進(jìn)行排序,經(jīng)過無監(jiān)督分箱把不同海洋環(huán)境要素(海面溫度、海平面高度)數(shù)據(jù)按照依次遞增的順序進(jìn)行排序分組,根據(jù)不同海洋環(huán)境要素?cái)?shù)據(jù)本身的特性進(jìn)行類別的劃分,形成不同類別的可視化直方圖,分別如圖5(a)、(b)所示。
圖5 不同海洋環(huán)境要素類別可視化圖
從上圖可以看出,不同海洋環(huán)境要素的數(shù)據(jù)分布情況完全不同,全球海面溫度(SST)分布范圍相對均勻,全球海面高度(SSH)主要集中在0m附近,這是因?yàn)楹F矫娓叨仁菄@海面上下波動(dòng)。
系統(tǒng)是以三角網(wǎng)格面積基元為單位進(jìn)行三維可視化,在三維場景中進(jìn)行不同海洋要素的可視化表達(dá),不同的顏色或大小表示海洋要素值。如圖6所示,分別展示了海面溫度(SST)和海平面高度(SSH)的三維可視化效果。顏色深淺表示要素值高低。同時(shí)采用了無監(jiān)督分箱、層次細(xì)節(jié)和直方圖均衡化思想,實(shí)現(xiàn)了非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)的可視化,提高了可視化的效率,增強(qiáng)了可視化的效果。
圖6 非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)三維可視化
本文采用B/S架構(gòu),基于Cesium實(shí)現(xiàn)了非結(jié)構(gòu)化三角網(wǎng)格的海洋標(biāo)量數(shù)據(jù)的三維可視化系統(tǒng)。針對非結(jié)構(gòu)化三角網(wǎng)格數(shù)據(jù)的特性,結(jié)合三維虛擬地球引擎,對海洋標(biāo)量數(shù)據(jù)進(jìn)行了可視化方法的研究及其實(shí)現(xiàn)。詳細(xì)闡述了可視化系統(tǒng)的體系架構(gòu)和技術(shù)實(shí)現(xiàn)。并以海面溫度和海平面高度數(shù)據(jù)為對象驗(yàn)證了所提方法的可行性與效果,基本滿足了可視化的需求。同時(shí)也為其他海洋要素的數(shù)據(jù)可視化分析提供了思路,隨著海洋領(lǐng)域需求的不斷發(fā)展與壯大,在進(jìn)一步完善本系統(tǒng)的同時(shí),將逐步研究海洋矢量數(shù)據(jù)的可視化表達(dá)與分析。