吳天亭 徐昕 江曉玲
1. 吉林省氣象信息網(wǎng)絡(luò)中心 吉林 長春 130062;
2. 吉林省氣象災(zāi)害防御技術(shù)中心 吉林 長春 130062
隨著氣象部門的雷達業(yè)務(wù)改革的推進,文件形式的雷達文件已被淘汰,流形式的雷達數(shù)據(jù)占據(jù)了主要業(yè)務(wù)地位,基于B/S設(shè)計的實時監(jiān)測平臺能提供高實時性的雷達監(jiān)測業(yè)務(wù)需求。為了提高數(shù)據(jù)傳輸時效,更好滿足氣象預(yù)報服務(wù)的需求,在天氣雷達數(shù)據(jù)流傳輸?shù)膽?yīng)用端設(shè)計基于B/S的實時監(jiān)測平臺。
新一代天氣雷達數(shù)據(jù)流傳輸依托國內(nèi)氣象通信系統(tǒng)(CTS)數(shù)據(jù)環(huán)境,雷達站通過升級軟件,實現(xiàn)標(biāo)準(zhǔn)格式雷達基數(shù)據(jù)流的輸出和上行傳輸;通過升級省級氣象通信系統(tǒng),增加數(shù)據(jù)流(Socket)傳輸功能,接收雷達站上行基數(shù)據(jù)流雷達站每完成1個徑向掃描,即將該徑向數(shù)據(jù)以TCP Socket方式分發(fā)至省級CTS系統(tǒng),省級接收徑向流數(shù)據(jù)后直接向國家級通信系統(tǒng)轉(zhuǎn)發(fā),同時生成全體掃和逐仰角的基數(shù)據(jù)文件,用于存儲和應(yīng)用[1]。生成的文件存儲到省級氣象數(shù)據(jù)環(huán)境中并通過標(biāo)準(zhǔn)數(shù)據(jù)接口提供給省級業(yè)務(wù)使用。在每次逐仰角掃描的過程中,可實時通過流傳輸方式,將數(shù)據(jù)傳輸至省級CTS系統(tǒng)中,并在CTS系統(tǒng)中生成仰角掃描文件,在本地存儲共享并應(yīng)用于業(yè)務(wù)系統(tǒng)。
目前,吉林省雷達站有長春,白山,白城,吉林,延吉,遼源,松原等7個雷達站點,7部雷達都是CC型號的雷達。目前中國氣象局考核的雷達有6部,沒有吉林雷達[2]。雷達數(shù)據(jù)是預(yù)報業(yè)務(wù)特別是中短期預(yù)報的重要參考數(shù)據(jù)。傳統(tǒng)的雷達監(jiān)測軟件通過在客戶端輪詢的方式,向服務(wù)端詢問是否有新的雷達數(shù)據(jù)產(chǎn)生,如果有再加以顯示。因為雷達傳輸方式的改革,雷達數(shù)據(jù)的壓縮格式也有所改變,例如雷達的每庫的距離有原來的300m更改為現(xiàn)在的150m。在雷達進行流傳輸時,平臺關(guān)注的參數(shù)有庫長,庫數(shù),方位角,仰角,雷達數(shù)據(jù)文件每個數(shù)據(jù)的大小,包括徑向編號等。這些參數(shù)可以保證雷達實時監(jiān)測平臺的運行[3]。
因為雷達流傳輸在吉林省氣象業(yè)務(wù)使用的時間較短,國內(nèi)雷達流C/S系統(tǒng)軟件在全國各省使用比較普遍,基于B/S設(shè)計的實時監(jiān)測平臺在業(yè)務(wù)中還是短板。
2016年,廣州、沈陽、合肥和中國氣象局完成了雷達流傳輸?shù)脑囘\行工作,目前吉林省氣象局雷達流傳輸已經(jīng)正式業(yè)務(wù)運行[4]。雷達數(shù)據(jù)落地格式分為3種,分別是徑向格式、逐仰角格式和全體掃格式。本平臺設(shè)計的是針對逐仰角格式的天氣雷達數(shù)據(jù)。
吉林省氣象業(yè)務(wù)當(dāng)中,天氣雷達每完成一個體掃生成一個基數(shù)據(jù)文件,并通過國內(nèi)氣象同學(xué)系統(tǒng)上傳至國家級,一個完整的體掃過程大約需要6min,體掃完成且形成基數(shù)據(jù)文件后方可傳輸該基數(shù)據(jù)文件。
平臺總體設(shè)計采用前后端分離技術(shù)。
設(shè)計流程為由吉林省天擎平臺將雷達逐仰角數(shù)據(jù)推送到平臺的后臺服務(wù)器,后端程序?qū)⒍M制的雷達流數(shù)據(jù)解析為JSON格式數(shù)據(jù),并落地保存[5]。再有后端程序監(jiān)控JSON文件的內(nèi)容變化,如果JSON文件內(nèi)容出現(xiàn)更改,就通過Web Socket技術(shù)將JSON文件傳輸?shù)角岸似脚_。
前端系統(tǒng)也通過Web Socket接收到后臺的數(shù)據(jù),將文件放入文件隊列,將雷達站號放入定時器隊列。定時器啟動,在瀏覽器將雷達流數(shù)據(jù)按仰角按徑向根據(jù)雷達的參數(shù)時間掃描顯示。業(yè)務(wù)人員提高業(yè)務(wù)人員使用的實時性和準(zhǔn)確性。
整體數(shù)據(jù)設(shè)計分為3部分[6-7]:
第一部分,逐仰角雷達流數(shù)據(jù)解析,逐仰角的雷達流數(shù)據(jù)區(qū)別與傳統(tǒng)的雷達基數(shù)據(jù)文件,本平臺利用Java語言監(jiān)測吉林省天擎平臺推送的雷達流數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)為JSON格式傳輸?shù)嚼走_json文件監(jiān)控程序目錄下。
第二部分,雷達JSON文件監(jiān)控程序,JSON文件以雷達站號加上雷達體掃層數(shù)為文件名。
因為雷達基數(shù)據(jù)數(shù)據(jù)量巨大,如果按照每一個轉(zhuǎn)換文件都落地,服務(wù)器存儲壓力巨大。
第三部分,前端實時監(jiān)測平臺,前端系統(tǒng)以自建的gis發(fā)布的地圖為底圖,用第三方的leaflet作為地圖和javascript的接口。根據(jù)每一個仰角的掃描角度將回波映射到gis上。
選用Web Socket技術(shù)進行傳輸,將數(shù)據(jù)推送到前端而不是使用傳統(tǒng)的ajax,Web Socket技術(shù)可以節(jié)省前后端系統(tǒng)開銷,并且用阻塞而不是輪詢的方式來接收數(shù)據(jù)。Web Socket技術(shù)是在吉林省氣象局現(xiàn)有的雷達系統(tǒng)中,首先使用的Web技術(shù),也是對提高雷達系統(tǒng)實時性的探索。
Web Socket的技術(shù)特點區(qū)別與傳統(tǒng)的ajax方式,ajax通信請求由前端客戶端發(fā)起,而Web Socket的請求則是由服務(wù)端發(fā)起通信請求。
和傳統(tǒng)的B/S系統(tǒng)設(shè)計相比,優(yōu)勢有[8-9]:①建立在TCP協(xié)議之上,服務(wù)器端的實現(xiàn)比較容易。服務(wù)端可以根據(jù)自己的狀態(tài)變化,對客戶端發(fā)出請求。不用輪詢,也不要保持http協(xié)議的連接。②與HTTP協(xié)議有著良好的兼容性。③協(xié)議傳輸格式占帶寬較小,對于帶寬占比很大的雷達數(shù)據(jù),有很大的傳輸優(yōu)勢。④如果帶寬受限可以直接傳輸二進制數(shù)據(jù),然后在前端解析。⑤不涉及跨域問題。
該平臺沒有選擇傳統(tǒng)的MVC結(jié)構(gòu)開發(fā),而是選用前后端分離的技術(shù)。有以下幾點原因:
2.2.1 提高業(yè)務(wù)平臺開發(fā)效率,擅長前端技術(shù)的開發(fā)人員,可以專注于前端開發(fā),并且可以選用任何一種語言進行后端開發(fā),有利于平臺開發(fā)結(jié)束后的系統(tǒng)維護。
2.2.2 利于業(yè)務(wù)擴展,前端的數(shù)據(jù)接口開發(fā)完成,無論是以后雷達數(shù)據(jù)格式發(fā)生變化還是后端邏輯發(fā)生變化,都不用更改前端代碼,就可以完成后端程序的擴展。
前端沒有選用現(xiàn)有的javascript框架,直接用原生javascript操作文檔進行實時監(jiān)測平臺的UI設(shè)計。后端選用java語言,利用spring框架對數(shù)據(jù)進行解析,包括和前端的數(shù)據(jù)交互。
后臺服務(wù)器需要Java環(huán)境安裝和FTP服務(wù)器搭建。ftp接收吉林省氣象信息網(wǎng)絡(luò)中心天擎系統(tǒng)推送的雷達流數(shù)據(jù)[10]。前端服務(wù)器通過nodejs的http-server模塊將編譯過的前端程序發(fā)布到網(wǎng)絡(luò)中。值得注意的是在后臺程序當(dāng)中要及時刪除天擎推送的數(shù)據(jù),如果處理不及時,不只會導(dǎo)致后臺服務(wù)器存儲空間達到百分之百,還會導(dǎo)致吉林省氣象信息網(wǎng)絡(luò)中心的數(shù)據(jù)推送系統(tǒng)故障[11]。
吉林省氣象局的雷達型號主要以四創(chuàng)公司的CC雷達為主。CC/CCJ雙偏振雷達符合技術(shù)標(biāo)準(zhǔn)統(tǒng)一的要求,基數(shù)據(jù)的距離分辨率均為150m。相比單偏振雷達,基數(shù)據(jù)中主要差別為增加了4種雙偏振量 ZDR、KDP、CC和φDP,此外還增加了 SNRHVCP21單偏振體掃配置。
表1 CC/CCJ(技術(shù)標(biāo)準(zhǔn)統(tǒng)一后)VCP21 單偏振體掃配置
續(xù)表
Java程序?qū)⒗走_數(shù)據(jù)處理成固定格式的JSON數(shù)據(jù),JSON格式固定參數(shù)設(shè)置如下表:
表2 JSON文件屬性字段表
雷達JSON文件監(jiān)控程序通過監(jiān)控JSON文件內(nèi)容的變化將JSON數(shù)據(jù)傳輸?shù)狡脚_的前端。
實時數(shù)據(jù)主要是前端對雷達流徑向數(shù)據(jù)的處理。根據(jù)雷達數(shù)據(jù)的特點,本平臺選用了最簡單的線性插值法[12]。
線性插值法是將連接兩個已經(jīng)知道具體數(shù)值的點,然后通過將兩個點連為一條直接,通過線性直線來確定空白點的數(shù)值的方法。例如A點坐標(biāo)為(a0,a1),B點坐標(biāo)為(b0,b1),那么將兩個點連接,指使用連接兩個已知量的直線來確定在這兩個已知量之間的一個未知量的值的方法。我們得到兩點式直線方程:假設(shè)方程兩邊的值為α,那么這個值就是插值系數(shù)—從 a0到x的距離與從a0到bo距離的比值。由于x值已知,所以可以從公式得到確定的值 這樣通過求出的值就可以直接得到 y。實際上,即使x不在a0到b0之間并且所求的值也不是介于0到1之間,這個公式也是成立的。
吉林省雷達逐仰角雷達流監(jiān)測平臺沒有選擇前端框架,是因為對實時性要求比較高,不選用額外的javascript模塊,可以提高實時性能。Web Socket技術(shù)是最適用逐仰角這種實時要求比較高的數(shù)據(jù)傳輸技術(shù)棧。后續(xù)將對全國的雷達流數(shù)據(jù)進行擴展。
天氣雷達是監(jiān)測、預(yù)警突發(fā)性災(zāi)害天氣最有 效的手段之一,在氣象預(yù)報業(yè)務(wù)中發(fā)揮著重要作 用,保證天氣雷達數(shù)據(jù)及時完整地傳輸,提高天氣雷達數(shù)據(jù)傳輸成功率是有效助力氣象預(yù)報的方式
安全隱患零容忍的原則。通過技術(shù)手段解決設(shè)備隱患是技術(shù)人員的不斷追求。該方案具有網(wǎng)絡(luò)可靠性高、故障恢復(fù)時間短以及良好的經(jīng)濟性等特點,對業(yè)務(wù)發(fā)展具有探索意義。