王 笑 顏 東 魏夏潞
(福建省氣象信息中心,福建 福州 350001)
國內氣象數據格式種類繁多,不標準、不統一,缺乏和國際、業界一般采用標準格式的一致性,為了從根本上杜絕紛繁復雜的國內自定義數據格式,簡化、優化和調整探測資料和產品生成、傳輸、加工、存儲、服務全業務流程,解決數據格式不統一導致的應用系統數據格式轉換、軟件接口匹配調整等問題,中國氣象局預報與網絡司在2014年開展氣象數據格式標準化工作。2019年3月,中國氣象局減災司為強化基層防災減災標準化建設,統一全國氣象防災減災數據格式和接口標準,組織制定了《全國氣象防災減災數據格式標準》和《全國氣象防災減災數據接口規范》,要求各省業務單位根據標準規范統一制作標準格式氣象數據,上傳至省氣象信息中心指定服務器,省氣象信息中心負責建立國省兩級傳輸通道,完成基于氣象大數據云平臺的全國氣象防災減災數據的匯交任務。因此,福建省氣象信息中心急需研發一套用于國省數據傳輸的程序,保障氣象防災減災資料準確及時完成匯交。
Java是現在主流的語言,功能強大,安全、穩定,通過采用Spring Boot框架使Java開發基于Spring的應用程序,從而減少大量的開發時間并提高效率,避免編寫大量的樣本代碼、注釋和XML配置,它提供的嵌入式Http服務器和CLI工具,可以快速開發和測試程序。Spring Boot內嵌tomcat容器,以jar包的形式進行獨立運行部署項目,大大減少了環境部署需要的工作量。Java編程語言對數據的長度和類型有較高的要求,同時制定了嚴格的規范,使編寫的程序能夠在各種計算機上運行Web程序,并且提升了運行過程的安全性和平穩性[1]。由于Java編程語言的運用優勢和特征,因此得到廣泛應用,它節約了開發時間,提升了軟件開發質量,減少和控制了程序編寫的成本,使結構更具開放性[2]。
因此,福建省氣象信息中心采用Java1.8和Spring Boot框架,開發基于標準化格式氣象數據的傳輸程序,可以有效落實全國基層氣象防災減災標準化建設工作,優化業務布局、統籌各方資源,凝聚防災減災合力,進一步提升基層氣象防災減災工作水平。
為實現有效、及時的國省氣象防災減災數據傳輸,結合福建省的實際情況,本文提出一種綜合利用Java和Web相關技術的解決方案,各相關業務單位按《全國氣象防災減災國省數據傳輸規范》《全國氣象防災減災數據存儲規范》制作標準格式數據,通過FTP傳入福建省氣象信息中心指定服務器目錄下,信息中心一方面對資料進行時效監控,對未收到的數據可以采取短信告警或語音方式告知業務單位;一方面通過FTP和http兩種匯交方式,將接收到的靜態數據和動態數據上傳至國家氣象信息中心。
其中,全國氣象防災減災數據中靜態數據的匯交是用于大文件匯交、每年一次匯總時匯交用,一般更新頻次為每年一次,更新時間應當是每年主汛期前(4月上旬)。動態數據的匯交是用于實時文件匯交使用,以寫入接口的方式,包括信息寫入接口和附件寫入接口。動態數據要求按如下頻率更新:預警發布設施狀態信息要素(動態)要求早晚各更新一次,預警發布設施狀態反饋表(動態)要求實時上傳,預警發布設施狀態信息反饋統計信息表(動態)要求每晚更新一次,全國氣象防災減災業務流程表(動態)要求實時上傳。具體的系統數據流程和技術路線如下。
各相關業務單位按《全國氣象防災減災國省數據傳輸規范》《全國氣象防災減災數據存儲規范》生成資料文件,文件格式基于XML格式,規定了全國氣象防災減災基本數據格式,為氣象防災減災相關系統建設與對接,業務監控,效益評估等工作提供數據標準保障,并且適用于全國氣象防災減災業務數據的生成、交換、共享、管理、應用和服務。
全國氣象防災減災數據包括XML聲明部分和數據實體部分,XML聲明部分定義XML語言的版本和所使用的語言字符集,位于數據格式的第一行。內容如下:
其中,version="1.0"表明XML文檔符合XML 1.0規范。encoding="UTF-8",表明所使用的編碼為UTF-8。
數據實體部分包括根元素、全國氣象防災減災數據。其中,全國氣象防災減災數據包含一種或多種防災減災數據,具體為全國氣象防災減災監控信息、全國氣象防災減災重點涉災單位信息、全國氣象防災減災預警信息發布設施狀態信息、全國氣象災害責任人信息、全國氣象信息員信息、全國氣象防災減災地圖主圖、全國氣象災害分級防御信息、全國氣象災害叫應制度、全國氣象防災減災業務流程等。
XML格式中必須有且僅有一個根要素,根元素標記“
全國氣象防災減災數據文件名格式為分類_編報單位_MDPR_類型_編報或生成時間.文件后綴。類型統一采用SEVP,代表數據分為氣象服務產品,填報單位采用填報單位代碼,MDPR為氣象防災減災英文縮寫,編報或生成時間采用年月日時分秒的格式。
最后,省氣象局各數據填報單位按省氣象信息中心分配好的ftp用戶密碼和傳輸子目錄,將按規范格式制作好的標準化數據以ftp方式送入信息中心指定服務器(國省數據傳輸服務器)目錄。
根據全國防災減災數據傳輸的需求,合理進行系統架構和設計,更好滿足了實際傳輸業務中對數據收發監控的需求,具體的系統架構如下:

圖1 系統架構圖
(1)數據層:各數據單位將全國防災減災氣象標準化數據傳入省氣象信息中心服務器指定目錄下,信息中心將數據錄入數據庫中,方便傳輸和使用。
(2)應用層:系統搭建基礎環境jdk1.8,構建Spring Boot框架,Shiro負責后端權限框架,Springboot Web負責Rest接口,Springboot Jpa 負責數據庫連接,然后使用FtpClient和HttpClient工具將收到的標準化格式氣象數據上傳至國家信息中心。
(3)Web顯示層:即全國防災減災數據傳輸情況的福建本地用戶交互頁面,顯示省氣象局各業務單位數據上傳情況,可以及時進行缺報短信告警,并且方便各業務單位通過web頁面查看信息。
根據系統架構以及全國防災減災數據傳輸的需求,該系統的設計和實現主要采用了Java前后端分離框架技術。結合當前 Web技術的發展,隨著網站功能的日趨復雜,前后端分離逐漸成為很多Web項目開發的主流模式系統[3]。因此系統采用前后端分離框架,從而完成全國氣象防災減災數據傳輸平臺的搭建[4-5]。下面介紹使用到的具體技術及其如何解決并滿足業務中對氣象數據傳輸和監控系統的需求。
前端部分主要解決人機交互頁面問題,包括首頁、登錄頁、快速面板頁和系統配置頁。這部分采用了Node.js作為前端服務器框架,React.js作為基礎開發語言規范框架,Umi.js作為前端敏捷開發容器,用于敏捷開發,開發涉及插件antd.js等用于用戶UI界面的開發,極大方便了省氣象局各業務單位通過web頁面查看數據傳輸信息和監控。
在前端頁面后端部分搭建基礎環境jdk1.8,構建Spring Boot框架,使用FtpClient和HttpClient工具對收到的標準化格式氣象數據,按填報時間、數據類型和傳輸方式進行編碼,靜態數據匯交地址用于大文件匯交或每年一次匯總時匯交使用,通過FTP形式傳輸,國家氣象局已經配好福建省傳輸地址、目錄、編報中心代碼和福建省簡稱的拼音全拼。動態數據的傳輸以寫入MUSIC(http)接口形式傳入到國家氣象信息中心,主要用于實時文件的匯交。
程序研發好后,完成系統部署和測試。按照需求設計,在國省數據傳輸服務器上進行嚴格的樣本測試,中國氣象局收到信息并反饋成功,使系統達到預定的指標,對測試結果進行分析,根據測試結果進行相關調整和完善,保證系統達到預期建設的目標。
全國氣象防災減災數據傳輸系統通過多個功能模塊,將收到的各類氣象數據和信息及時、高效地推送至國家氣象信息中心,也為福建省氣象局各個業務數據單位提供了簡單、方便、快捷的Web查看統計頁面。主要研究成果包含兩部分,即程序執行頁面和Web顯示頁面。
遠程訪問程序部署的服務器,可以看到全國防災減災數據傳輸系統程序的運行,系統進行定時文件掃描,文件夾下有新到的文件時,則會立即通過程序自動執行上傳至國家氣象信息中心。
系統通過FTP匯交和 Http兩種方式,將接收到的靜態數據和動態數據格式文件上傳至國家氣象信息中心指定服務器。系統服務1年半時間后,根據國家局反饋,數據發送總計4887條,動態數據4716條,靜態數據171條,總計大小約20.74GB,信息量高達856w,數據發送穩定可靠,反應良好,高質量完成了福建省全國氣象防災減災數據的傳輸。
Web顯示頁面主要包括首頁、快速面板頁、登錄頁和系統配置頁。在瀏覽器地址欄輸入系統訪問地址,按回車鍵跳轉至全國防災減災數據傳輸系統主頁,即快速面板頁,主要包括本系統收發資料的各種信息,包括報文數量統計(本年、本月、本日、失敗),動靜態報文隊列,本日節目表和本月歷史記錄等。
點擊右上角登錄按鈕,顯示用戶登錄頁,彈出用戶名和密碼,根據省氣象信息中心給各業務單位分配的賬號密碼,輸入后進入系統頁面,這部分功能主要解決了認證、授權等問題。系統管理員登錄后擁有成員管理的增、刪、改、查權限,用戶配置管理頁,主要顯示當前管理員的基本信息,對應的資料編碼、資料名稱、縮寫、模式、電話號碼、是否告警以及編輯信息項。
本文結合業務實際需要,綜合利用Java和Web技術,很好地設計和實現了全國防災減災數據傳輸系統,現系統已服務近3年時間,自部署以來,后端通過FTP匯交和 MUSIC(http)接口兩種方式,均將接收到的靜態數據和動態數據上傳至國家氣象信息中心,數據發送穩定可靠,反應良好。Web端支持根據省局業務單位定制發送信息的模式,可以編輯業務相關聯絡人,方便業務數據單位管理人員通過語音短信告警得知數據有無發送,以及聯系電話的更換與啟停維護等監控操作。
由于各省氣象部門功能相似,因此本文研究成果具有較廣的應用性,全國各氣象部門可借鑒用于傳輸防災減災數據,也為各省日常氣象數據傳輸保障提供了一種便攜有效的監控途徑。