麥宗鑒,李子平,車(chē)?guó)P華,劉祖俐
(茂名市氣象局,廣東 茂名 525000)
近年來(lái),區(qū)域性氣象災(zāi)害頻發(fā),區(qū)域自動(dòng)氣象站點(diǎn)數(shù)據(jù)的精確程度對(duì)災(zāi)害成因分析越來(lái)越重要[1-2],站點(diǎn)運(yùn)行狀態(tài)的穩(wěn)定性對(duì)站點(diǎn)數(shù)據(jù)在氣象業(yè)務(wù)應(yīng)用方面影響越來(lái)越大[3-5],數(shù)據(jù)可用性的高低直接影響到氣象服務(wù)效果。近年來(lái),國(guó)內(nèi)部分氣象科技工作者對(duì)區(qū)域氣象自動(dòng)站點(diǎn)數(shù)據(jù)利用越來(lái)越廣泛,促使氣象智能科研產(chǎn)品不斷涌現(xiàn),陳聰?shù)龋?]利用精細(xì)化預(yù)報(bào)產(chǎn)品智能解讀算法,最終實(shí)現(xiàn)給用戶(hù)提供天氣服務(wù)產(chǎn)品;湯沛等[7]整合廣東省氣象局精細(xì)化預(yù)報(bào)系統(tǒng)(GIFT),搭建精細(xì)化服務(wù)平臺(tái)。及時(shí)、高效掌握這些站點(diǎn)數(shù)據(jù)的準(zhǔn)確性已成為做好重大天氣過(guò)程預(yù)報(bào)的重要因素,為了推進(jìn)氣象現(xiàn)代化事業(yè)的發(fā)展,迫切需要加強(qiáng)茂名市、縣2級(jí)區(qū)域自動(dòng)氣象站點(diǎn)告警信息的監(jiān)控手段,進(jìn)而使站點(diǎn)數(shù)據(jù)在茂名氣象服務(wù)方面繼續(xù)發(fā)揮重要的作用。
目前,茂名全市建設(shè)了170多個(gè)區(qū)域自動(dòng)氣象站點(diǎn),但是根據(jù)未來(lái)“村村有自動(dòng)站”的配置需求,各省、市先后搭建不同架構(gòu)的監(jiān)控平臺(tái),雷衛(wèi)延等[8]搭建了廣東省級(jí)氣象觀測(cè)資料頂層集約化監(jiān)控平臺(tái),實(shí)現(xiàn)監(jiān)控多個(gè)系統(tǒng)數(shù)據(jù)流傳輸全流程;麥宗鑒等[9]構(gòu)建了市級(jí)業(yè)務(wù)保障系統(tǒng),提出了監(jiān)控地面國(guó)家站正點(diǎn)及時(shí)到報(bào)對(duì)新手業(yè)務(wù)人員的重要性;潘心順等[10]開(kāi)發(fā)了河源市自動(dòng)站資料的實(shí)時(shí)更新和顯示。區(qū)域站點(diǎn)數(shù)據(jù)作為科研項(xiàng)目重要的基礎(chǔ)數(shù)據(jù)來(lái)源,為了提供更精確的數(shù)據(jù)和做好茂名市區(qū)域自動(dòng)氣象站監(jiān)控業(yè)務(wù),在利用原有業(yè)務(wù)平臺(tái)和桌面程序[11]基礎(chǔ)上,從茂名實(shí)際出發(fā),結(jié)合一線保障人員綜合值班情況考慮,為提高茂名市級(jí)監(jiān)控管理水平,構(gòu)建了符合茂名市本地化的Web監(jiān)控平臺(tái)。
百度開(kāi)發(fā)者平臺(tái)是百度對(duì)外開(kāi)放的應(yīng)用接口平臺(tái),為國(guó)內(nèi)開(kāi)發(fā)者提供開(kāi)放的多樣化服務(wù)體系,包括百度地圖、百度語(yǔ)音播放、百度人工智能、百度自動(dòng)駕駛等應(yīng)用接口,借助百度應(yīng)用接口的靈活性和業(yè)務(wù)需求,可便捷實(shí)現(xiàn)基于百度接口的業(yè)務(wù)平臺(tái)功能建設(shè)。
百度地圖是百度公司為用戶(hù)調(diào)用網(wǎng)絡(luò)地圖應(yīng)用接口的一項(xiàng)免費(fèi)服務(wù),提供了多種服務(wù)版本,現(xiàn)在比較主流的是引用JavaScript版本,該版本使用時(shí),需要先申請(qǐng)百度授權(quán)密鑰。百度地圖不僅提供了路線導(dǎo)航、周邊搜索、路況查詢(xún)、定位標(biāo)記和自定義覆蓋物等服務(wù),而且通過(guò)鼠標(biāo)可以實(shí)現(xiàn)地圖拖拽、縮放、事件觸發(fā)等操作,并根據(jù)經(jīng)緯度信息,實(shí)時(shí)在百度地圖上展示數(shù)據(jù),使得界面更加直觀、真實(shí)反映數(shù)據(jù)的地理時(shí)空分布情況。
百度語(yǔ)音是基于HTTP請(qǐng)求的在線應(yīng)用接口技術(shù),主要分為百度語(yǔ)音識(shí)別和百度語(yǔ)音合成。百度語(yǔ)音識(shí)別是一種將語(yǔ)音識(shí)別為文字信息的技術(shù);百度語(yǔ)音合成是一種能夠?qū)⑽淖洲D(zhuǎn)化成語(yǔ)音的技術(shù),通過(guò)GET方式傳遞相關(guān)參數(shù),參數(shù)列表說(shuō)明如表1所示,它的接口地址為:“http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=5&text=要播報(bào)的站點(diǎn)告警信息”。
表1 百度語(yǔ)音接口參數(shù)列表說(shuō)明
茂名區(qū)域站點(diǎn)告警信息監(jiān)控系統(tǒng)基于B/S架構(gòu),主要監(jiān)控區(qū)域站點(diǎn)不在線時(shí)長(zhǎng)、站點(diǎn)要素異常等告警信息,市、縣2級(jí)一線保障人員可實(shí)時(shí)在線訪問(wèn)頁(yè)面和查詢(xún)信息。該系統(tǒng)分為3層構(gòu)架:數(shù)據(jù)層、邏輯層和界面層,數(shù)據(jù)層的數(shù)據(jù)主要通過(guò)PHP語(yǔ)言、HTTP協(xié)議與廣東省氣象局的一體化數(shù)據(jù)訪問(wèn)服務(wù)平臺(tái)(IDEA)建立連接后獲??;邏輯層是針對(duì)具體業(yè)務(wù)應(yīng)用對(duì)數(shù)據(jù)層數(shù)據(jù)進(jìn)行二次開(kāi)發(fā);界面層表現(xiàn)為用戶(hù)提供交互的操作界面,主要采用HTML、CSS和Bootstrap框架使得界面層簡(jiǎn)潔美觀。
該系統(tǒng)結(jié)構(gòu)明顯,進(jìn)一步增強(qiáng)系統(tǒng)的可維護(hù)性和拓展性,實(shí)現(xiàn)了數(shù)據(jù)層、邏輯層與界面層之間的低依賴(lài)、高分離。系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)流程如圖1所示。
圖1 茂名區(qū)域站監(jiān)控系統(tǒng)技術(shù)流程示意圖
該系統(tǒng)采用PHP編程語(yǔ)言結(jié)合IDEA平臺(tái)的數(shù)據(jù)接口獲取區(qū)域自動(dòng)氣象站點(diǎn)數(shù)據(jù)作為數(shù)據(jù)源,IDEA接口提供了海量詳細(xì)的氣象區(qū)域站點(diǎn)各要素的相應(yīng)字段值,為數(shù)據(jù)的二次整合提供極大的便利。該系統(tǒng)的業(yè)務(wù)核心是監(jiān)控區(qū)域氣象站點(diǎn)產(chǎn)生的數(shù)據(jù)告警信息,以站點(diǎn)為對(duì)象,根據(jù)業(yè)務(wù)實(shí)際需求封裝了數(shù)據(jù)控制類(lèi)(AreaStation類(lèi))。通過(guò)調(diào)用該類(lèi)中函數(shù)實(shí)現(xiàn)對(duì)IDEA接口數(shù)據(jù)的處理和過(guò)濾,生成業(yè)務(wù)監(jiān)控所需的告警信息,最終完成以JSON數(shù)據(jù)格式結(jié)構(gòu)的基于IDEA接口的數(shù)據(jù)整合。JSON數(shù)據(jù)格式結(jié)構(gòu)如下:
Redis是一個(gè)高性能的、二進(jìn)制安全的以鍵-值存儲(chǔ)的非關(guān)系型數(shù)據(jù)庫(kù),最大可以存儲(chǔ)512 Mb字節(jié)和任意格式的數(shù)據(jù),數(shù)據(jù)不僅可以定期更新寫(xiě)入文件持久保存,而且還可以將數(shù)據(jù)緩存在內(nèi)存中,實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面的緩存機(jī)制,提高頁(yè)面的訪問(wèn)速度。該系統(tǒng)采用Redis實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面的緩存,當(dāng)后端數(shù)據(jù)量龐大且訪問(wèn)的并發(fā)量較高時(shí),很好地解決了頁(yè)面訪問(wèn)過(guò)慢或內(nèi)存溢出的問(wèn)題,緩存在頁(yè)面生命周期內(nèi)充當(dāng)臨時(shí)服務(wù)器為用戶(hù)提供數(shù)據(jù),降低了服務(wù)器的訪問(wèn)頻次,適當(dāng)減輕了服務(wù)器的壓力。核心代碼如下:
根據(jù)茂名全市氣象區(qū)域站業(yè)務(wù)監(jiān)控本地現(xiàn)狀綜合分析,面向市、縣保障人員開(kāi)發(fā)了本監(jiān)控系統(tǒng),該系統(tǒng)通過(guò)對(duì)后端算法設(shè)定判別條件,自定義設(shè)計(jì)告警信息字符格式并在百度地圖上實(shí)現(xiàn)了6項(xiàng)功能的顯示:
1)統(tǒng)計(jì)站點(diǎn)當(dāng)前時(shí)次和連續(xù)不在線時(shí)段告警信息。系統(tǒng)提供智能識(shí)別、統(tǒng)計(jì)當(dāng)前時(shí)次不在線及站點(diǎn)連續(xù)不在線時(shí)段站點(diǎn)個(gè)數(shù),可以很方便直觀反映出區(qū)域站點(diǎn)的運(yùn)行狀態(tài),確保保障人員及時(shí)看到告警信息,提前安排工作計(jì)劃,快速響應(yīng)裝備保障任務(wù),有效提升茂名氣象的業(yè)務(wù)質(zhì)量。
2)站點(diǎn)要素值異常告警信息。氣象站點(diǎn)要素值的準(zhǔn)確性反映著當(dāng)?shù)貙?shí)際的氣象狀況,它在預(yù)報(bào)預(yù)警方面發(fā)揮著重要的作用。從該系統(tǒng)獲取的氣象要素異常告警信息包括要素值缺測(cè)、要素值超閥值、要素值疑誤等內(nèi)容,不同的異常信息為市級(jí)管理員安排具體事項(xiàng)提供數(shù)據(jù)支撐,進(jìn)一步提升市級(jí)業(yè)務(wù)管理監(jiān)控水平。
3)站點(diǎn)降雨量級(jí)告警信息。系統(tǒng)后臺(tái)自動(dòng)統(tǒng)計(jì)過(guò)去3、6和24 h的降水量,當(dāng)累積降水量達(dá)到設(shè)置的降水閾值時(shí),產(chǎn)生相應(yīng)的雨量量級(jí)告警信息。這些信息很直觀反映了站點(diǎn)區(qū)域周邊的降水實(shí)況,為業(yè)務(wù)值班人員在預(yù)警發(fā)布和防災(zāi)減災(zāi)工作提供重要的數(shù)據(jù)參考。
4)百度地圖頁(yè)面顯示。該系統(tǒng)前端采用Bootstrap框架結(jié)合百度地圖根據(jù)站點(diǎn)經(jīng)緯度疊加顯示區(qū)域站告警信息出現(xiàn)的具體位置,并通過(guò)地圖定位標(biāo)注功能和鼠標(biāo)點(diǎn)擊事件可以更直觀掌握各區(qū)域站點(diǎn)出現(xiàn)告警信息的具體內(nèi)容。要在頁(yè)面顯示百度地圖,須在"<head></head>"標(biāo)簽內(nèi)引入百度地圖應(yīng)用接口地址:"http://api.map.baidu.com/api?v=3.0&ak=密鑰"并添加"<div></div>"標(biāo)簽容器用于創(chuàng)建地圖實(shí)例。
百度地圖實(shí)例創(chuàng)建之后,通過(guò)城市地名以覆蓋物的形式設(shè)置市級(jí)行政邊界,同時(shí)運(yùn)用jQuery異步技術(shù)請(qǐng)求后端JSON數(shù)據(jù)生成告警信息在行政邊界內(nèi)疊加顯示,并利用Javascript原生技術(shù)設(shè)計(jì)定時(shí)器結(jié)合AJAX技術(shù)實(shí)現(xiàn)頁(yè)面數(shù)據(jù)局部更新,從而構(gòu)建出界面友好、美觀和簡(jiǎn)潔的交互系統(tǒng)。百度地圖顯示告警信息核心代碼如下:
5)百度語(yǔ)音播報(bào)告警信息。百度語(yǔ)音是百度公司面向網(wǎng)絡(luò)服務(wù)而開(kāi)發(fā)關(guān)于文字合成語(yǔ)音的一項(xiàng)數(shù)字信號(hào)轉(zhuǎn)換技術(shù)。該系統(tǒng)最終將生成的告警信息自動(dòng)加入表1所示的參數(shù)列表“text”隊(duì)列中按順序進(jìn)行播報(bào),通過(guò)調(diào)整適當(dāng)?shù)恼Z(yǔ)速,可以非常方便起到自動(dòng)提醒作用,其主要目的就是引起保障人員的重視。
6)業(yè)務(wù)監(jiān)控應(yīng)用。在實(shí)際工作中,市級(jí)業(yè)務(wù)管理員可以利用該系統(tǒng)實(shí)時(shí)捕獲到具體站點(diǎn)的告警信息如圖2所示,實(shí)現(xiàn)茂名市、縣2級(jí)的區(qū)域自動(dòng)氣象站監(jiān)控管理,響應(yīng)市級(jí)職能;縣級(jí)保障人員根據(jù)告警信息,第一時(shí)間響應(yīng)處理,完成縣級(jí)職能。該系統(tǒng)為市縣業(yè)務(wù)人員協(xié)同提高基層氣象服務(wù)水平提供一定的技術(shù)支撐。
圖2 茂名區(qū)域站告警信息監(jiān)控效果
WebService是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),使用XML語(yǔ)言描述的應(yīng)用平臺(tái)。按該系統(tǒng)2.2節(jié)封裝的AreaStation類(lèi)搭建WebService應(yīng)用平臺(tái),利用該類(lèi)與轉(zhuǎn)換工具類(lèi)(SoapDiscovery類(lèi))綁定自動(dòng)生成以AreaStation類(lèi)命名的wsdl文件(AreaStation.wsdl)。wsdl是基于XML語(yǔ)言編寫(xiě)的,是WebService客戶(hù)端和服務(wù)器端相互通訊的標(biāo)準(zhǔn)格式,是客戶(hù)端訪問(wèn)服務(wù)器的“橋梁”。wsdl本質(zhì)是使用XML解析AreaStation類(lèi)及其函數(shù)、參數(shù)和返回值,并在服務(wù)器端提供Web服務(wù)地址供客戶(hù)端調(diào)用,為開(kāi)發(fā)人員利用該系統(tǒng)的數(shù)據(jù)接口進(jìn)行二次開(kāi)發(fā)提供便利。
茂名區(qū)域站監(jiān)控系統(tǒng)基于百度應(yīng)用接口設(shè)計(jì),引用百度地圖和百度語(yǔ)音輔助決策,采用AJAX和JSON進(jìn)行數(shù)據(jù)交互,降低頁(yè)面數(shù)據(jù)的重復(fù)加載,為用戶(hù)帶來(lái)更好的體驗(yàn),利用Redis緩存技術(shù),提高頁(yè)面訪問(wèn)速度,減輕服務(wù)器壓力,通過(guò)設(shè)置自動(dòng)提醒界面有助于更好實(shí)時(shí)監(jiān)控告警信息,有效避免了人工監(jiān)控造成的錯(cuò)漏。
該系統(tǒng)架構(gòu)層次分明,運(yùn)行穩(wěn)定,可維護(hù)性、移植性高,無(wú)須變更基礎(chǔ)架構(gòu),只需更改少量參數(shù),即可完成廣東任何城市的本地化擴(kuò)展應(yīng)用。實(shí)踐證明,自開(kāi)發(fā)完成以來(lái),區(qū)域站出現(xiàn)的疑誤、缺測(cè)、下線等告警可以及時(shí)發(fā)現(xiàn),并快速響應(yīng)解決,對(duì)提升區(qū)域自動(dòng)氣象站的監(jiān)控水平發(fā)揮著重要的作用,為市、縣二級(jí)管理人員和保障人員提供一個(gè)很好的監(jiān)控系統(tǒng)。