徐 峰,張 磊,沈元德,劉青松
(1.中國氣象局旱區特色農業氣象災害監測預警與風險管理重點實驗室,銀川 750000;2.寧夏大氣探測技術保障中心,銀川 750006)
隨著氣象科技服務的發展,利用現代科技提供公共氣象服務逐漸變為氣象服務中的核心要素[1]。氣象大屏以LED顯示器為基礎設施,以文字等方式向公眾展示溫度、濕度和天氣預報等信息。目前利用互聯網信息技術的氣象科技服務產品越來越多,而LED大屏也作為一種重要的氣象服務形式存在于地市和鄉鎮[2]。但目前大部分室外氣象大屏只能以文字方式展示信息,室內氣象大屏大多為省級或國家級監控中心使用。
文章針對上述問題,設計并實現了一種基于多數據源的氣象信息顯示系統。該系統可利用本地氣象站、省級信息中心數據庫接口以及第三方接口的數據作為支撐,融合顯示不同數據源的信息。該系統可以利用互聯網資源,與LED大屏結合,為公眾提供界面美觀,實時性強的信息發布系統,能更好地提供氣象科技服務。
自2006年以來,設計實現了很多氣象信息顯示系統。孟令通[3]等在2006年分析了電子信息顯示屏在氣象服務中的應用與其市場前景。劉忠平[4]等設計并實現了一種基于GSM的LED氣象信息發布系統。趙勇[5]等實現了一種可同時顯示多個區域氣象站點監測信息的系統。自2010年開始,中國移動網絡技術迅速發展,同時出現了一系列以GPRS等移動通訊網絡技術為傳輸手段的LED顯示屏系統[6-8]。LED大屏不僅在公共氣象服務領域有了一定的應用,在氣象部門內部,LED大屏也發揮著重要的作用[9-11]。隨著互聯網技術的發展,LED大屏系統也越來越多的采用如HTML5,AJAX,JSP,ARM等新興互聯網技術,這些技術的應用使系統變得更靈活,能更好地適應不同的終端設備[12-14]。
綜合上述相關工作可以發現,隨著LED氣象信息顯示屏技術的發展,目前主要有兩大方向,一是室內,二是室外。目前室內LED氣象信息大屏主要面向氣象部門內部,以監控為主要用途,界面美觀,信息展示全面,但往往造價較高。而室外大屏主要面向公眾服務,提供天氣預報預警等信息,目前主要為單色LED顯示屏,能顯示的信息有限,數據來源單一[15-17]。
鑒于以上問題,文章設計并實現了一種多數據源的LED氣象信息顯示系統。該系統可以使用多種數據源,綜合顯示更多的氣象信息。使用C/S架構,在客戶端嵌入瀏覽器核心,利用HTML5技術開發頁面,實現顯示效果的可定制性。服務端使用Python開發,采用Flask Web框架,保證服務端的可擴展性與穩定性。該系統目前已在寧夏大氣探測技術保障中心穩定運行1 a,為群眾以及保障中心職工提供實時的天氣信息。
文章主要采用3種數據源:1)由信息中心提供的API接口;2)自動氣象站Z文件;3)第三方平臺提供的API接口。
寧夏回族自治區內的任意自動氣象站均可通過省級信息中心所提供的API接口,獲取該站的實時數據。通過URL發送包含站號、時間和要素等信息的請求,信息中心服務器會通過CIMISS系統,返回所需數據。
為展示本地實時數據,文章采用了自動氣象站的實時數據。數據由ISOS軟件生成Z文件,經服務端解析后,生成Json文件。
為展示更準確的天氣預報信息,文章還采用了來自第三方的天氣預報API接口。通過請求第三方API,獲得未來3 d的天氣預報數據,格式為Json。
3種數據源均通過服務端進行處理,并以接口方式提供給客戶端,客戶端中的瀏覽器內核可以通過Restful方式訪問服務端接口,從而獲取數據。
文章采用C/S結構實現客戶端與服務端。客戶端主要負責從服務端定時獲取數據,并將數據顯示在由HTML/CSS編寫的頁面中,該頁面是由嵌入至客戶端中的瀏覽器核心顯示的。服務端主要負責從不同的數據源獲取數據,并處理為客戶端可用的數據格式,為客戶端提供數據接口。在客戶端嵌入的瀏覽器核心結合了C/S結構與B/S結構的優點,采用嵌入瀏覽器核心的方式,可以靈活地編寫所要顯示的頁面,實現不同顯示效果,也可以利用客戶端的外殼,實現瀏覽器頁面無法實現的功能,如窗口定時最大、最小化。系統客戶端采用C#編寫WinForm外殼程序,由HTML/CSS/JS編寫頁面,嵌入的瀏覽器為CefSharp,內核為Chromium。服務端采用Python開發,選用Flask Web框架。客戶端與服務端之間使用Restful方式進行設計與開發,可以做到客戶端與服務端分離。系統結構如圖1所示。
如圖1所示,服務端主要包含4個部分:自動氣象站Json解析模塊、Z文件解析模塊、第三方天氣解析模塊以及Restful服務API模塊。Restful服務API模塊在接收到客戶端請求后,會調用其他3個模塊從不同數據源獲取數據;自動氣象站Json解析模塊會向省級CIMISS數據庫發送請求,并將返回的Json數據進行解析,提取客戶端所需的數據;Z文件解析模塊會讀取ISOS軟件生成的Z文件,通過Z文件中保存的數據獲取自動氣象站最新的氣象要素信息;第三方天氣Json解析模塊會向第三方天氣API請求數據,并將返回的Json數據處理為客戶端所需的數據。在獲取到來自不同數據源的數據后,Restful服務API模塊會將客戶端所需的數據返回。

圖1 系統結構
在客戶端中,主要包含兩大部分,一部分是由C#編寫的WinForm程序,用戶可以通過窗口程序讀取與修改配置文件。該部分也作為Chromium瀏覽器內核的容器。另一部分是嵌入的瀏覽器內核,該部分主要用于顯示HTML頁面,并使用JS向服務端提交請求,文章使用了vue框架,實現異步請求與數據刷新。
在獲取到數據并完成頁面顯示后,需要投影至LED大屏的部分會在客戶端中展現。通過LED矩陣控制器,客戶端中的頁面將投影至LED大屏,即完成了從多數據源數據到LED大屏顯示的全過程。
文章設計了一種基于多數據源的氣象信息顯示系統,通過省級CIMISS數據庫、自動氣象站Z文件以及第三方天氣API獲取數據,并在LED大屏上綜合顯示,做到了多數據源融合,顯示信息豐富,可充分利用彩色LED大屏技術,從而更好地提供公共氣象服務。