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