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