王 笑 顏 東 魏夏潞
(福建省氣象信息中心,福建 福州 350001)
國內氣象數據格式種類繁多,不標準、不統(tǒng)一,缺乏和國際、業(yè)界一般采用標準格式的一致性,為了從根本上杜絕紛繁復雜的國內自定義數據格式,簡化、優(yōu)化和調整探測資料和產品生成、傳輸、加工、存儲、服務全業(yè)務流程,解決數據格式不統(tǒng)一導致的應用系統(tǒng)數據格式轉換、軟件接口匹配調整等問題,中國氣象局預報與網絡司在2014年開展氣象數據格式標準化工作。2019年3月,中國氣象局減災司為強化基層防災減災標準化建設,統(tǒng)一全國氣象防災減災數據格式和接口標準,組織制定了《全國氣象防災減災數據格式標準》和《全國氣象防災減災數據接口規(guī)范》,要求各省業(yè)務單位根據標準規(guī)范統(tǒng)一制作標準格式氣象數據,上傳至省氣象信息中心指定服務器,省氣象信息中心負責建立國省兩級傳輸通道,完成基于氣象大數據云平臺的全國氣象防災減災數據的匯交任務。因此,福建省氣象信息中心急需研發(fā)一套用于國省數據傳輸的程序,保障氣象防災減災資料準確及時完成匯交。
Java是現在主流的語言,功能強大,安全、穩(wěn)定,通過采用Spring Boot框架使Java開發(fā)基于Spring的應用程序,從而減少大量的開發(fā)時間并提高效率,避免編寫大量的樣本代碼、注釋和XML配置,它提供的嵌入式Http服務器和CLI工具,可以快速開發(fā)和測試程序。Spring Boot內嵌tomcat容器,以jar包的形式進行獨立運行部署項目,大大減少了環(huán)境部署需要的工作量。Java編程語言對數據的長度和類型有較高的要求,同時制定了嚴格的規(guī)范,使編寫的程序能夠在各種計算機上運行Web程序,并且提升了運行過程的安全性和平穩(wěn)性[1]。由于Java編程語言的運用優(yōu)勢和特征,因此得到廣泛應用,它節(jié)約了開發(fā)時間,提升了軟件開發(fā)質量,減少和控制了程序編寫的成本,使結構更具開放性[2]。
因此,福建省氣象信息中心采用Java1.8和Spring Boot框架,開發(fā)基于標準化格式氣象數據的傳輸程序,可以有效落實全國基層氣象防災減災標準化建設工作,優(yōu)化業(yè)務布局、統(tǒng)籌各方資源,凝聚防災減災合力,進一步提升基層氣象防災減災工作水平。
為實現有效、及時的國省氣象防災減災數據傳輸,結合福建省的實際情況,本文提出一種綜合利用Java和Web相關技術的解決方案,各相關業(yè)務單位按《全國氣象防災減災國省數據傳輸規(guī)范》《全國氣象防災減災數據存儲規(guī)范》制作標準格式數據,通過FTP傳入福建省氣象信息中心指定服務器目錄下,信息中心一方面對資料進行時效監(jiān)控,對未收到的數據可以采取短信告警或語音方式告知業(yè)務單位;一方面通過FTP和http兩種匯交方式,將接收到的靜態(tài)數據和動態(tài)數據上傳至國家氣象信息中心。
其中,全國氣象防災減災數據中靜態(tài)數據的匯交是用于大文件匯交、每年一次匯總時匯交用,一般更新頻次為每年一次,更新時間應當是每年主汛期前(4月上旬)。動態(tài)數據的匯交是用于實時文件匯交使用,以寫入接口的方式,包括信息寫入接口和附件寫入接口。動態(tài)數據要求按如下頻率更新:預警發(fā)布設施狀態(tài)信息要素(動態(tài))要求早晚各更新一次,預警發(fā)布設施狀態(tài)反饋表(動態(tài))要求實時上傳,預警發(fā)布設施狀態(tài)信息反饋統(tǒng)計信息表(動態(tài))要求每晚更新一次,全國氣象防災減災業(yè)務流程表(動態(tài))要求實時上傳。具體的系統(tǒng)數據流程和技術路線如下。
各相關業(yè)務單位按《全國氣象防災減災國省數據傳輸規(guī)范》《全國氣象防災減災數據存儲規(guī)范》生成資料文件,文件格式基于XML格式,規(guī)定了全國氣象防災減災基本數據格式,為氣象防災減災相關系統(tǒng)建設與對接,業(yè)務監(jiān)控,效益評估等工作提供數據標準保障,并且適用于全國氣象防災減災業(yè)務數據的生成、交換、共享、管理、應用和服務。
全國氣象防災減災數據包括XML聲明部分和數據實體部分,XML聲明部分定義XML語言的版本和所使用的語言字符集,位于數據格式的第一行。內容如下:
其中,version="1.0"表明XML文檔符合XML 1.0規(guī)范。encoding="UTF-8",表明所使用的編碼為UTF-8。
數據實體部分包括根元素、全國氣象防災減災數據。其中,全國氣象防災減災數據包含一種或多種防災減災數據,具體為全國氣象防災減災監(jiān)控信息、全國氣象防災減災重點涉災單位信息、全國氣象防災減災預警信息發(fā)布設施狀態(tài)信息、全國氣象災害責任人信息、全國氣象信息員信息、全國氣象防災減災地圖主圖、全國氣象災害分級防御信息、全國氣象災害叫應制度、全國氣象防災減災業(yè)務流程等。
XML格式中必須有且僅有一個根要素,根元素標記“
全國氣象防災減災數據文件名格式為分類_編報單位_MDPR_類型_編報或生成時間.文件后綴。類型統(tǒng)一采用SEVP,代表數據分為氣象服務產品,填報單位采用填報單位代碼,MDPR為氣象防災減災英文縮寫,編報或生成時間采用年月日時分秒的格式。
最后,省氣象局各數據填報單位按省氣象信息中心分配好的ftp用戶密碼和傳輸子目錄,將按規(guī)范格式制作好的標準化數據以ftp方式送入信息中心指定服務器(國省數據傳輸服務器)目錄。
根據全國防災減災數據傳輸的需求,合理進行系統(tǒng)架構和設計,更好滿足了實際傳輸業(yè)務中對數據收發(fā)監(jiān)控的需求,具體的系統(tǒng)架構如下:
圖1 系統(tǒng)架構圖
(1)數據層:各數據單位將全國防災減災氣象標準化數據傳入省氣象信息中心服務器指定目錄下,信息中心將數據錄入數據庫中,方便傳輸和使用。
(2)應用層:系統(tǒng)搭建基礎環(huán)境jdk1.8,構建Spring Boot框架,Shiro負責后端權限框架,Springboot Web負責Rest接口,Springboot Jpa 負責數據庫連接,然后使用FtpClient和HttpClient工具將收到的標準化格式氣象數據上傳至國家信息中心。
(3)Web顯示層:即全國防災減災數據傳輸情況的福建本地用戶交互頁面,顯示省氣象局各業(yè)務單位數據上傳情況,可以及時進行缺報短信告警,并且方便各業(yè)務單位通過web頁面查看信息。
根據系統(tǒng)架構以及全國防災減災數據傳輸的需求,該系統(tǒng)的設計和實現主要采用了Java前后端分離框架技術。結合當前 Web技術的發(fā)展,隨著網站功能的日趨復雜,前后端分離逐漸成為很多Web項目開發(fā)的主流模式系統(tǒng)[3]。因此系統(tǒng)采用前后端分離框架,從而完成全國氣象防災減災數據傳輸平臺的搭建[4-5]。下面介紹使用到的具體技術及其如何解決并滿足業(yè)務中對氣象數據傳輸和監(jiān)控系統(tǒng)的需求。
前端部分主要解決人機交互頁面問題,包括首頁、登錄頁、快速面板頁和系統(tǒng)配置頁。這部分采用了Node.js作為前端服務器框架,React.js作為基礎開發(fā)語言規(guī)范框架,Umi.js作為前端敏捷開發(fā)容器,用于敏捷開發(fā),開發(fā)涉及插件antd.js等用于用戶UI界面的開發(fā),極大方便了省氣象局各業(yè)務單位通過web頁面查看數據傳輸信息和監(jiān)控。
在前端頁面后端部分搭建基礎環(huán)境jdk1.8,構建Spring Boot框架,使用FtpClient和HttpClient工具對收到的標準化格式氣象數據,按填報時間、數據類型和傳輸方式進行編碼,靜態(tài)數據匯交地址用于大文件匯交或每年一次匯總時匯交使用,通過FTP形式傳輸,國家氣象局已經配好福建省傳輸地址、目錄、編報中心代碼和福建省簡稱的拼音全拼。動態(tài)數據的傳輸以寫入MUSIC(http)接口形式傳入到國家氣象信息中心,主要用于實時文件的匯交。
程序研發(fā)好后,完成系統(tǒng)部署和測試。按照需求設計,在國省數據傳輸服務器上進行嚴格的樣本測試,中國氣象局收到信息并反饋成功,使系統(tǒng)達到預定的指標,對測試結果進行分析,根據測試結果進行相關調整和完善,保證系統(tǒng)達到預期建設的目標。
全國氣象防災減災數據傳輸系統(tǒng)通過多個功能模塊,將收到的各類氣象數據和信息及時、高效地推送至國家氣象信息中心,也為福建省氣象局各個業(yè)務數據單位提供了簡單、方便、快捷的Web查看統(tǒng)計頁面。主要研究成果包含兩部分,即程序執(zhí)行頁面和Web顯示頁面。
遠程訪問程序部署的服務器,可以看到全國防災減災數據傳輸系統(tǒng)程序的運行,系統(tǒng)進行定時文件掃描,文件夾下有新到的文件時,則會立即通過程序自動執(zhí)行上傳至國家氣象信息中心。
系統(tǒng)通過FTP匯交和 Http兩種方式,將接收到的靜態(tài)數據和動態(tài)數據格式文件上傳至國家氣象信息中心指定服務器。系統(tǒng)服務1年半時間后,根據國家局反饋,數據發(fā)送總計4887條,動態(tài)數據4716條,靜態(tài)數據171條,總計大小約20.74GB,信息量高達856w,數據發(fā)送穩(wěn)定可靠,反應良好,高質量完成了福建省全國氣象防災減災數據的傳輸。
Web顯示頁面主要包括首頁、快速面板頁、登錄頁和系統(tǒng)配置頁。在瀏覽器地址欄輸入系統(tǒng)訪問地址,按回車鍵跳轉至全國防災減災數據傳輸系統(tǒng)主頁,即快速面板頁,主要包括本系統(tǒng)收發(fā)資料的各種信息,包括報文數量統(tǒng)計(本年、本月、本日、失敗),動靜態(tài)報文隊列,本日節(jié)目表和本月歷史記錄等。
點擊右上角登錄按鈕,顯示用戶登錄頁,彈出用戶名和密碼,根據省氣象信息中心給各業(yè)務單位分配的賬號密碼,輸入后進入系統(tǒng)頁面,這部分功能主要解決了認證、授權等問題。系統(tǒng)管理員登錄后擁有成員管理的增、刪、改、查權限,用戶配置管理頁,主要顯示當前管理員的基本信息,對應的資料編碼、資料名稱、縮寫、模式、電話號碼、是否告警以及編輯信息項。
本文結合業(yè)務實際需要,綜合利用Java和Web技術,很好地設計和實現了全國防災減災數據傳輸系統(tǒng),現系統(tǒng)已服務近3年時間,自部署以來,后端通過FTP匯交和 MUSIC(http)接口兩種方式,均將接收到的靜態(tài)數據和動態(tài)數據上傳至國家氣象信息中心,數據發(fā)送穩(wěn)定可靠,反應良好。Web端支持根據省局業(yè)務單位定制發(fā)送信息的模式,可以編輯業(yè)務相關聯絡人,方便業(yè)務數據單位管理人員通過語音短信告警得知數據有無發(fā)送,以及聯系電話的更換與啟停維護等監(jiān)控操作。
由于各省氣象部門功能相似,因此本文研究成果具有較廣的應用性,全國各氣象部門可借鑒用于傳輸防災減災數據,也為各省日常氣象數據傳輸保障提供了一種便攜有效的監(jiān)控途徑。