董志詢,溫田超,曹禮成,劉鳳鳳,賴 歡
1.江西省石城縣氣象局,江西石城 342700;2.贛州市南康區(qū)氣象局,江西贛州341400
隨著氣象現(xiàn)代化事業(yè)進(jìn)入高速發(fā)展的快車道,我國的氣象觀測(cè)數(shù)據(jù)質(zhì)量控制工作取得了顯著成效。中國氣象局開發(fā)的MDOS系統(tǒng),建立了省級(jí)氣象資料實(shí)時(shí)滾動(dòng)質(zhì)量控制、疑誤數(shù)據(jù)人機(jī)交互處理、臺(tái)站元數(shù)據(jù)實(shí)時(shí)管理等功能[1]。MDOS系統(tǒng)將氣象觀測(cè)要素可用時(shí)效提高到小時(shí)級(jí),并實(shí)現(xiàn)了實(shí)時(shí)資料與歷史數(shù)據(jù)的一體化查詢與處理[2]。
課題以MDOS系統(tǒng)的結(jié)構(gòu)與特點(diǎn)為基礎(chǔ),并結(jié)合基層臺(tái)站的業(yè)務(wù)工作實(shí)際,開發(fā)了MDOS疑誤信息告警軟件,對(duì)臺(tái)站疑誤信息、疑誤信息反饋等數(shù)據(jù)進(jìn)行告警和統(tǒng)計(jì),使業(yè)務(wù)人員能及時(shí)、有效地發(fā)現(xiàn)疑誤數(shù)據(jù),一鍵登錄MDOS,并從告警軟件統(tǒng)計(jì)的數(shù)據(jù)中分析疑誤信息產(chǎn)生原因,判斷儀器設(shè)備的運(yùn)行狀態(tài)是否正常。這有效地提高了基層臺(tái)站業(yè)務(wù)工作人員的工作效率,為業(yè)務(wù)工作提供了便利。此軟件小巧、易安裝,使用操作簡單,適用性廣,適合實(shí)際的業(yè)務(wù)工作。
氣象資料業(yè)務(wù)系統(tǒng)(MDOS)是一個(gè)以省級(jí)數(shù)據(jù)監(jiān)控、處理與查詢?yōu)楹诵?,涵蓋臺(tái)站級(jí)處理與反饋,銜接國家級(jí)處理與查詢的綜合性氣象資料業(yè)務(wù)平臺(tái)[2]。MDOS系統(tǒng)處理的地面氣象數(shù)據(jù)總體可分為三大類:觀測(cè)數(shù)據(jù)、元數(shù)據(jù)、附加信息數(shù)據(jù)。告警軟件接入MDOS的觀測(cè)數(shù)據(jù)主要有國家站小時(shí)數(shù)據(jù)、分鐘數(shù)據(jù)、日數(shù)據(jù)、日照日數(shù)據(jù)、區(qū)域站數(shù)據(jù)等;元數(shù)據(jù)包括臺(tái)站觀測(cè)環(huán)境變化、觀測(cè)儀器變更情況等信息;附加信息包括“紀(jì)要”“概況”等[3]。臺(tái)站對(duì)疑誤信息進(jìn)行反饋的數(shù)據(jù)主要是國家站和區(qū)域站的小時(shí)與分鐘數(shù)據(jù)[4]。
目前,MDOS系統(tǒng)的檢查內(nèi)容有內(nèi)部一致性檢查、持續(xù)性檢查、空間一致性檢查等。疑誤數(shù)據(jù)的處理主要包括對(duì)疑誤數(shù)據(jù)的分析、反饋、修正及確認(rèn)等。處理方式為數(shù)據(jù)更正文件和更正消息2種。江西省疑誤數(shù)據(jù)處理工作以省信息中心為主體,分析疑誤數(shù)據(jù)的來源、要素屬性和臺(tái)站背景元數(shù)據(jù),使用MDOS人機(jī)交互平臺(tái)完成。對(duì)明顯的錯(cuò)誤數(shù)據(jù),江西省信息中心數(shù)據(jù)處理人員判別后,對(duì)能替代或修正的數(shù)據(jù)進(jìn)行直接更正操作,否則保留原值并作出錯(cuò)誤標(biāo)記;對(duì)可疑的數(shù)據(jù),省信息中心數(shù)據(jù)處理人員能夠確認(rèn)的,直接進(jìn)行處理,不能確認(rèn)的需向臺(tái)站進(jìn)行信息反饋查詢,由基層各臺(tái)站反饋疑誤數(shù)據(jù);對(duì)缺測(cè)數(shù)據(jù),江西省信息中心數(shù)據(jù)處理人員按照有關(guān)業(yè)務(wù)規(guī)范做相應(yīng)更正或保留原值處理。
本告警軟件基于.NET框架開發(fā),程序語言使用C#。.NET框架支持多種語言(C#、VB.NET、C++、Python等)的開發(fā)。.NET提供了一個(gè)新的反射性的,且面向?qū)ο蟪绦蛟O(shè)計(jì)編程接口。.NET設(shè)計(jì)得足夠通用化,從而匯集了許多不同的高級(jí)語言。
本系統(tǒng)圖形開發(fā)工具采用Microsoft Visual Studio 2010。VS包含了整個(gè)軟件生命周期中用到的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等。所寫的目標(biāo)代碼適用于微軟支持的各種平臺(tái),包括Microsoft Windows、Windows Phone、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight。而Visual Studio .NET是用于快速生成企業(yè)級(jí)ASP.NET Web應(yīng)用程序和高性能桌面應(yīng)用程序的工具。Visual Studio包含基于組件的開發(fā)工具(如Visual C#、Visual J#、Visual Basic和Visual C++),以及許多用于簡化基于小組的解決方案的設(shè)計(jì)、開發(fā)和部署的其他技術(shù)。
軟件的業(yè)務(wù)可以劃分為模擬登錄、疑誤報(bào)警、日志統(tǒng)計(jì)、應(yīng)用設(shè)置。
2.3.1 模擬登錄輸入MDOS用戶名密碼,請(qǐng)求MDOS相應(yīng)接口判斷用戶是否登錄成功。
2.3.2 疑誤報(bào)警定時(shí)請(qǐng)求MDOS接口,判斷臺(tái)站是否報(bào)警,當(dāng)有報(bào)警產(chǎn)生時(shí),調(diào)用MAS機(jī)數(shù)據(jù)庫接口發(fā)送短信,并彈出報(bào)警窗口播放報(bào)警聲音。
2.3.3 日志統(tǒng)計(jì)請(qǐng)求MDOS數(shù)據(jù)接口,根據(jù)數(shù)據(jù)內(nèi)容統(tǒng)計(jì)報(bào)警次數(shù)和詳細(xì)內(nèi)容。
2.3.4 應(yīng)用設(shè)置設(shè)置疑誤報(bào)警監(jiān)控時(shí)間間隔和短信發(fā)送參數(shù)。
MDOS疑誤信息告警軟件基于Windows的C/S體 系,基 于MDOS的Microsoft SQL Server2008 R2數(shù)據(jù)庫,使用 Delphi 軟件在此數(shù)據(jù)庫的基礎(chǔ)上進(jìn)行二次開發(fā)。邏輯結(jié)構(gòu)為表示層、功能層、數(shù)據(jù)層典型的三層 C/S 結(jié)構(gòu)。表示層(系統(tǒng)界面)承擔(dān)著用戶與應(yīng)用間的對(duì)話功能,讓數(shù)據(jù)處理人員可以直觀地操作;功能層通過Delphi語言,實(shí)現(xiàn)具體的業(yè)務(wù)統(tǒng)計(jì)分析功能編入程序中;數(shù)據(jù)層(數(shù)據(jù)庫管理系統(tǒng))負(fù)責(zé)對(duì) SQL server 數(shù)據(jù)庫的查詢。三層C/S 結(jié)構(gòu)在邏輯上獨(dú)立,結(jié)構(gòu)分割明確。
臺(tái)站級(jí)MDOS疑誤數(shù)據(jù)處理存在需要定時(shí)查看,無法實(shí)現(xiàn)有新疑誤信息或超時(shí)限疑誤信息告警提示的功能。通過程序設(shè)計(jì)實(shí)現(xiàn)上述功能。通過自動(dòng)登錄MDOS平臺(tái),對(duì)臺(tái)站疑誤信息反饋模塊進(jìn)行定時(shí)掃描,抓取網(wǎng)頁內(nèi)容,根據(jù)關(guān)鍵字,判斷當(dāng)前是否存在需及時(shí)反饋處理的信息;統(tǒng)計(jì)各類疑誤信息,利用程序生成報(bào)警短信,通過外接設(shè)備及時(shí)發(fā)送至值班手機(jī),值班員可以第一時(shí)間得知需處理的疑誤信息;軟件邏輯結(jié)構(gòu)見圖1。
圖1 軟件邏輯結(jié)構(gòu)圖
軟件開發(fā)語言選用C#編寫Win-Form窗口程序,IDE(集成開發(fā)環(huán)境)選擇Microsoft Visual Studio2010,軟件基于.NET Framework 4.0框架開發(fā)。WinForm程序小巧便捷,目前江西省內(nèi)業(yè)務(wù)主機(jī)多數(shù)為Windows7系統(tǒng),可完美運(yùn)行該程序。根據(jù)邏輯結(jié)構(gòu),本程序可分為以下幾個(gè)模塊:網(wǎng)絡(luò)監(jiān)測(cè)和自動(dòng)登錄后臺(tái)運(yùn)行、疑誤信息抓取和日志統(tǒng)計(jì)、鈴聲告警和告警短信生成、運(yùn)行界面。軟件的登錄與運(yùn)行界面見圖2。
圖2 軟件登錄與運(yùn)行界面圖
3.2.1 網(wǎng)絡(luò)監(jiān)測(cè)和自動(dòng)登錄后臺(tái)運(yùn)行使用ping、telnet、tracert等語句把網(wǎng)絡(luò)反饋信息處理為直觀、簡單的文字描述,在軟件界面顯示。通過導(dǎo)入值班表,自動(dòng)登錄臺(tái)站MDOS管理人員賬號(hào),監(jiān)測(cè)模式下后臺(tái)定時(shí)運(yùn)行。采用Timer控件,根據(jù)設(shè)置時(shí)長自動(dòng)掃描網(wǎng)頁內(nèi)容。將賬號(hào)密碼通過Post的方式發(fā)送至服務(wù)器,在網(wǎng)頁的抓取程序中添加以下代碼,用以將用戶名和密碼Post到服務(wù)器。具體的代碼如下:
3.2.2 疑誤信息抓取和日志統(tǒng)計(jì)利用WinForm的Webbroser、Webclient、WebRequest控件功能抓取MDOS網(wǎng)頁內(nèi)容,分析源碼,利用正則表達(dá)式或DOM對(duì)象,根據(jù)關(guān)鍵字獲取需反饋的疑誤信息條數(shù)、反饋時(shí)間并寫入日志文件。根據(jù)日志文件記錄,在下次自動(dòng)掃描檢測(cè)MDOS網(wǎng)頁內(nèi)容,如發(fā)現(xiàn)上次掃描發(fā)現(xiàn)的疑誤信息未處理啟動(dòng)超時(shí)告警模塊功能,提示值班員有已超時(shí)未處理的疑誤信息。
利用Post數(shù)據(jù)成功登錄服務(wù)器應(yīng)用系統(tǒng)后,就可以抓取需要登錄的頁面,可能需要在多個(gè)Request間保持登錄狀態(tài)。首先,要使用HttpWebRequest,與WebRequest相比,變化的代碼是:Http-WebRequest request = (HttpWebRequest)HttpWebRequest.Create(url)。
3.2.3 鈴聲告警和告警短信生成根據(jù)提取到的信息,判斷有無需反饋的疑誤信息,調(diào)用System.Media.SoundPlayer方法啟動(dòng)鈴聲告警。針對(duì)網(wǎng)絡(luò)情況、超時(shí)信息啟用不同類型告警鈴聲。在外接短信設(shè)備發(fā)送目錄下生成同級(jí)別的告警鈴最新的告警短信,并將每次的告警操作寫入日志文件,便于查看報(bào)警記錄。
3.2.4 運(yùn)行界面根據(jù)上述各功能模塊,采用“Tabcontrol”選項(xiàng)卡控件分頁顯示重繪各控件,確??梢噪S窗口大小而自適應(yīng)控件大小。主要分為4頁:運(yùn)行模式、疑誤報(bào)警、日志統(tǒng)計(jì)、應(yīng)用設(shè)置。運(yùn)行模式頁顯示當(dāng)前日期、時(shí)間、值班員,提供切換按鈕,可選擇后臺(tái)運(yùn)行模式或告警查看模式。疑誤報(bào)警頁采用彈窗,置頂顯示當(dāng)前需反饋的疑誤信息。日志統(tǒng)計(jì)頁采用Listview控件顯示軟件操作日志、疑誤告警日志。應(yīng)用設(shè)置放置Textbox控件用于設(shè)定自動(dòng)掃描監(jiān)測(cè)時(shí)長等。
利用VS平臺(tái),采用C#計(jì)算機(jī)語言開發(fā)自動(dòng)監(jiān)測(cè)疑誤信息軟件,編寫WinForm窗口程序,利用控件功能提取MDOS網(wǎng)頁關(guān)鍵信息。根據(jù)提取的關(guān)鍵信息,采用彈窗、響鈴和短信報(bào)警相結(jié)合,并可以利用彈窗直接登錄MDOS2.0處理疑誤信息,可對(duì)疑誤信息條數(shù)進(jìn)行一鍵統(tǒng)計(jì),實(shí)現(xiàn)MDOS2.0疑誤信息反饋監(jiān)測(cè)。該軟件小巧易安裝,后臺(tái)運(yùn)行,自動(dòng)刷新,立即報(bào)警,第一時(shí)間內(nèi)獲取需反饋的疑誤信息并提示業(yè)務(wù)人員及時(shí)處理,避免疑誤信息漏處理,同時(shí)可以減少業(yè)務(wù)人員登錄查看MDOS,提高了人員的工作效率。及時(shí)的數(shù)據(jù)處理對(duì)保障氣象觀測(cè)數(shù)據(jù)的準(zhǔn)確性愈發(fā)重要。