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