吳吉哲 張蕊
摘要:本文綜合運(yùn)用Java桌面應(yīng)用開發(fā)技術(shù),SQL Server技術(shù),采用Eclipse作為開發(fā)工具,同時(shí)利用氣象數(shù)據(jù)統(tǒng)一服務(wù)接口(MUSIC)在業(yè)務(wù)內(nèi)網(wǎng)環(huán)境下利用全國綜合氣象信息共享平臺(tái)(CIMISS)數(shù)據(jù),構(gòu)建一個(gè)縣級(jí)氣象站數(shù)據(jù)監(jiān)控平臺(tái)。該系統(tǒng)的開發(fā)與應(yīng)用可以很好地實(shí)現(xiàn)區(qū)域內(nèi)大風(fēng)、暴雨、高溫預(yù)警信號(hào)的監(jiān)測(cè)報(bào)警、在用站和備份站的數(shù)據(jù)對(duì)比監(jiān)測(cè)、鄉(xiāng)鎮(zhèn)區(qū)域站的故障預(yù)警、雨情匯報(bào)自動(dòng)生成的功能,界面友好美觀、性能穩(wěn)定,方便業(yè)務(wù)值班員更快、更好、更準(zhǔn)確的提供氣象服務(wù)。
關(guān)鍵詞:監(jiān)控平臺(tái);Java;預(yù)警信號(hào);氣象服務(wù)
通過計(jì)算機(jī)技術(shù)開發(fā)氣象站數(shù)據(jù)監(jiān)控平臺(tái),解決在實(shí)際氣象業(yè)務(wù)中經(jīng)常出現(xiàn)的大監(jiān)站某要素值缺測(cè),區(qū)域站掉線等故障現(xiàn)象;同時(shí)對(duì)大風(fēng)、高溫、暴雨三種預(yù)警信號(hào)達(dá)標(biāo)監(jiān)控,及時(shí)提醒值班員發(fā)報(bào)預(yù)警信息;自動(dòng)統(tǒng)計(jì)生成雨情匯報(bào)短信,提高對(duì)外雨情發(fā)布效率。
SQL Server是由Microsofi開發(fā)和推廣的,便于同各種數(shù)據(jù)庫建立聯(lián)系,進(jìn)行溝通的數(shù)據(jù)庫管理系統(tǒng)(DBMS),它擁有豐富的圖形化用戶界面,以及適用多開發(fā)平臺(tái)的編程接口工具。經(jīng)過幾個(gè)版本的更新,現(xiàn)在已經(jīng)成為商業(yè)智能的一個(gè)重要數(shù)據(jù)工具。
MUSIC: Meteorological Unified Service Interface Community,是氣象數(shù)據(jù)統(tǒng)一服務(wù)接口,基于國省統(tǒng)一的數(shù)據(jù)環(huán)境(CIMISS),面向氣象業(yè)務(wù)和科研,提供全國統(tǒng)一、標(biāo)準(zhǔn)、豐富的數(shù)據(jù)訪問服務(wù)和應(yīng)用編程接口(API),為國、省、地、縣各級(jí)應(yīng)用系統(tǒng)提供唯一權(quán)威的數(shù)據(jù)接入服務(wù)。
1 總體設(shè)計(jì)
本系統(tǒng)一共分為大監(jiān)站數(shù)據(jù)對(duì)比、區(qū)域站故障預(yù)警、預(yù)警信號(hào)監(jiān)測(cè)和雨量統(tǒng)計(jì)四個(gè)模塊。主程序由Java Timer定時(shí)器啟動(dòng)并定時(shí)運(yùn)行各個(gè)功能。Java Timer是一種Java定時(shí)器工具類,線程類(thread)用其控制后臺(tái)線程中執(zhí)行定期的任務(wù)。實(shí)際上是運(yùn)用線程,定時(shí)調(diào)度所擁有的TimerTasks。各功能模塊如圖3.1所示,在設(shè)計(jì)該平臺(tái)時(shí),為了避免數(shù)據(jù)未入庫引起的讀取錯(cuò)誤,在0、5分鐘后延遲一段時(shí)間后再執(zhí)行數(shù)據(jù)讀取操作。在此次設(shè)計(jì)中作者使用1、6分時(shí)執(zhí)行大監(jiān)站數(shù)據(jù)對(duì)比模塊;2、7分鐘執(zhí)行區(qū)域站故障監(jiān)測(cè)模塊以及預(yù)警信號(hào)監(jiān)測(cè)模塊。
2 各功能模塊程序設(shè)計(jì)
2.1 大監(jiān)站數(shù)據(jù)對(duì)比模塊
此功能模塊實(shí)現(xiàn)主要依賴于通過兩臺(tái)電腦之間的數(shù)據(jù)交流,來實(shí)現(xiàn)在用站和備份站數(shù)據(jù)的對(duì)比,首先使用在用站數(shù)據(jù)發(fā)送端軟件獲取每五分鐘產(chǎn)生一次的Z數(shù)據(jù)文件,通過TCP/IP協(xié)議發(fā)送到指定計(jì)算機(jī)(備份站計(jì)算機(jī)),數(shù)據(jù)接收端同時(shí)獲取本地的備份站Z數(shù)據(jù)文件,進(jìn)行對(duì)比分析,將異常數(shù)據(jù)及時(shí)報(bào)警。
在該模塊中,如何實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)通信傳輸是關(guān)鍵。本平臺(tái)利用TCP/IP技術(shù)實(shí)現(xiàn)兩臺(tái)工作站之間的通信。在后臺(tái)設(shè)計(jì)時(shí)分為客戶端和服務(wù)器端,使用的Java對(duì)象分別是Socket和ServerSocket。
首先,數(shù)據(jù)接收端建立連接的申請(qǐng),生成一個(gè)socket對(duì)象,ServerSocketsockeF new ServerSocket(9001);賦予一個(gè)服務(wù)器端的文件地址(之后在寫數(shù)據(jù)的時(shí)候如果文件不存在,則自動(dòng)創(chuàng)建文件并寫數(shù)據(jù),若存在文件,則會(huì)覆蓋原文件),fos - newFileOutputStream(file);運(yùn)行socket.accept0函數(shù),等待數(shù)據(jù)發(fā)送端的連接。在到達(dá)指定時(shí)間時(shí),發(fā)送端通過服務(wù)器的IP地址和端口號(hào)實(shí)現(xiàn)和服務(wù)器的連接,socket - new Socket(local,9001);獲取本地的文件的地址,建立j ava和文件的連接,獲取文件輸入流和數(shù)據(jù)輸出流(輸入和輸出都是指對(duì)于Java.文件輸入流的對(duì)象名可以為fis,數(shù)據(jù)輸出流的對(duì)象名可以為dos;反之,文件輸出流fos,數(shù)據(jù)輸入流dis,即和前者相反的過程)。
fis - new FilelnputStream(file);
dos - newD ataOutputStream(socket.getOutputStream0);
sendByte - new byte[1024];
while《length - fis.read(sendByte》>0){dos.write(sendByte.0,length);)
在發(fā)送端寫完文件后,數(shù)據(jù)接收端開始獲取數(shù)據(jù)輸入流和文件輸出流。
InputStreamiFsocket.getlnputStream0;
while《length-ir.read(getByte》!一一1){fo s.write(getByte.0, length);)
在接收完文件后,將本地兩個(gè)Z文件進(jìn)行解析。根據(jù)新型觀測(cè)站數(shù)據(jù)格式規(guī)范,將氣象站各項(xiàng)要素逐一顯示出來,并計(jì)算兩套氣象站數(shù)據(jù)差異,判斷誤差的差異度,進(jìn)行數(shù)據(jù)合理性分析,如果數(shù)據(jù)差異過大則可以判斷數(shù)據(jù)異常,進(jìn)行報(bào)警。數(shù)據(jù)的差異范圍確定經(jīng)由相關(guān)文獻(xiàn)查出,利用2019年兩套氣象站的觀測(cè)數(shù)據(jù)的差值平均值、差值標(biāo)準(zhǔn)差、一致率等方法分析評(píng)估分析后,提出在用站和備份站數(shù)據(jù)差異范圍如表1所示。
2.2 預(yù)警信號(hào)監(jiān)測(cè)模塊
預(yù)警信號(hào)的監(jiān)測(cè)首先通過在用站數(shù)據(jù)發(fā)送端軟件調(diào)取本站氣象數(shù)據(jù),進(jìn)行本站是否達(dá)到預(yù)警信號(hào)的判斷,其他區(qū)域指標(biāo)站數(shù)據(jù)通過SQL Server獲取數(shù)據(jù)庫中分鐘氣象要素?cái)?shù)據(jù),然后對(duì)各要素值閾值進(jìn)行判斷、報(bào)警。
SQL Server上文已經(jīng)介紹過,它是微軟公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由于其具有的使用方便、可伸縮性好、與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越多種編程開發(fā)平臺(tái)使用。在實(shí)際業(yè)務(wù)中,我們讀取數(shù)據(jù)庫數(shù)據(jù),同時(shí)不想改變數(shù)據(jù)原值,數(shù)據(jù)庫管理者都會(huì)對(duì)用戶權(quán)限加以限定,限制用戶擅自更改內(nèi)容。對(duì)于數(shù)據(jù)庫使用者來說,查詢操作時(shí)最為頻繁的,也是數(shù)據(jù)庫中非常重要的一項(xiàng)操作,