周雪瑩,李 芬,李顯風,胡佳軍
(江西省氣象信息中心,江西 南昌 330096)
江西省洪澇災害發生十分頻繁,氣候異常、極端天氣事件增多,氣象防災減災形勢日益嚴峻,社會對氣象資料和氣象服務的需求越來越大,也越來越多樣化。國家“十三五”規劃建議提出:“實施國家大數據戰略,推進數據資源開放共享”,氣象部門和水利部門是國民經濟與社會發展的重要基礎支撐和保障,氣象和水文數據是國家重要的基礎資源,在各自不同的領域里研究了水分循環系統的不同環節,建立信息共享機制是時代發展的大趨勢,積極提高全社會氣象服務信息的利用能力,激活全社會氣象信息服務產業的活力[1]。根據中國氣象局與水利部長江水利委員會簽署共同推進長江流域防汛抗旱戰略合作協議,實現兩部門的數據實時共享,開展跨學科、跨部門、跨地域的深入研究,為更加準確的氣象預報預警信息提供強有力的數據支撐,進而提升洪水旱情預測、預警與防災減災綜合服務能力,提高公共氣象服務水平[2]。
江西省氣象、水利部門各自建設高密度雨量觀測站網,水文自動觀測站有2 807個,其中水文站有110個,水位站有259個,雨量站有1 855個,氣象自動觀測站有2 545個,其中國家級自動站有93個,區域級自動站有2 452個。因為水文部門的水文監測自動化系統運行機制與氣象部門的大氣監測自動化系統運行機制有所差異[3],數據采集、報文格式和傳輸時效流程完全不同,所以數據共享的實時性不強,監視報警環節薄弱,一旦處于有效時間之外,將無法有效地為氣象預報預警、防汛抗旱和公共氣象服務提供及時有效準確的數據環境[4]。
目前,大量的共享數據變成歷史數據存儲在共享服務器中,大部分沒有被開發利用,造成資源浪費。為了提高氣象水文共享數據的實時性、準確性、有效性和利用率,為氣象部門、水利部門、市縣以及周邊省的業務、科研、專業服務提供完整的數據支持[5],開發了江西省氣象水文數據實時共享平臺,實現數據傳輸、接收、處理、存儲、共享、日志管理和監視告警等功能,在CIMISS基礎上,建立跨部門共享數據實時數據庫和監視信息數據庫,并且提供統一的數據訪問接口。針對共享數據傳輸和共享的高時效性和可靠性,以及目前頁面形式告警缺少信息交互,手機短信告警能夠展示的信息較為貧乏,增加了微信的方式接收告警信息,滿足消息通知的及時性、信息展示的豐富性和交互性,更能及時通知值班業務人員和管理人員服務器狀態、網絡狀態、進程運行、數據傳輸和處理等異常情況。
全國綜合氣象信息共享平臺(CIMISS)是氣象核心基礎數據支撐平臺,在此基礎上建立了氣象信息化數據統一標準,直接支撐氣象業務和服務應用。但是跨行業合作是新時代的趨勢,數據需求增長迅速,對數據的時效性和穩定性要求越來越高,基于氣象核心業務的CIMISS對跨行業共享數據支持存在不完善,在原有CIMISS技術架構和訪問接口的基礎上建立跨行業數據庫[6-7],提供更加及時準確的跨行業共享數據環境支撐,實現對實時數據的快速響應。
本系統依托政務外網、CIMISS數據環境和統一數據服務接口,定時獲取氣象降水數據,并根據共享數據格式生成氣象降水文件,采用FTP方式實現數據實時傳輸至水文共享服務器,同時水文部門也將水文降水文件傳輸至氣象部門。對實時收集的氣象和水文降水文件進行解碼入庫處理,并以rest方式提供數據服務接口,兼容與CIMISS數據標準,同時根據需求,將實時收集的水文降水文件通過氣象專網共享至周邊省份,為長江流域氣象水文業務服務提供數據支撐[8]。數據共享流程如圖1所示。

圖1 數據實時共享流程
在建設氣象、水文數據共享傳輸網絡系統的基礎上,基于B/S架構和C/S架構相結合的方式,采用MySQL數據庫、C#和Python等計算機技術,建立江西省氣象水文數據實時共享系統,實現氣象、水文共享數據的實時收集和多線程處理,提高數據使用的實時性、準確性和有效性,建立氣象、水文共享數據庫,并以接口的方式提供數據服務,為省市縣三級業務應用提供了有力的數據支撐。
根據氣象部門和水利部門自動觀測規范、報文格式、采集時效等不同,以及對數據處理的實時性、準確性和有效性的要求,設計了系統的總體結構。本系統主要由數據共享處理、日志管理和監視告警三部分組成,各部分依賴性低,耦合性弱,結構更加明確,增加了系統的可擴展性,極大降低了后期維護的成本和時間[9],系統總體架構如圖2所示。

圖2 系統總體架構
根據應用需求,系統設計了數據共享處理、日志管理和監視告警等功能,其中數據共享處理功能包括文件解碼入庫模塊、補處理模塊和省際共享模塊,日志管理功能包括日志生成、日志存儲和日志調用,監視告警功能包括短信告警、微信告警和頁面告警。
2.2.1 數據共享處理
氣象部門的降水監測系統定時采集小時和分鐘降水資料,而水文部門降水監測系統僅監測和傳輸發生降水時次資料,數據頻次具有不確定性特點,因此通過設置高頻率掃描頻次對水文共享資料文件進行實時掃描,確保共享數據文件接收和處理的完整性、及時性。將掃描獲取的文件列表,寫入解析入庫處理隊列,提取文件內容,并寫入數據庫相應數據表,同時生成文件傳輸情況、解碼情況、入庫情況和備份情況日志文件,提供系統監控使用。日志文件中,由于網絡故障、設備故障和人為操作等原因,不可避免會造成系統運行中斷等異常情況,導致某個時次或時間段范圍內報文未及時處理,系統提供異常處理功能,實現缺失數據的手動補處理,保障實時共享數據文件接收和處理的及時性、完整性和連續性。數據共享處理流程如圖3所示。
2.2.2 日志管理
采用日志管理方式,對系統運行的關鍵環節、系統服務器狀態、網絡狀態等信息進行實時日志記錄。服務器運行狀態和網絡狀態通過部署狀態采集軟件實現,采集信息包括服務CPU、內存、儲存空間等信息以及網絡中斷信息等。系統運行狀態通過實時生成行為日志和異常日志信息,并按照標準規范生成相應的日志文件[10]。對日志文件進行解析處理,提取數據收集、數據處理、數據儲存管理等系統狀態信息及異常告警信息,寫入系統的監視信息數據庫,為后續系統分析和故障處理提供依據。日志管理流程如圖4所示。

圖3 數據共享處理流程

圖4 日志管理流程
2.2.3 監視告警
監視告警功能提供頁面告警(見圖5)、短信告警和微信告警三種方式,為業務值班人員及系統管理員提供及時的監視告警信息。系統通過實時讀取監視信息數據庫的數據記錄,監測到異常情況,并根據參數配置的監控告警規則判斷告警級別,分為緊急告警、嚴重告警、一般告警[11]。若為一般告警僅提供頁面顯示,若為緊急告警和嚴重告警,監視系統則發出異常聲音告警,并同時以短信和微信的方式,把異常信息發送至值班人員和管理人員,保障異常情況被快速處理。

圖5 系統監控告警頁面
氣象水文數據共享處理系統采用文本文件作為傳輸標準格式,由于每時次共享傳輸文件數量大,采用單線程順序處理所有文件耗時長,無法滿足實時觀測資料時效性需求,為此采用多線程處理方式,根據文件數和線程數,將全部處理文件分配到各個線程同步處理,極大提高了數據解析入庫處理效率。
對系統的目錄掃描、文件傳輸,包括目錄掃描線程、文件傳輸線程、數據處理和解碼入庫分別采用不同的處理線程來提高系統處理效率。目錄掃描線程定時掃描共享目錄下的數據文件,通過文件名匹配和數據格式檢查,剔除異常數據文件,得到每時次的處理文件列表。文件傳輸線程實現收集和發送氣象雨量文件和水文數據文件,實現數據文件實時共享。數據處理線程使用CIMISS氣象數據統一服務接口(MUSIC)快速獲取地面逐小時雨量數據,根據文件命名規則和文件標準格式生成氣象雨量數據文件。文件解碼入庫線程對文件內容進行逐行解析處理,提取時間、經度、緯度、站號、要素和要素值等信息,當文件數據讀取結束后,將提取的信息一次性寫入氣象水文共享數據實時數據庫。
共享數據以CIMISS數據源和水利數據為基礎,數據標準保持與CIMISS數據環境的一致性,以統一接口服務的方式面向業務應用提供服務。為了提高數據讀寫性能、數據庫訪問速度和數據查詢速度,保證共享數據入庫的及時性,采用視圖、索引、主鍵或復合主鍵等技術對數據庫進行優化設計,不同的要素分開存儲在不同的實體數據表中[12-13]。根據業務需求,系統設計并建立了元數據表、臺站基本信息表、雨量數據表、水位流量數據表和監視告警信息表等。元數據表用于存儲關于數據的說明性信息,是關于數據的數據或描述數據的數據,包括氣象水文共享數據類型、數據類型標識、各個要素的說明;臺站基本信息表用于存儲站點信息;雨量數據表和水位流量數據表分別存儲水文站觀測的降水量、水位和流量等不同要素數據;監視告警信息表用于存儲系統運行環境狀態、系統運行狀態指標和網絡連接狀態等信息。
基于建立的共享數據庫,采用rest方式設計了一套統一的數據訪問接口。根據數據共享服務需求,設計并建立了按時段檢索地面降水、按時間檢索地面降水、按時段統計地面降水、按時間段及站號檢索地面降水等不同的功能接口(見表1)。rest具有訪問數據快,接口調用簡單等優勢,以按時間段及站號檢索地面降水接口為例,通過調用getSurfEleByTimeRangeAnd StaID接口,獲取了2019年3月02日至2019年3月03日(北京時)水文站(站號為62422800)24小時降水量及站點元數據信息(見表2)。

表1 接口說明

表2 按時間段及站號檢索返回結果
微信接收監視報警模塊使用企業微信豐富的API接口和應用與小程序的功能,采用shell腳本和HTML5等開發技術,通過接口憑證調用企業微信號提供的開發接口,建立本地應用程序與企業微信之間的連接和交互,實現監視報警信息推送至值班人員和管理人員的微信上。用戶不需要增加手機app,通過關注企業微信號后,即可獲得內容豐富且具有個性化的移動應用[14]。
Web端短信發送監視報警模塊是在移動代理服務器(云MAS短信服務平臺)的基礎上,采用C#編程語言調用Mas機API接口方式制作的短信發送入庫接口,調用該接口可以發送監視報警信息至移動、聯通和電信的手機上,實現“三網合一”,同時將短信發送返回狀態、手機號和短信內容保存至數據庫。為了防止值班人員和管理人員收到的短信含有亂碼,短信信息的字符串編碼與發送短信的服務器的編碼一致,即使用UTF-8編碼,發送至多個用戶時,可以使用逗號分隔電話號碼。設置網段限制,防止未授權的用戶調用該接口發送非法短信信息。
本系統為全省氣象部門提供了高密度的站點實況降水數據,有效支撐了本省省市縣三級業務應用。江西省氣象信息中心基于該共享系統的數據接口,采用基于RIA的WebGIS技術,建立了江西省氣象、水文雨情信息的分析平臺,實現了水文站、氣象站降水疊加地理信息的一張圖顯示,具備數據的等值面繪制、數據統計分析,數據查詢、導出等功能[15],平臺在降水監測,尤其是強降水監測中發揮了重要作用。
根據氣象部門和水利部門的監測自動化系統運行機制的不同,設計和實現了一套具有收集、分發、處理、共享、監視、告警、日志管理和數據存儲管理功能的氣象水文數據實時共享系統,并且對氣象水文共享數據文件接收、處理、發送、日志管理和監視告警進行了詳細的闡述。
(1)通過政務外網建立了跨部門的數據共享與交換機制,加強了數據共享的實時性和有效性;通過多元化的監視報警方式,提高了數據傳輸的及時性和穩定性;利用多線程的數據處理方式,提升了數據解碼入庫的時效性和并發性。
(2)系統實現了數據共享處理、數據存儲、日志管理和監視告警等功能,建立了氣象和水文共享數據實時數據庫和監測告警信息數據庫,為省市縣三級業務的應用提供統一的數據訪問接口。日志管理和監視告警為值班員和業務管理人員對系統故障判斷和處理提供了可靠的決策依據,通過界面顯示、短信和微信方式相結合,實現內容豐富且具有個性化的移動應用。
(3)系統投入業務運行后,顯著提高了數據傳輸的及時性和數據使用的完整性,能夠為提升公共氣象服務水平、氣象預報預警與防災減災綜合服務能力、洪水旱情預測及跨行業跨部門的信息共享、空間集成以及跨學科的可持續發展研究提供有力的數據支撐,為氣象部門、水利部門、市縣以及周邊省的業務、科研、專業服務提供完整有效的數據環境。