陳夢(mèng)醒 王旋 王珍珍 邱麗靜
摘要:本文根據(jù)長(zhǎng)沙市氣象局在建的農(nóng)業(yè)小氣候自動(dòng)站的運(yùn)行現(xiàn)狀,并結(jié)合長(zhǎng)沙市為農(nóng)氣象服務(wù)業(yè)務(wù)發(fā)展需求分析,重新進(jìn)行軟件開(kāi)發(fā),構(gòu)建一個(gè)可實(shí)現(xiàn)數(shù)據(jù)共享的、方便快捷且功能完善的農(nóng)業(yè)小氣候自動(dòng)站資料收集與處理綜合應(yīng)用軟件平臺(tái)。
關(guān)鍵詞:自動(dòng)站;農(nóng)業(yè)小氣候觀測(cè);軟件開(kāi)發(fā);數(shù)據(jù)庫(kù)
1數(shù)據(jù)收集與處理設(shè)計(jì)
1.1數(shù)據(jù)收集入庫(kù)
數(shù)據(jù)收集入庫(kù)模塊主要由兩部分組成:數(shù)據(jù)掃描收集程序和數(shù)據(jù)分解入庫(kù)程序。掃描收集程序的主要任務(wù)是,根據(jù)配置的目錄列表,定時(shí)掃描原始數(shù)據(jù)庫(kù)并下載文本數(shù)據(jù)文件,將文件進(jìn)行分類,將需要進(jìn)行處理的文件傳送至下一程序。分解入庫(kù)程序的主要任務(wù)是,接收文件后并進(jìn)行數(shù)據(jù)信息提取,批處理解析文本數(shù)據(jù)文件寫(xiě)入數(shù)據(jù)庫(kù)表,并采用日志記錄數(shù)據(jù)入庫(kù)收集的情況。
1.2數(shù)據(jù)加工處理
收集入庫(kù)完成后,進(jìn)入系統(tǒng)后臺(tái)數(shù)據(jù)自動(dòng)加工處理模塊,加工處理模塊主要功能有:
(1)加工處理日數(shù)據(jù)。日數(shù)據(jù)作為報(bào)表統(tǒng)計(jì)的基礎(chǔ)數(shù)據(jù),需要提前進(jìn)行計(jì)算處理,每一天自動(dòng)統(tǒng)計(jì)生成各氣象要素的日數(shù)據(jù),如日降水量、日平均氣溫、日最高氣溫、日最低氣溫、日平均風(fēng)速等。
(2)生成歷史數(shù)據(jù)表??紤]到觀測(cè)數(shù)據(jù)的長(zhǎng)期儲(chǔ)存性,方便查詢統(tǒng)計(jì)的時(shí)效性,系統(tǒng)將按年分自動(dòng)生成每個(gè)站點(diǎn)的逐年歷史數(shù)據(jù)表。
(3)實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)移。實(shí)時(shí)數(shù)據(jù)表通常儲(chǔ)存一個(gè)月的實(shí)時(shí)數(shù)據(jù),每一個(gè)月將數(shù)據(jù)從實(shí)時(shí)數(shù)據(jù)表轉(zhuǎn)移數(shù)據(jù)到歷史數(shù)據(jù)表,以方便后期統(tǒng)計(jì)處理。
2軟件功能具體設(shè)計(jì)與實(shí)現(xiàn)
2.1主頁(yè)面框架設(shè)計(jì)與實(shí)現(xiàn)
本設(shè)計(jì)作為一個(gè)基于B/S模式的軟件,最主要的功能就是面向用戶操作。用戶操作的基礎(chǔ)便是軟件平臺(tái)的主頁(yè)面,通過(guò)主頁(yè)面與用戶交互,為用戶輸入信息提供接口。一個(gè)布局合理、整體統(tǒng)一的主頁(yè)面才能為用戶帶來(lái)良好的使用體驗(yàn)。因此,在一個(gè)網(wǎng)站中,所有頁(yè)面應(yīng)該具有相同的頁(yè)面結(jié)構(gòu),通過(guò)統(tǒng)一的布局將內(nèi)容顯示到所有的頁(yè)面中,為用戶使用提供最基本的功能。
2.2數(shù)據(jù)查詢統(tǒng)計(jì)模塊設(shè)計(jì)與實(shí)現(xiàn)
2.2.1數(shù)據(jù)查詢統(tǒng)計(jì)
數(shù)據(jù)查詢統(tǒng)計(jì)功能分為實(shí)時(shí)數(shù)據(jù)顯示、歷史數(shù)據(jù)查詢和數(shù)據(jù)統(tǒng)計(jì)。在統(tǒng)計(jì)完成后,用戶有時(shí)還需要根據(jù)結(jié)果進(jìn)行排序,我們使用Ajax將要素值填入表格實(shí)現(xiàn)升序排列或降序排列功能。首先把var值發(fā)送給系統(tǒng)的查詢統(tǒng)計(jì)文件statdata.asp,然后將查詢結(jié)果用XML格式輸出,使用回調(diào)函數(shù)將var值轉(zhuǎn)換成數(shù)組,填入表格進(jìn)行升降排序。
2.2.2統(tǒng)計(jì)圖顯示
統(tǒng)計(jì)圖模塊以曲線圖的方式輸出某一站點(diǎn)觀測(cè)數(shù)據(jù)的日統(tǒng)計(jì)或月統(tǒng)計(jì)結(jié)果,根據(jù)用戶選擇可進(jìn)行單要素或多要素統(tǒng)計(jì)。我們通過(guò)使用jquery jqPlot API來(lái)實(shí)現(xiàn),jqPlot是一個(gè)功能齊全的圖表工具,可以繪制曲線、柱狀、餅圖等各種統(tǒng)計(jì)圖。
2.2.3要素填圖顯示
實(shí)現(xiàn)要素填圖就是要將查詢統(tǒng)計(jì)的數(shù)據(jù)疊加顯示在地圖上,本系統(tǒng)將分為前端網(wǎng)頁(yè)和后端程序兩部分,前端網(wǎng)頁(yè)負(fù)責(zé)提交用戶請(qǐng)求的查詢要素種類和查詢時(shí)間段,后端程序則負(fù)責(zé)SQL查詢業(yè)務(wù)與流程控制,經(jīng)過(guò)后端程序處理的檢索內(nèi)容,向網(wǎng)頁(yè)提交后輸出圖形顯示。
2.2.4生成報(bào)表
報(bào)表生成模塊可以將觀測(cè)要素的日統(tǒng)計(jì)或月統(tǒng)計(jì)值,以直觀便捷、格式規(guī)范的報(bào)表形式輸出,生成Excel格式或Pdf格式。本模塊采用的是CrystalReports軟件,它是一個(gè)功能強(qiáng)大、動(dòng)態(tài)和可操作的報(bào)表解決方案,在ADO.NET中通過(guò)建立數(shù)據(jù)集對(duì)象,對(duì)數(shù)據(jù)進(jìn)行多層結(jié)構(gòu)化預(yù)處理,再通過(guò)Crystal Reports輸出報(bào)表。
2.3GIS地圖顯示模塊設(shè)計(jì)與實(shí)現(xiàn)
2.3.1基礎(chǔ)地理信息
GIS地圖是實(shí)現(xiàn)要素填圖功能的基礎(chǔ)。本模塊主要通過(guò)MapInfo地理系統(tǒng)軟件來(lái)制作地圖。首先通過(guò)經(jīng)緯度確定全市的邊界、各行政區(qū)及各縣區(qū)的邊界畫(huà)出地圖底圖,接著根據(jù)地區(qū)邊界經(jīng)緯度的極值以及地圖分辨率計(jì)算出各個(gè)站點(diǎn)的具體顯示位置。
2.3.2站點(diǎn)定位
首先確定各個(gè)站點(diǎn)以地圖分辨率為比例顯示在網(wǎng)頁(yè)中的坐標(biāo),再用各個(gè)站點(diǎn)的經(jīng)緯度計(jì)算出到地圖底圖邊界經(jīng)緯度極值的差,最后按坐標(biāo)比例確定站點(diǎn)在網(wǎng)頁(yè)顯示的坐標(biāo)。設(shè)置map_x為地圖顯示橫軸坐標(biāo),map_y為地圖顯示縱軸坐標(biāo),station_longitude為站點(diǎn)經(jīng)度,station_latitude為站點(diǎn)維度,map_longitudeMAX為地圖經(jīng)度最小值,map_longitudeMIN為地圖經(jīng)度最大值,map_latitudeMAX為地圖緯度最大值,map_latitudeMIN為地圖緯度最小值。
2.3.3地圖縮放平移
地圖必須還具備縮放平移功能。在Mapinfo軟中采用通用工具,選擇“自定義工具箱”窗口中Com組件中的MapX標(biāo)準(zhǔn)工具,設(shè)定地圖對(duì)象中的CurrentTool屬性,就可以實(shí)現(xiàn)以上功能。
設(shè)置好放大縮小工具后,我們還要在 MapXtreme控件中設(shè)置地圖中心點(diǎn)Center的經(jīng)緯度和窗口視野范圍等級(jí)VisibleRange.RangeEnd的屬性。設(shè)置好經(jīng)緯度后,將其保存到文件Frm.cs,通過(guò)其中的代碼實(shí)現(xiàn)與后臺(tái)config文件的連接。
2.4閾值報(bào)警模塊設(shè)計(jì)與實(shí)現(xiàn)
2.4.1閾值設(shè)置
閾值設(shè)置是閾值報(bào)警的基礎(chǔ),在系統(tǒng)中對(duì)溫度、雨量、風(fēng)速等要素設(shè)置閾值,當(dāng)觀測(cè)數(shù)據(jù)值超過(guò)閾值時(shí),則會(huì)引發(fā)報(bào)警。
(1)管理員進(jìn)入系統(tǒng)管理模塊,點(diǎn)擊閾值設(shè)置功能,系統(tǒng)收到并處理管理員的請(qǐng)求,并設(shè)置成功后的結(jié)果返回顯示給管理員。
(2)管理員在提交各要素的閾值設(shè)置數(shù)據(jù)時(shí),系統(tǒng)會(huì)對(duì)管理員輸入表單中的數(shù)據(jù)信息進(jìn)行合法性校驗(yàn)。通過(guò)合法性校驗(yàn)后的閾值信息,被系統(tǒng)使用Set Threshold保存至數(shù)據(jù)庫(kù)。
2.4.2閾值報(bào)警
閾值報(bào)警是在管理員對(duì)閾值設(shè)置成功的前提下,系統(tǒng)對(duì)新入庫(kù)數(shù)據(jù)的自動(dòng)化對(duì)比檢查。每當(dāng)有新的數(shù)據(jù)發(fā)送到氣象資料數(shù)據(jù)庫(kù)時(shí),系統(tǒng)觸發(fā)閾值檢測(cè)線程,將新入庫(kù)的氣象要素?cái)?shù)據(jù)值與管理員設(shè)置的閾值相對(duì)比,根據(jù)結(jié)果判斷是否啟動(dòng)閾值報(bào)警功能。
(1)新的觀測(cè)數(shù)據(jù)傳輸?shù)竭_(dá),系統(tǒng)觸發(fā)閾值檢測(cè)線程,通過(guò)select獲取系統(tǒng)中設(shè)置的閾值,返回其數(shù)值與觀測(cè)數(shù)據(jù)值進(jìn)行對(duì)比。
(2)當(dāng)觀測(cè)數(shù)據(jù)值大于閾值時(shí),系統(tǒng)將會(huì)調(diào)用create Alarm引發(fā)報(bào)警,提醒管理員數(shù)據(jù)異常。
2.5系統(tǒng)管理模塊設(shè)計(jì)與實(shí)現(xiàn)
2.5.1用戶登錄驗(yàn)證
對(duì)不同身份的用戶進(jìn)行明確的權(quán)限劃分,才能保障整個(gè)系統(tǒng)的操作安全與數(shù)據(jù)安全。在經(jīng)授權(quán)可訪問(wèn)本網(wǎng)站地址的前提下,用戶才能進(jìn)入系統(tǒng)的用戶登錄界面。
(1)用戶登錄:用戶進(jìn)入登錄頁(yè)面,輸入用戶名及密碼后,Web服務(wù)器啟動(dòng)用戶登錄驗(yàn)證,login.asp通過(guò)調(diào)用public string User Login(string username,string psw),從數(shù)據(jù)庫(kù)中獲取用戶名與密碼,與用戶提交的信息進(jìn)行匹配,匹配成功返回True,匹配失敗返回False。Web服務(wù)器根據(jù)返回值判斷用戶登錄驗(yàn)證是否成功,輸出相應(yīng)的視圖界面。
(2)身份驗(yàn)證:用戶登錄驗(yàn)證完成以后,Web服務(wù)器啟動(dòng)用戶身份驗(yàn)證,usercheck.asp通過(guò)調(diào)用public Array List Get User Pre(string username),從數(shù)據(jù)庫(kù)中獲取身份權(quán)限等級(jí),管理員返回值1,普通用戶返回值2。當(dāng)用戶點(diǎn)擊系統(tǒng)管理菜單時(shí),Web服務(wù)器根據(jù)其權(quán)限返回值判斷用戶是否有權(quán)使用該功能模塊,輸出相應(yīng)的視圖界面。
2.5.2用戶、站點(diǎn)及數(shù)據(jù)管理
管理員登錄成功以后,可以點(diǎn)擊導(dǎo)航欄的系統(tǒng)管理連接,進(jìn)入系統(tǒng)管理頁(yè)面,選擇管理類型,對(duì)用戶信息、站點(diǎn)信息及疑誤數(shù)據(jù)管理及閾值進(jìn)行添加、刪除或修改等操作。Web服務(wù)器系統(tǒng)接到管理員提交的命令,發(fā)送執(zhí)行請(qǐng)求至數(shù)據(jù)庫(kù)服務(wù)器,構(gòu)建數(shù)據(jù)操作的SQL語(yǔ)句,再調(diào)用query函數(shù)對(duì)數(shù)據(jù)庫(kù)執(zhí)行讀寫(xiě)操作,并通過(guò)affected函數(shù)查看執(zhí)行操作的行數(shù),將數(shù)據(jù)處理的結(jié)果返回Web服務(wù)器,Web服務(wù)器端以GET語(yǔ)句獲取參數(shù)值,通過(guò)數(shù)據(jù)庫(kù)控件的操作功能接口,以頁(yè)面形式輸出展示。
2.6安全訪問(wèn)模塊設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)的網(wǎng)絡(luò)安全控制硬件方面采取以下幾種措施:VPN設(shè)備采用CISCO 2801-HSEC/K9。實(shí)現(xiàn)內(nèi)部局域網(wǎng)與外部互聯(lián)網(wǎng)之間數(shù)據(jù)傳輸加密保護(hù),同時(shí)采取加密或隧道的方式進(jìn)行傳輸 ;防火墻采用SonicWALL NSA 3600;入侵檢測(cè)系統(tǒng)(IDS)采用華為NIP 2100D,可與安全VPN系統(tǒng)形成互補(bǔ),通知VPN設(shè)備中斷網(wǎng)絡(luò)(即IDS與VPN聯(lián)動(dòng)功能)等方式進(jìn)行控制。
參考文獻(xiàn)
[1]余衛(wèi)東,楊光仙,張志紅.我國(guó)農(nóng)業(yè)氣象自動(dòng)化觀測(cè)現(xiàn)狀與展望[J].氣象與科學(xué)環(huán)境,2013(05):66-67.
[2]楊玲,周威.新農(nóng)村新理念探尋為農(nóng)服務(wù)新模式[N].中國(guó)氣象報(bào),2011,06.
作者簡(jiǎn)介:陳夢(mèng)醒(1990-)女,漢族,重慶人,大學(xué)本科,助理工程師,從事氣象服務(wù)工作。