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