宋 崢
(嫩江尼爾基水利水電有限責(zé)任公司,黑龍江齊齊哈爾 161005)
近年來,隨著嫩江尼爾基水利水電有限責(zé)任公司和黑龍江省大興安嶺地區(qū)氣象局業(yè)務(wù)交流越來越廣泛,為了減少雨量站重復(fù)建設(shè)和節(jié)約資源,提高尼爾基水利樞紐的防汛安全保障和調(diào)度運(yùn)用水平,提高黑龍江省大興安嶺地區(qū)氣象局對重大災(zāi)害性天氣的預(yù)報(bào)能力,雙方達(dá)成協(xié)議,實(shí)現(xiàn)自動(dòng)雨量站雨量信息共享。
雨量信息共享軟件主要是解決隸屬于不同系統(tǒng)、不同管理部門、不同地域雨量信息的共享問題。其中,嫩江尼爾基水利水電有限責(zé)任公司有共享雨量測站20個(gè),中心站位于齊齊哈爾市;黑龍江省大興安嶺地區(qū)氣象局有共享雨量測站16個(gè),中心站位于加格達(dá)奇市。
由于雨量信息共享的兩家管理單位中心站分屬異地,要實(shí)現(xiàn)雨量信息共享,首先要建立兩個(gè)系統(tǒng)連接的通信橋梁,既考慮經(jīng)濟(jì)性和程序開發(fā)的便捷性,又結(jié)合相應(yīng)的安全防護(hù)策略保證可靠性,采用的是租用FTP服務(wù)器空間進(jìn)行雨量信息的交換。
FTP的全稱是File Transfer Protocol,即專門用來傳輸文件的協(xié)議。FTP在Internet上使用廣泛,是共享資源的主要途徑之一。它的特點(diǎn)是訪問方便,操作簡單,易于管理,它的主要作用是讓用戶連接上一個(gè)遠(yuǎn)程計(jì)算機(jī)(這些計(jì)算機(jī)上運(yùn)行著 FTP服務(wù)器程序)查看遠(yuǎn)程計(jì)算機(jī)有哪些文件,然后把文件從遠(yuǎn)程計(jì)算機(jī)上拷到本地計(jì)算機(jī),或把本地計(jì)算機(jī)的文件送到遠(yuǎn)程計(jì)算機(jī)上去。
采用FTP服務(wù)器空間進(jìn)行雨量信息交換的同時(shí)也帶來了安全問題。為了解決信息盜取、病毒以及黑客入侵等安全性問題,F(xiàn)TP服務(wù)器管理采用了設(shè)置登陸操作日志、限定目錄、不允許執(zhí)行exe操作以及信息保密等策略。
雨量信息共享的雙方都已經(jīng)建設(shè)了自己獨(dú)立的系統(tǒng),不僅具有信息采集、存儲(chǔ)、處理和查詢等功能,還有完善的數(shù)據(jù)定義和不同的數(shù)據(jù)庫結(jié)構(gòu)。為了將共享的雨量信息融合到對方的系統(tǒng),便于信息的存儲(chǔ)和查詢,結(jié)合FTP文件傳輸協(xié)議的形式,雨量信息交換采用報(bào)文交換的方式。
雨量信息報(bào)文交換的前提是確定報(bào)文編碼和譯碼的標(biāo)準(zhǔn),定義報(bào)文雨量信息要素,包括站碼、時(shí)間、時(shí)段標(biāo)示和雨量值。站碼是每個(gè)雨量測站的編碼,必須具有唯一性,雙方系統(tǒng)按照自己的測站編碼規(guī)定,對新增的測站進(jìn)行編制。時(shí)間是降雨量值的截止時(shí)間,這里規(guī)定每小時(shí)進(jìn)行一次雨量信息交換;時(shí)段標(biāo)示是區(qū)分小時(shí)數(shù)據(jù)和日數(shù)據(jù)的標(biāo)志,日數(shù)據(jù)按8時(shí)來分界。雨量值是時(shí)段內(nèi)將雨量的累計(jì)值,如果時(shí)段內(nèi)沒有降雨按0處理,這樣處理的好處是根據(jù)系統(tǒng)有無數(shù)據(jù)來判斷共享測站是否正常運(yùn)行,在實(shí)踐應(yīng)用過程中更加準(zhǔn)確地處理雨量數(shù)據(jù)。
雨量信息共享軟件共設(shè)計(jì)了4個(gè)模塊,分別為:雨量信息交換模塊即主程序模塊、系統(tǒng)基本參數(shù)設(shè)置模塊、測站參數(shù)設(shè)置模塊和補(bǔ)數(shù)模塊。雨量信息交換模塊主要完成程序運(yùn)行控制和雨量信息自動(dòng)交換功能;系統(tǒng)基本參數(shù)設(shè)置模塊主要完成FTP和數(shù)據(jù)庫相關(guān)信息的配置功能;測站參數(shù)設(shè)置模塊主要完成共享測站相關(guān)信息的設(shè)置功能,對于此模塊還設(shè)計(jì)有獨(dú)立的數(shù)據(jù)庫表結(jié)構(gòu),便于程序的實(shí)現(xiàn);補(bǔ)數(shù)模塊主要完成規(guī)定時(shí)間內(nèi)雨量信息的補(bǔ)傳功能。
雨量信息交換是雨量信息共享軟件的核心部分,主要包括:報(bào)文上傳和下載、報(bào)文生成和分解、SQL生成、雨量信息提取和入庫以及定時(shí)器的設(shè)定等環(huán)節(jié),各個(gè)環(huán)節(jié)在程序執(zhí)行過程中要清晰、嚴(yán)謹(jǐn)。程序設(shè)計(jì)的基本思路見圖1。
圖1 主程序流程
雨量信息共享軟件采用Java語言開發(fā),Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,正是基于Java面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì),將軟件所需要的報(bào)文上傳和下載、報(bào)文生成和分解等實(shí)體抽象出來,封裝或繼承為信息上傳、信息下載、報(bào)文形成等抽象類,圍繞程序的數(shù)據(jù)(對象)和針對該對象而嚴(yán)格定義的接口來組織程序,按照程序設(shè)計(jì)的模塊、流程逐步完成程序代碼的編譯和程序的調(diào)試。
a.雨量信息FTP上傳和下載是通過引進(jìn)sun.net.ftp.FtpClient類來實(shí)現(xiàn)的。FtpClient類涵蓋了幾乎所有的FTP功能,利用這些類的方法,可以遠(yuǎn)程登錄到FTP服務(wù)器,列舉該服務(wù)器上的目錄,設(shè)置傳輸協(xié)議,以及傳送文件。
b.雨量信息交換的時(shí)間配合??紤]到各種系統(tǒng)雨量信息采集的時(shí)間差和上傳、下載的時(shí)間差,分別限定了上傳和下載的時(shí)刻并可修改,在一定的條件下保證雨量信息的真實(shí)性和時(shí)效性。
c.保證雨量信息無漏報(bào)。造成信息漏報(bào)的有網(wǎng)絡(luò)、硬件保障以及誤操作等多種因素。為了避免此問題,程序設(shè)定了記錄上傳、下載信息時(shí)刻的臨時(shí)變量,記錄程序上次完成信息交換的時(shí)間,保證雨量信息的連續(xù)性,同時(shí)也編寫了雨量信息補(bǔ)傳功能模塊。
雨量信息共享軟件是實(shí)時(shí)運(yùn)行系統(tǒng),保證其穩(wěn)定運(yùn)行十分重要。在軟件測試過程中發(fā)現(xiàn),由于網(wǎng)絡(luò)不穩(wěn)定等原因會(huì)造成上傳或下載數(shù)據(jù)超時(shí),從而導(dǎo)致程序“假死”現(xiàn)象。經(jīng)過測試,設(shè)置 FTPClient中 setDefaultTimeout()、setConnectTimeout()、setDataTimeout()方法的超過限定時(shí)間,消除了程序“假死”現(xiàn)象。
另外,對于因數(shù)據(jù)庫讀取、數(shù)據(jù)轉(zhuǎn)換等非正常情況下的錯(cuò)誤而造成的程序中斷,采用了捕捉異常實(shí)現(xiàn)程序跳轉(zhuǎn)保證其正常運(yùn)行。捕捉程序異常日志見圖2。
圖2 捕捉程序異常日志
經(jīng)過兩年的實(shí)際運(yùn)行,共享軟件滿足了程序開發(fā)的需求,對運(yùn)行過程中出現(xiàn)的BUG也及時(shí)做了修正,能夠完成雨量信息的共享,并且能夠保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和時(shí)效性。
共享的雨量信息對等雨量面圖的制作提供了更多的信息支持,便于流域降雨特點(diǎn)的分析。雨量信息共享軟件運(yùn)行圖見圖3。
圖3 雨量信息共享軟件運(yùn)行
雨量信息共享軟件的開發(fā)和應(yīng)用解決了兩個(gè)不同管理單位的雨量信息共享問題,減少了雨量站的重復(fù)建設(shè)。將雨量信息共享的思路,推廣到整個(gè)涉及雨量信息產(chǎn)業(yè)的資源整合,有利于信息使用多元化的需求,同時(shí)帶來的安全、管理和標(biāo)準(zhǔn)等問題還需要進(jìn)一步探索,傳統(tǒng)的管理體制也需要進(jìn)一步的改革。