任廣治,畢獻忠
(山東省氣象服務中心,濟南 250031)
中國氣象局提出了“公共氣象服務要集約化、規模化、品牌化發展”的戰略要求,姚勝[1]也認為“隨著信息技術的不斷發展,人們對目前的氣象服務工作也有了更多的要求,所以當下的氣象服務平臺改革迫在眉睫”。以山東省氣象部門為例,公共氣象服務多年來存在一定的短板:一是服務方式還是多以氣象網站、氣象短信、12121、影視等為主,各自為戰,資源分散,難以形成統一的品牌效應;二是在當今物聯網、云計算、大數據等新一代互聯網技術的迅猛發展下,傳統服務方式不同程度地面臨著用戶量萎縮,服務能力不強等諸多現實問題;三是省級公共氣象服務數據處理、應用能力不足,指導地市氣象局開展公共氣象服務的手段缺乏。與此同時,國內氣象服務相關系統研究正逐步開展起來,姜殿榮等[2]設計了基于MVC架構的新媒體公眾氣象服務平臺,實現了數據的交互、共享和內部功能模塊間的數據交互。何林等[3]利用AngularJS框架實現了氣象數據共享的前臺界面。王錫良[4]采用插件式開發技術開發了基于OSGi.NET插件框架的公共氣象服務平臺。王婉等[5]開發了基于智慧氣象的數據接口,已為微信、微博、手機APP、網站等多個系統及保險公司、市政等多個單位提供數據支撐。王壘、韓濤[6-7]等探索采用面向服務的大數據來解決氣象服務供給能力不足的問題。公共氣象服務需要緊跟社會發展需求,不斷依靠氣象自身數據、業務、技術優勢,結合國家氣象信息化發展戰略,積極融入互聯網時代,“互聯網+智慧氣象”首要功能就是要讓各行各業可以通過類似API[8]的方式通過公有云輕松獲取到他們需要的氣象信息,同時通過創新服務產品,在更高的層次上引領社會對氣象服務的個性化需求,從而進一步提升氣象服務內涵,激發公共氣象服務活力。而要實現上述目標,高效、穩定的數據產品支撐系統設計和實現就顯得尤其重要。
山東省氣象部門建設公共氣象服務數據產品支撐系統主要是為了能在較短時間內、較低的投入下,有效提升公共氣象服務部門在氣象服務技術、數據、產品三個方面的研發和應用支撐能力,實現技術可靠、數據標準、產品模塊化。系統設計還要充分利用當前社會資源,通過借助公有云平臺成熟的軟硬件系統、完善的網絡資源優勢,快速搭建支撐系統。同時要充分滿足社會對氣象服務不斷增加的需求,將數據與形式有機融合,改變過去“以文本預報代替專業服務”的模式。數據支撐系統架構設計注重開放性和拓展性,不斷提高數據共享能力,通過設定一定的授權機制和監管制度,在遵守服務約定的前提下,讓那些授權部門或用戶通過公有云發布的API方式獲取豐富的氣象數據和產品。
系統整體架構(見圖1)借鑒分層架構設計,自下而上分為5個邏輯層,分別為:基礎數據層、云數據層、接口層、產品層、應用層。基礎數據層硬件部署在山東省氣象局機房,云數據層、接口層和產品層部署在公有云平臺上,應用層則根據具體需要部署在本地化系統平臺中。各層次之間松散耦合,資源復用率高,從而降低開發維護成本,提高了開發的綜合效率。
基礎數據層:負責與CIMISS系統對接,主要通過MUSIC接口獲取系統所需的地面實況觀測數據;負責從省局業務內網獲取雷達、衛星云圖數據、常規文本預報產品;負責通過虛擬化計算環境進行原始數據的驗證、加工和矢量圖片生成處理等工作;負責利用Rsnyc技術,將基礎數據層的數據產品同步到公有云平臺。

圖1 山東省公共氣象服務數據產品支撐系統架構
云數據層:負責構建數據管理平臺,設計數據庫表結構和作業任務,設計原始數據的存儲路徑;負責設計數據處理調度機制自動完成原始數據的入庫或文件分類存儲工作,定期刪除超時數據或文件,保證數據庫和磁盤空間伸縮性。
接口層:作為核心數據引擎層,負責設計開發、管理數據API程序,并設計有效的授權機制,鑒別用戶訪問API的權限;負責為產品層通過REST的調用模式提供以JSON格式為主的數據。
產品層:負責將接口層獲取的數據包裝加工,嵌入到地圖(WEBGIS)、曲線、圖表或文字中,不斷開發表現形式多樣的模塊化氣象服務產品。對于個別不適合開發數據API的產品,也可以通過產品層直接調用云數據層的數據;負責統計分析用戶使用產品的習慣,科學規劃產品設計,調整產品布局。
應用層:負責開發設計用于客戶端展示的各類應用。無論是APP、WEB網站、大屏幕顯示還是微信、微博都以后臺數據和產品作為支撐,根據用戶需求,靈活配置所要展示的模塊化產品,從而做到以人為本,按需設計。
Linux操作系統具有開放、穩定、多用戶多任務等優勢特點,十分適合公共氣象服務系統的開發和運行支撐。而且Linux支撐了豐富的應用軟件,比如Apache、SSH、MySQL、PHP、Fortran77等,通過個性化的配置,能較快地搭建起具有一定服務規模的服務器運行環境。鑒于此,整個支撐系統除了應用層外,其他各個邏輯層的開發環境都是基于Linux操作系統,然后再根據具體開發內容的要求,增加相關模塊或數據庫軟件。而應用層主要考慮開發者在可視化界面下便于調試客戶端程序,而選擇了Windows操作系統以及Eclipse等開發工具(表1)。

表1 各邏輯層次主要開發環境
2.3.1 API技術 山東省公共氣象服務數據產品支撐系統中接口層的API正是本著開放、共享、標準化的原則設計管理API各個組件(表2)。經過授權的開發者,通過HTTP方式調用API,獲取需要的數據(主要為JSON格式)。開發者不必考慮這些氣象數據來源于何處,也不用考慮平臺兼容性,獲取的數據從格式到內容都保持了高度的一致性和標準化,從而大大降低了開發成本,提高了數據利用效率。
在設計API過程中,注重將API參數細化(表3),零碎的數據更易于重組,便于產品層組合出更多的應用產品,也給前端產品開發者創造了更大的空間。下面以API-1為例,說明用戶如何調用API。

表2 山東省公共氣象服務數據產品支撐系統開發的API列表
調用URL:http://hostname/api/surface/getsurfelebytime/?times=20190523031500& elements=station_id_c,tem,prs&staIds=54823&key=系統分配給用戶的key值。

表3 API-1參數表
2.3.2 WEB前端技術 有了數據基礎,支撐系統還需要豐富的產品來應用,本著“移動優先”的原則,在支撐系統設計開發中,重點應用了以下技術。
(1)HTML5+CSS3+jQuery+組件
采用HTML5主要是為桌面端和移動端帶來無縫銜接的豐富內容,利用CSS3來定義樣式使得頁面效果更加生動整潔,利用jQuery庫增加頁面的交互效果,通過調用高德、百度地圖的JS API、Highcharts API等組件,更使得開發的氣象服務產品形式靈活多樣。
(2)Bootstrap框架
Bootstrap是基于HTML5和CSS3開發的開源成熟框架,其更強大的作用在于開發響應式布局、移動優先的 WEB應用。利用該框架,支撐系統產品層中的各類形式的氣象服務產品得以輕松地部署移植在各個應用場合中,大大提高了開發效率。
(3)Hybrid APP
Hybrid APP[9]兼具原生代碼良好的用戶交互體驗和HTML5跨平臺開發WEB的優勢,除了必要的APP框架和信息獲取通過Java編程外,其他模塊多采用HTML5頁面完成。Hybrid APP還可以根據用戶關注和訪問統計,隨時增減產品或修改界面,而這些后臺的升級操作,用戶無須重新安裝APP,便可感受到產品的不斷更新。
目前,山東省公共氣象服務數據產品支撐系統建設已經初具規模,高度自動化處理技術的業務化也使得公共氣象服務業務流程得到優化。結合用戶需求,在公有云平臺上為海量氣象數據開發的數據API接口已有20多個,為公共氣象服務提供穩定、快速的數據訪問途徑;開發的基于WEB的模塊化產品已有30多個,被靈活地嵌入APP、網站、微信、大屏幕等服務媒介上,完全自主研發的基于Android的“齊魯風云” APP,集約化實現了省、市、縣三級應用,在2017—2019年山東省汛期氣象服務、重大活動保障工作中發揮了重要的輔助決策作用。尤其在“溫比亞”、“利奇馬”臺風影響山東期間,該APP憑借數據及時、產品豐富、響應快速的優勢,成為了各級氣象部門服務當地政府的掌上移動氣象臺,服務品牌效應明顯。青島、威海、煙臺、聊城、東營、萊蕪、青州等多個市縣氣象局,浪潮集團大數據中心,山東高速集團,威海消防等部門也通過支撐系統構建了本地化的服務產品和應用平臺。以上實踐證明,該系統的建設達到了公共氣象服務集約化、易擴展的發展目標,系統的數據、產品支撐能力也得到了具體體現。
(1)充分利用公有云,實現公共氣象服務數據共享與利用。
考慮到公共氣象服務的目標用戶群,整個系統平臺大部分內容構建在公有云平臺上,通過租賃云主機、寬帶,部署安裝服務系統,實現了公共氣象服務的數據存儲、信息共享、接口調用、組件開發等多個功能需求,并通過不斷優化公有云服務器訪問策略,使得每個API的響應時間控制在0.5 s之內。
(2)重視各類氣象服務數據的完整性、有效性,降低服務差錯。
系統服務以“數據為王”,公共氣象服務更是要求氣象信息“及時、可靠、準確”,為此系統對大量的氣象服務數據做了完整性、有效性驗證,針對氣溫、降水、風力等敏感要素設計了有效的數據差錯修復機制,最大程度降低平臺服務差錯率。
(3)多種產品模塊高度復用,根據需要可靈活移植。
系統努力打造“產品超市”的概念,開發的API及產品模塊注重細粒度化,目的是便于用戶在不同的操作系統、不同的客戶端高度復用移植、靈活組合,從而設計出更加個性化、精細化的應用產品。
(4)統一標準,開放性強,易于擴展和管理。
“開放、共享”是今后公共氣象服務必須面對的現實要求。為此系統在設計的每一個環節都注重標準的統一,從數據存儲的格式、路徑、命名規范到API的授權、驗證、錯誤碼的規范等多個細節做到明確定義,便于今后新增產品的擴展和規范管理,同時有助于系統在安全可靠的前提下盡可能地做到充分的開放與共享。
公共氣象服務數據產品支撐系統有效解決了氣象服務過程中主要存在的瓶頸難題,為公共氣象服務向更廣闊、更深層次的發展奠定了技術基礎。整個支撐系統完全自主開發,降低了開發成本。支撐系統的應用有效地提升了公共氣象服務的綜合能力和總體水平。下一步將圍繞該系統核心架構,重點在公有云數據安全、大數據技術應用、多部門多行業銜接等方面加大創新設計,為公共氣象服務提供強大的數據支撐。