郭 鹍 趙甲文 陶冠時(shí) 蔣曉龍
(1.中船航??萍加邢挢?zé)任公司 北京 100070)(2.天津航海儀器研究所 天津 300131)
利用傳統(tǒng)氣象環(huán)境系統(tǒng)進(jìn)行輔助決策需要非常專業(yè)知識(shí),隨著航運(yùn)業(yè)的發(fā)展,岸海一體及智能航行技術(shù)呈現(xiàn)跨越性的進(jìn)步,基于大數(shù)據(jù)氣象信息輔助決策已經(jīng)由一種趨勢(shì)轉(zhuǎn)變?yōu)楝F(xiàn)實(shí)。通過衛(wèi)星通信方式,傳輸基于grib2格式的氣象要素[1],實(shí)時(shí)掌握世界范圍內(nèi)的天氣動(dòng)態(tài),對(duì)航海人員的日程規(guī)劃、航海路線制定、貨物裝卸、室外活動(dòng)起著非常大的輔助作用[2]。為了保證航海工作人員能以形象化的手段獲取所制定航線范圍內(nèi)的天氣狀態(tài),本文采用質(zhì)點(diǎn)運(yùn)動(dòng)動(dòng)畫算法以及標(biāo)量渲染線性插值算法,形象地展示了全球范圍內(nèi)海洋氣象環(huán)境各種氣象要素的質(zhì)點(diǎn)運(yùn)動(dòng)或渲染[3],最后形成海洋氣象演示系統(tǒng),船舶駕駛?cè)藛T可以通過該演示系統(tǒng)觀察周邊海域以及所關(guān)心海域的氣象信息,幫助其及時(shí)作出決策。
海洋氣象演示系統(tǒng)采用B/S結(jié)構(gòu)進(jìn)行設(shè)計(jì)[2],客戶端采用使用SWT瀏覽器組件進(jìn)行設(shè)計(jì)。SWT瀏覽器組件提供了在Java應(yīng)用程序中內(nèi)嵌瀏覽器應(yīng)用,并可通過Java API與瀏覽器自身進(jìn)行交互,通過在客戶端程序內(nèi)嵌一個(gè)內(nèi)置瀏覽器完成軟件渲染和演示[7,15]。
海洋氣象演示系統(tǒng)所解析的氣象數(shù)據(jù)源來自于美國國家環(huán)境預(yù)測(cè)中心全球預(yù)報(bào)系統(tǒng),其數(shù)據(jù)格式為國際氣象組織規(guī)定的標(biāo)準(zhǔn)文件格式grib2,對(duì)grib2編碼進(jìn)行分析、解析其中的相關(guān)氣象數(shù)據(jù),然后分類處理并轉(zhuǎn)換為Json數(shù)據(jù)格式。Json數(shù)據(jù)比較方便數(shù)據(jù)庫應(yīng)用,B/S客戶端將Json數(shù)據(jù)渲染到瀏覽器頁面。
全球海洋氣象演示系統(tǒng)在啟動(dòng)之后首先會(huì)到指定網(wǎng)址上下載grib2數(shù)據(jù),存放到指定的目錄下,也可以直接讀取從外部磁盤導(dǎo)入的grib2文件。當(dāng)解析文件時(shí),則調(diào)用Grib2json系統(tǒng)進(jìn)行解析,解析完成之后,全球海洋氣象演示系統(tǒng)會(huì)把json文件存放到自己的publicdata路徑下,系統(tǒng)按照類別(大氣或海洋、時(shí)間、分辨率)去讀取合適的json文件來進(jìn)行渲染,最終在高清屏幕上以可視化的方式進(jìn)行展示,包括風(fēng)速、渦旋、垂直速率、溫度、相對(duì)濕度、云混合率、可降水量、云水量、洋流等,其中,風(fēng)速矢量、洋流矢量需要以動(dòng)畫形式展示出來。并通過按鈕對(duì)氣象要素按照海拔、分辨率、時(shí)間來進(jìn)行自由切換,完成各類氣象數(shù)據(jù)的瀏覽、漫游、查詢、顯示功能,并根據(jù)不同類型的氣象數(shù)據(jù)提供不同渲染模式。
海洋氣象演示系統(tǒng)中通信和信息傳輸主要依靠移動(dòng)通信網(wǎng)絡(luò)和移動(dòng)衛(wèi)星網(wǎng)絡(luò)進(jìn)行保障,移動(dòng)衛(wèi)星網(wǎng)絡(luò)系統(tǒng)采用VSAT通信或者Inmarsat通信系統(tǒng)[9~10]。Inmarsat通信系統(tǒng)是由國際海事衛(wèi)星組織(Inmarsat)自1970年代開始發(fā)展的衛(wèi)星移動(dòng)通信系統(tǒng),可覆蓋全球除兩極區(qū)之外的全部地區(qū)。最高速率可達(dá) 492 kbit/s[13~14],其成本相對(duì)較高??紤]成本問題,在離岸較近的情況下,氣象數(shù)據(jù)下載會(huì)選用陸地的3G/4G網(wǎng)絡(luò),在遠(yuǎn)洋時(shí)優(yōu)先使用VSAT通信以及Inmarsat通信系統(tǒng)提供的衛(wèi)星網(wǎng)絡(luò)[12]。
全球海洋氣象演示系統(tǒng)的工作流程如圖1所示。
圖1 全球海洋氣象演示系統(tǒng)工作流程
海洋氣象演示系統(tǒng)通過FTP方式連接到美國國家環(huán)境預(yù)測(cè)中心獲取全球預(yù)報(bào)系統(tǒng)數(shù)據(jù),該數(shù)據(jù)提供了4個(gè)分辨率:2.5度分辨率、1度分辨率、0.5度分辨率、0.25度分辨率,海洋氣象演示系統(tǒng)可根據(jù)網(wǎng)絡(luò)狀態(tài)以及實(shí)際網(wǎng)絡(luò)下行速率選用不同數(shù)據(jù)分辨率,因數(shù)據(jù)較大需要采用斷點(diǎn)續(xù)傳,在條件允許的情況下一般選用0.25度分辨率的數(shù)據(jù),數(shù)據(jù)大約197MB,在遠(yuǎn)洋航行時(shí),由于通信成本可采用2.5度分辨率數(shù)據(jù),數(shù)據(jù)約3.7MB。
本文中的海洋氣象演示系統(tǒng)的數(shù)據(jù)為grib2格式,grib2是國際氣象組織的最新標(biāo)準(zhǔn)格式[1],grib2具備更好的自描述性、可擴(kuò)展性和靈活性,與以往的氣象標(biāo)準(zhǔn)數(shù)據(jù)格式相比如GRID或者GARF相比是一種更為方便的傳輸大容量數(shù)據(jù)格式,我國氣象預(yù)報(bào)分析工作也采用該格式數(shù)據(jù)作為參考,歐洲格點(diǎn)報(bào)、地面繪圖報(bào)、正點(diǎn)實(shí)況報(bào)均采用該格式。研究掌握grib2的文件數(shù)據(jù)分析使用可進(jìn)一步拓展全球海洋環(huán)境信息演示系統(tǒng)應(yīng)用范圍。
grib2的文件內(nèi)容是由十六進(jìn)制字符(alphanumeric character)組成的。比如:FF表示十六進(jìn)制的FF,數(shù)值為255,并且是按照字節(jié)依次存放的。每2個(gè)字節(jié)之間會(huì)有空格作為分割符號(hào)。grib2文件是有若干的區(qū)段組成的文件,每個(gè)區(qū)段表示一定的含義,存放一定的數(shù)據(jù)。
grib2的區(qū)段描述如表2所示:
表2 grib2區(qū)段描述
grib2具有多種優(yōu)勢(shì),尤其在多維數(shù)據(jù)描述方面,因此美國NOAA的數(shù)據(jù)包中存儲(chǔ)了多個(gè)格點(diǎn)數(shù)據(jù)、多個(gè)產(chǎn)品,具備相當(dāng)?shù)哪K特性,而且為擴(kuò)展和增加提供方便的途徑[11]。
海洋氣象演示系統(tǒng)頁面渲染分別為氣象要素標(biāo)量渲染和矢量渲染,根據(jù)不同要素渲染選取色彩,通過不同顏色色條的深淺來表達(dá)值域大小,非常直觀。
海洋氣象演示系統(tǒng)的溫度、濕度均為標(biāo)量數(shù)據(jù),在渲染圖上的每個(gè)網(wǎng)格都對(duì)應(yīng)著一個(gè)渲染點(diǎn),根據(jù)數(shù)據(jù)值的范圍渲染出對(duì)應(yīng)的顏色。由于數(shù)據(jù)采樣點(diǎn)是離散的,因此溫度和濕度等信息需要采用算法進(jìn)行插值。
標(biāo)量渲染采用了單線性線性插值[4~5],基本思想是根據(jù)點(diǎn)(x,y)的2個(gè)鄰點(diǎn)灰度值,經(jīng)過線性插值計(jì)算求出(xc,yc),用數(shù)學(xué)方法來描述輸入、輸出圖像點(diǎn)之間的空間關(guān)系時(shí),其幾何運(yùn)算的一般定義為
這種算法是逐象素、逐行地產(chǎn)出輸出圖像。每個(gè)象素的灰度級(jí)由2個(gè)象素參與的插值所唯一確定。這種方法對(duì)于氣象標(biāo)量要素渲染邏輯執(zhí)行更為有效。
如圖2所示,A區(qū)域渲染點(diǎn)可以根據(jù)從json中提取的數(shù)據(jù)進(jìn)行顏色渲染,渲染為天藍(lán)色,B區(qū)域渲染點(diǎn)無值,C區(qū)域渲染點(diǎn)同樣進(jìn)行了顏色渲染,渲染為綠色,那么,此時(shí)B區(qū)域處的每個(gè)渲染點(diǎn)就要利用上述雙線性插值的方法進(jìn)行顏色的過渡渲染,使得A區(qū)域渲染點(diǎn)和B區(qū)域渲染點(diǎn)之間的交匯時(shí)的顏色柔和自然。
圖2 氣象標(biāo)量要素渲染示意圖
矢量渲染用于風(fēng)速和洋流的渲染,而矢量渲染則會(huì)有兩個(gè)值,由這兩個(gè)值確定一條方形的對(duì)角線。
矢量的渲染與其他氣象要素的渲染有所不同,其他分量用標(biāo)量渲染時(shí),每個(gè)點(diǎn)都有一個(gè)對(duì)應(yīng)的渲染值,而矢量渲染則會(huì)有U(U-Component)V(V-Component)兩個(gè)值,由這兩個(gè)值確定一條方形對(duì)角線。實(shí)際情況中,如果存在的每個(gè)矢量都被描繪出來,則會(huì)有非常多的細(xì)微的線條,從效果上來看,就會(huì)混沌不清,不易辨識(shí)。此時(shí)需要從平行的對(duì)角線中抽象出一條,沿著此條對(duì)角線的方向繼續(xù)抽象渲染,用來清晰準(zhǔn)確地表達(dá)矢量走向。并在此線上進(jìn)行粒子描繪,形成加速動(dòng)畫。
矢量的渲染采用了雙線性插值[4~5]進(jìn)行線段抽象,基本思想是根據(jù)點(diǎn)(x,y)的4個(gè)鄰點(diǎn)灰度值,經(jīng)過線性插值計(jì)算求出(x0,y0),用數(shù)學(xué)方法來描述輸入、輸出圖像點(diǎn)之間的空間關(guān)系時(shí),其幾何運(yùn)算的一般定義為
雙線性插值是逐象素、逐行地產(chǎn)出輸出圖像。每個(gè)象素的灰度級(jí)由四個(gè)象素參與的插值所唯一確定。這種方法對(duì)于氣象標(biāo)量要素渲染邏輯執(zhí)行更為有效。如圖3所示。
圖3 雙線性插值示意圖
具體f(x,y)在點(diǎn)P(x,y)的插值算法如下:假設(shè)已知函數(shù) f在 P11=(x1,y1)、P12=(x1,y2),P21=(x2,y1)以及 P22=(x2,y2)四個(gè)點(diǎn)的值。首先在 x 方向進(jìn)行線性插值,得到
然后在y方向進(jìn)行線性插值,得到
最后綜合起來就是雙線性插值最后的結(jié)果:
通過線性插值得到抽象線段F。
以圖4下抽象線段F為例。
圖4 矢量動(dòng)畫運(yùn)行圖示意
此線段抽象出了幾個(gè)主要的點(diǎn),并在此線段上進(jìn)行粒子描繪,亮度通過不同灰度值的白色定義,數(shù)值越大則越接近白色,步驟如下:
第一步:P1(x1,y1)點(diǎn)高亮顯示,假設(shè)灰度值為10。
第二步:P2(x2,y2)點(diǎn)亮度值變?yōu)?10,P1(x1,y1)點(diǎn)變?yōu)樯园档幕叶戎碉@示(灰度值值為5)。
第三步:P3(x3,y3)點(diǎn)灰度值值為 10,P2(x2,y2)點(diǎn)灰度值值為5,P1(x1,y1)點(diǎn)灰度值值為3。
第四步:P4(x4,y4)點(diǎn)灰度值值為 10,P3(x3,y3)點(diǎn)灰度值值為 5,P2(x2,y2)點(diǎn)灰度值值為 3,P1(x1,y1)點(diǎn)灰度值為1。
由上幾步,可以顯示一個(gè)高亮的粒子拖曳著尾巴(顯示劃過的痕跡)從抽象線段上劃過,通過亮度的變化并無限循環(huán),就形成了風(fēng)速的質(zhì)點(diǎn)動(dòng)畫。實(shí)際處理時(shí)可采用整數(shù)進(jìn)行運(yùn)算,本文采用了整數(shù)計(jì)算代替浮點(diǎn)數(shù)運(yùn)算,比如左移11位變11位小數(shù)為整數(shù),頁面渲染實(shí)例如圖5所示。
圖5 頁面渲染示意圖
海洋氣象演示系統(tǒng)其他要素的處理方法也都與風(fēng)、溫度等要素處理辦法類似,這里不再描述,在本系統(tǒng)完成數(shù)據(jù)下載、解析后,通過渲染后的工作界面如圖6所示。
本文首先對(duì)基于全球航行的海洋氣象演示系統(tǒng)設(shè)計(jì)架構(gòu)進(jìn)行了說明,根據(jù)海洋氣象演示系統(tǒng)分析了grib2數(shù)據(jù)。在完成grib2數(shù)據(jù)解析的基礎(chǔ)上,針對(duì)溫度、濕度數(shù)據(jù)采用線性插值渲染,針對(duì)風(fēng)速、風(fēng)向矢量運(yùn)動(dòng)的特點(diǎn),設(shè)計(jì)質(zhì)點(diǎn)動(dòng)畫算法。該演示系統(tǒng)綜合運(yùn)用了計(jì)算機(jī)通訊技術(shù)、圖像處理技術(shù),顯示全球海域的氣象狀態(tài)清晰、簡明并易于學(xué)習(xí),一方面可為船舶系統(tǒng)電子配套設(shè)計(jì)人員作為開展智能船舶設(shè)計(jì)參考,另一方面可輔助航海部門人員知悉航行過程中海洋環(huán)境各個(gè)氣象要素的變化情況,幫助船舶進(jìn)行航路規(guī)劃,規(guī)避航路上危險(xiǎn)天氣。