周雪瑩,李 芬,李顯風(fēng),胡佳軍
(江西省氣象信息中心,江西 南昌 330096)
江西省洪澇災(zāi)害發(fā)生十分頻繁,氣候異常、極端天氣事件增多,氣象防災(zāi)減災(zāi)形勢日益嚴(yán)峻,社會對氣象資料和氣象服務(wù)的需求越來越大,也越來越多樣化。國家“十三五”規(guī)劃建議提出:“實(shí)施國家大數(shù)據(jù)戰(zhàn)略,推進(jìn)數(shù)據(jù)資源開放共享”,氣象部門和水利部門是國民經(jīng)濟(jì)與社會發(fā)展的重要基礎(chǔ)支撐和保障,氣象和水文數(shù)據(jù)是國家重要的基礎(chǔ)資源,在各自不同的領(lǐng)域里研究了水分循環(huán)系統(tǒng)的不同環(huán)節(jié),建立信息共享機(jī)制是時(shí)代發(fā)展的大趨勢,積極提高全社會氣象服務(wù)信息的利用能力,激活全社會氣象信息服務(wù)產(chǎn)業(yè)的活力[1]。根據(jù)中國氣象局與水利部長江水利委員會簽署共同推進(jìn)長江流域防汛抗旱戰(zhàn)略合作協(xié)議,實(shí)現(xiàn)兩部門的數(shù)據(jù)實(shí)時(shí)共享,開展跨學(xué)科、跨部門、跨地域的深入研究,為更加準(zhǔn)確的氣象預(yù)報(bào)預(yù)警信息提供強(qiáng)有力的數(shù)據(jù)支撐,進(jìn)而提升洪水旱情預(yù)測、預(yù)警與防災(zāi)減災(zāi)綜合服務(wù)能力,提高公共氣象服務(wù)水平[2]。
江西省氣象、水利部門各自建設(shè)高密度雨量觀測站網(wǎng),水文自動觀測站有2 807個,其中水文站有110個,水位站有259個,雨量站有1 855個,氣象自動觀測站有2 545個,其中國家級自動站有93個,區(qū)域級自動站有2 452個。因?yàn)樗牟块T的水文監(jiān)測自動化系統(tǒng)運(yùn)行機(jī)制與氣象部門的大氣監(jiān)測自動化系統(tǒng)運(yùn)行機(jī)制有所差異[3],數(shù)據(jù)采集、報(bào)文格式和傳輸時(shí)效流程完全不同,所以數(shù)據(jù)共享的實(shí)時(shí)性不強(qiáng),監(jiān)視報(bào)警環(huán)節(jié)薄弱,一旦處于有效時(shí)間之外,將無法有效地為氣象預(yù)報(bào)預(yù)警、防汛抗旱和公共氣象服務(wù)提供及時(shí)有效準(zhǔn)確的數(shù)據(jù)環(huán)境[4]。
目前,大量的共享數(shù)據(jù)變成歷史數(shù)據(jù)存儲在共享服務(wù)器中,大部分沒有被開發(fā)利用,造成資源浪費(fèi)。為了提高氣象水文共享數(shù)據(jù)的實(shí)時(shí)性、準(zhǔn)確性、有效性和利用率,為氣象部門、水利部門、市縣以及周邊省的業(yè)務(wù)、科研、專業(yè)服務(wù)提供完整的數(shù)據(jù)支持[5],開發(fā)了江西省氣象水文數(shù)據(jù)實(shí)時(shí)共享平臺,實(shí)現(xiàn)數(shù)據(jù)傳輸、接收、處理、存儲、共享、日志管理和監(jiān)視告警等功能,在CIMISS基礎(chǔ)上,建立跨部門共享數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)庫和監(jiān)視信息數(shù)據(jù)庫,并且提供統(tǒng)一的數(shù)據(jù)訪問接口。針對共享數(shù)據(jù)傳輸和共享的高時(shí)效性和可靠性,以及目前頁面形式告警缺少信息交互,手機(jī)短信告警能夠展示的信息較為貧乏,增加了微信的方式接收告警信息,滿足消息通知的及時(shí)性、信息展示的豐富性和交互性,更能及時(shí)通知值班業(yè)務(wù)人員和管理人員服務(wù)器狀態(tài)、網(wǎng)絡(luò)狀態(tài)、進(jìn)程運(yùn)行、數(shù)據(jù)傳輸和處理等異常情況。
全國綜合氣象信息共享平臺(CIMISS)是氣象核心基礎(chǔ)數(shù)據(jù)支撐平臺,在此基礎(chǔ)上建立了氣象信息化數(shù)據(jù)統(tǒng)一標(biāo)準(zhǔn),直接支撐氣象業(yè)務(wù)和服務(wù)應(yīng)用。但是跨行業(yè)合作是新時(shí)代的趨勢,數(shù)據(jù)需求增長迅速,對數(shù)據(jù)的時(shí)效性和穩(wěn)定性要求越來越高,基于氣象核心業(yè)務(wù)的CIMISS對跨行業(yè)共享數(shù)據(jù)支持存在不完善,在原有CIMISS技術(shù)架構(gòu)和訪問接口的基礎(chǔ)上建立跨行業(yè)數(shù)據(jù)庫[6-7],提供更加及時(shí)準(zhǔn)確的跨行業(yè)共享數(shù)據(jù)環(huán)境支撐,實(shí)現(xiàn)對實(shí)時(shí)數(shù)據(jù)的快速響應(yīng)。
本系統(tǒng)依托政務(wù)外網(wǎng)、CIMISS數(shù)據(jù)環(huán)境和統(tǒng)一數(shù)據(jù)服務(wù)接口,定時(shí)獲取氣象降水?dāng)?shù)據(jù),并根據(jù)共享數(shù)據(jù)格式生成氣象降水文件,采用FTP方式實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)傳輸至水文共享服務(wù)器,同時(shí)水文部門也將水文降水文件傳輸至氣象部門。對實(shí)時(shí)收集的氣象和水文降水文件進(jìn)行解碼入庫處理,并以rest方式提供數(shù)據(jù)服務(wù)接口,兼容與CIMISS數(shù)據(jù)標(biāo)準(zhǔn),同時(shí)根據(jù)需求,將實(shí)時(shí)收集的水文降水文件通過氣象專網(wǎng)共享至周邊省份,為長江流域氣象水文業(yè)務(wù)服務(wù)提供數(shù)據(jù)支撐[8]。數(shù)據(jù)共享流程如圖1所示。
圖1 數(shù)據(jù)實(shí)時(shí)共享流程
在建設(shè)氣象、水文數(shù)據(jù)共享傳輸網(wǎng)絡(luò)系統(tǒng)的基礎(chǔ)上,基于B/S架構(gòu)和C/S架構(gòu)相結(jié)合的方式,采用MySQL數(shù)據(jù)庫、C#和Python等計(jì)算機(jī)技術(shù),建立江西省氣象水文數(shù)據(jù)實(shí)時(shí)共享系統(tǒng),實(shí)現(xiàn)氣象、水文共享數(shù)據(jù)的實(shí)時(shí)收集和多線程處理,提高數(shù)據(jù)使用的實(shí)時(shí)性、準(zhǔn)確性和有效性,建立氣象、水文共享數(shù)據(jù)庫,并以接口的方式提供數(shù)據(jù)服務(wù),為省市縣三級業(yè)務(wù)應(yīng)用提供了有力的數(shù)據(jù)支撐。
根據(jù)氣象部門和水利部門自動觀測規(guī)范、報(bào)文格式、采集時(shí)效等不同,以及對數(shù)據(jù)處理的實(shí)時(shí)性、準(zhǔn)確性和有效性的要求,設(shè)計(jì)了系統(tǒng)的總體結(jié)構(gòu)。本系統(tǒng)主要由數(shù)據(jù)共享處理、日志管理和監(jiān)視告警三部分組成,各部分依賴性低,耦合性弱,結(jié)構(gòu)更加明確,增加了系統(tǒng)的可擴(kuò)展性,極大降低了后期維護(hù)的成本和時(shí)間[9],系統(tǒng)總體架構(gòu)如圖2所示。
圖2 系統(tǒng)總體架構(gòu)
根據(jù)應(yīng)用需求,系統(tǒng)設(shè)計(jì)了數(shù)據(jù)共享處理、日志管理和監(jiān)視告警等功能,其中數(shù)據(jù)共享處理功能包括文件解碼入庫模塊、補(bǔ)處理模塊和省際共享模塊,日志管理功能包括日志生成、日志存儲和日志調(diào)用,監(jiān)視告警功能包括短信告警、微信告警和頁面告警。
2.2.1 數(shù)據(jù)共享處理
氣象部門的降水監(jiān)測系統(tǒng)定時(shí)采集小時(shí)和分鐘降水資料,而水文部門降水監(jiān)測系統(tǒng)僅監(jiān)測和傳輸發(fā)生降水時(shí)次資料,數(shù)據(jù)頻次具有不確定性特點(diǎn),因此通過設(shè)置高頻率掃描頻次對水文共享資料文件進(jìn)行實(shí)時(shí)掃描,確保共享數(shù)據(jù)文件接收和處理的完整性、及時(shí)性。將掃描獲取的文件列表,寫入解析入庫處理隊(duì)列,提取文件內(nèi)容,并寫入數(shù)據(jù)庫相應(yīng)數(shù)據(jù)表,同時(shí)生成文件傳輸情況、解碼情況、入庫情況和備份情況日志文件,提供系統(tǒng)監(jiān)控使用。日志文件中,由于網(wǎng)絡(luò)故障、設(shè)備故障和人為操作等原因,不可避免會造成系統(tǒng)運(yùn)行中斷等異常情況,導(dǎo)致某個時(shí)次或時(shí)間段范圍內(nèi)報(bào)文未及時(shí)處理,系統(tǒng)提供異常處理功能,實(shí)現(xiàn)缺失數(shù)據(jù)的手動補(bǔ)處理,保障實(shí)時(shí)共享數(shù)據(jù)文件接收和處理的及時(shí)性、完整性和連續(xù)性。數(shù)據(jù)共享處理流程如圖3所示。
2.2.2 日志管理
采用日志管理方式,對系統(tǒng)運(yùn)行的關(guān)鍵環(huán)節(jié)、系統(tǒng)服務(wù)器狀態(tài)、網(wǎng)絡(luò)狀態(tài)等信息進(jìn)行實(shí)時(shí)日志記錄。服務(wù)器運(yùn)行狀態(tài)和網(wǎng)絡(luò)狀態(tài)通過部署狀態(tài)采集軟件實(shí)現(xiàn),采集信息包括服務(wù)CPU、內(nèi)存、儲存空間等信息以及網(wǎng)絡(luò)中斷信息等。系統(tǒng)運(yùn)行狀態(tài)通過實(shí)時(shí)生成行為日志和異常日志信息,并按照標(biāo)準(zhǔn)規(guī)范生成相應(yīng)的日志文件[10]。對日志文件進(jìn)行解析處理,提取數(shù)據(jù)收集、數(shù)據(jù)處理、數(shù)據(jù)儲存管理等系統(tǒng)狀態(tài)信息及異常告警信息,寫入系統(tǒng)的監(jiān)視信息數(shù)據(jù)庫,為后續(xù)系統(tǒng)分析和故障處理提供依據(jù)。日志管理流程如圖4所示。
圖3 數(shù)據(jù)共享處理流程
圖4 日志管理流程
2.2.3 監(jiān)視告警
監(jiān)視告警功能提供頁面告警(見圖5)、短信告警和微信告警三種方式,為業(yè)務(wù)值班人員及系統(tǒng)管理員提供及時(shí)的監(jiān)視告警信息。系統(tǒng)通過實(shí)時(shí)讀取監(jiān)視信息數(shù)據(jù)庫的數(shù)據(jù)記錄,監(jiān)測到異常情況,并根據(jù)參數(shù)配置的監(jiān)控告警規(guī)則判斷告警級別,分為緊急告警、嚴(yán)重告警、一般告警[11]。若為一般告警僅提供頁面顯示,若為緊急告警和嚴(yán)重告警,監(jiān)視系統(tǒng)則發(fā)出異常聲音告警,并同時(shí)以短信和微信的方式,把異常信息發(fā)送至值班人員和管理人員,保障異常情況被快速處理。
圖5 系統(tǒng)監(jiān)控告警頁面
氣象水文數(shù)據(jù)共享處理系統(tǒng)采用文本文件作為傳輸標(biāo)準(zhǔn)格式,由于每時(shí)次共享傳輸文件數(shù)量大,采用單線程順序處理所有文件耗時(shí)長,無法滿足實(shí)時(shí)觀測資料時(shí)效性需求,為此采用多線程處理方式,根據(jù)文件數(shù)和線程數(shù),將全部處理文件分配到各個線程同步處理,極大提高了數(shù)據(jù)解析入庫處理效率。
對系統(tǒng)的目錄掃描、文件傳輸,包括目錄掃描線程、文件傳輸線程、數(shù)據(jù)處理和解碼入庫分別采用不同的處理線程來提高系統(tǒng)處理效率。目錄掃描線程定時(shí)掃描共享目錄下的數(shù)據(jù)文件,通過文件名匹配和數(shù)據(jù)格式檢查,剔除異常數(shù)據(jù)文件,得到每時(shí)次的處理文件列表。文件傳輸線程實(shí)現(xiàn)收集和發(fā)送氣象雨量文件和水文數(shù)據(jù)文件,實(shí)現(xiàn)數(shù)據(jù)文件實(shí)時(shí)共享。數(shù)據(jù)處理線程使用CIMISS氣象數(shù)據(jù)統(tǒng)一服務(wù)接口(MUSIC)快速獲取地面逐小時(shí)雨量數(shù)據(jù),根據(jù)文件命名規(guī)則和文件標(biāo)準(zhǔn)格式生成氣象雨量數(shù)據(jù)文件。文件解碼入庫線程對文件內(nèi)容進(jìn)行逐行解析處理,提取時(shí)間、經(jīng)度、緯度、站號、要素和要素值等信息,當(dāng)文件數(shù)據(jù)讀取結(jié)束后,將提取的信息一次性寫入氣象水文共享數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)庫。
共享數(shù)據(jù)以CIMISS數(shù)據(jù)源和水利數(shù)據(jù)為基礎(chǔ),數(shù)據(jù)標(biāo)準(zhǔn)保持與CIMISS數(shù)據(jù)環(huán)境的一致性,以統(tǒng)一接口服務(wù)的方式面向業(yè)務(wù)應(yīng)用提供服務(wù)。為了提高數(shù)據(jù)讀寫性能、數(shù)據(jù)庫訪問速度和數(shù)據(jù)查詢速度,保證共享數(shù)據(jù)入庫的及時(shí)性,采用視圖、索引、主鍵或復(fù)合主鍵等技術(shù)對數(shù)據(jù)庫進(jìn)行優(yōu)化設(shè)計(jì),不同的要素分開存儲在不同的實(shí)體數(shù)據(jù)表中[12-13]。根據(jù)業(yè)務(wù)需求,系統(tǒng)設(shè)計(jì)并建立了元數(shù)據(jù)表、臺站基本信息表、雨量數(shù)據(jù)表、水位流量數(shù)據(jù)表和監(jiān)視告警信息表等。元數(shù)據(jù)表用于存儲關(guān)于數(shù)據(jù)的說明性信息,是關(guān)于數(shù)據(jù)的數(shù)據(jù)或描述數(shù)據(jù)的數(shù)據(jù),包括氣象水文共享數(shù)據(jù)類型、數(shù)據(jù)類型標(biāo)識、各個要素的說明;臺站基本信息表用于存儲站點(diǎn)信息;雨量數(shù)據(jù)表和水位流量數(shù)據(jù)表分別存儲水文站觀測的降水量、水位和流量等不同要素?cái)?shù)據(jù);監(jiān)視告警信息表用于存儲系統(tǒng)運(yùn)行環(huán)境狀態(tài)、系統(tǒng)運(yùn)行狀態(tài)指標(biāo)和網(wǎng)絡(luò)連接狀態(tài)等信息。
基于建立的共享數(shù)據(jù)庫,采用rest方式設(shè)計(jì)了一套統(tǒng)一的數(shù)據(jù)訪問接口。根據(jù)數(shù)據(jù)共享服務(wù)需求,設(shè)計(jì)并建立了按時(shí)段檢索地面降水、按時(shí)間檢索地面降水、按時(shí)段統(tǒng)計(jì)地面降水、按時(shí)間段及站號檢索地面降水等不同的功能接口(見表1)。rest具有訪問數(shù)據(jù)快,接口調(diào)用簡單等優(yōu)勢,以按時(shí)間段及站號檢索地面降水接口為例,通過調(diào)用getSurfEleByTimeRangeAnd StaID接口,獲取了2019年3月02日至2019年3月03日(北京時(shí))水文站(站號為62422800)24小時(shí)降水量及站點(diǎn)元數(shù)據(jù)信息(見表2)。
表1 接口說明
表2 按時(shí)間段及站號檢索返回結(jié)果
微信接收監(jiān)視報(bào)警模塊使用企業(yè)微信豐富的API接口和應(yīng)用與小程序的功能,采用shell腳本和HTML5等開發(fā)技術(shù),通過接口憑證調(diào)用企業(yè)微信號提供的開發(fā)接口,建立本地應(yīng)用程序與企業(yè)微信之間的連接和交互,實(shí)現(xiàn)監(jiān)視報(bào)警信息推送至值班人員和管理人員的微信上。用戶不需要增加手機(jī)app,通過關(guān)注企業(yè)微信號后,即可獲得內(nèi)容豐富且具有個性化的移動應(yīng)用[14]。
Web端短信發(fā)送監(jiān)視報(bào)警模塊是在移動代理服務(wù)器(云MAS短信服務(wù)平臺)的基礎(chǔ)上,采用C#編程語言調(diào)用Mas機(jī)API接口方式制作的短信發(fā)送入庫接口,調(diào)用該接口可以發(fā)送監(jiān)視報(bào)警信息至移動、聯(lián)通和電信的手機(jī)上,實(shí)現(xiàn)“三網(wǎng)合一”,同時(shí)將短信發(fā)送返回狀態(tài)、手機(jī)號和短信內(nèi)容保存至數(shù)據(jù)庫。為了防止值班人員和管理人員收到的短信含有亂碼,短信信息的字符串編碼與發(fā)送短信的服務(wù)器的編碼一致,即使用UTF-8編碼,發(fā)送至多個用戶時(shí),可以使用逗號分隔電話號碼。設(shè)置網(wǎng)段限制,防止未授權(quán)的用戶調(diào)用該接口發(fā)送非法短信信息。
本系統(tǒng)為全省氣象部門提供了高密度的站點(diǎn)實(shí)況降水?dāng)?shù)據(jù),有效支撐了本省省市縣三級業(yè)務(wù)應(yīng)用。江西省氣象信息中心基于該共享系統(tǒng)的數(shù)據(jù)接口,采用基于RIA的WebGIS技術(shù),建立了江西省氣象、水文雨情信息的分析平臺,實(shí)現(xiàn)了水文站、氣象站降水疊加地理信息的一張圖顯示,具備數(shù)據(jù)的等值面繪制、數(shù)據(jù)統(tǒng)計(jì)分析,數(shù)據(jù)查詢、導(dǎo)出等功能[15],平臺在降水監(jiān)測,尤其是強(qiáng)降水監(jiān)測中發(fā)揮了重要作用。
根據(jù)氣象部門和水利部門的監(jiān)測自動化系統(tǒng)運(yùn)行機(jī)制的不同,設(shè)計(jì)和實(shí)現(xiàn)了一套具有收集、分發(fā)、處理、共享、監(jiān)視、告警、日志管理和數(shù)據(jù)存儲管理功能的氣象水文數(shù)據(jù)實(shí)時(shí)共享系統(tǒng),并且對氣象水文共享數(shù)據(jù)文件接收、處理、發(fā)送、日志管理和監(jiān)視告警進(jìn)行了詳細(xì)的闡述。
(1)通過政務(wù)外網(wǎng)建立了跨部門的數(shù)據(jù)共享與交換機(jī)制,加強(qiáng)了數(shù)據(jù)共享的實(shí)時(shí)性和有效性;通過多元化的監(jiān)視報(bào)警方式,提高了數(shù)據(jù)傳輸?shù)募皶r(shí)性和穩(wěn)定性;利用多線程的數(shù)據(jù)處理方式,提升了數(shù)據(jù)解碼入庫的時(shí)效性和并發(fā)性。
(2)系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)共享處理、數(shù)據(jù)存儲、日志管理和監(jiān)視告警等功能,建立了氣象和水文共享數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)庫和監(jiān)測告警信息數(shù)據(jù)庫,為省市縣三級業(yè)務(wù)的應(yīng)用提供統(tǒng)一的數(shù)據(jù)訪問接口。日志管理和監(jiān)視告警為值班員和業(yè)務(wù)管理人員對系統(tǒng)故障判斷和處理提供了可靠的決策依據(jù),通過界面顯示、短信和微信方式相結(jié)合,實(shí)現(xiàn)內(nèi)容豐富且具有個性化的移動應(yīng)用。
(3)系統(tǒng)投入業(yè)務(wù)運(yùn)行后,顯著提高了數(shù)據(jù)傳輸?shù)募皶r(shí)性和數(shù)據(jù)使用的完整性,能夠?yàn)樘嵘矚庀蠓?wù)水平、氣象預(yù)報(bào)預(yù)警與防災(zāi)減災(zāi)綜合服務(wù)能力、洪水旱情預(yù)測及跨行業(yè)跨部門的信息共享、空間集成以及跨學(xué)科的可持續(xù)發(fā)展研究提供有力的數(shù)據(jù)支撐,為氣象部門、水利部門、市縣以及周邊省的業(yè)務(wù)、科研、專業(yè)服務(wù)提供完整有效的數(shù)據(jù)環(huán)境。