樊 瑋,高 瑋
(山西省氣象信息中心,山西 太原 030006)
隨著氣象科學(xué)技術(shù)的飛速發(fā)展,氣象觀測(cè)資料及各類(lèi)預(yù)報(bào)產(chǎn)品數(shù)據(jù)種類(lèi)日益增多。為了滿足預(yù)報(bào)、決策服務(wù)等相關(guān)部門(mén)的需要,我們急需建立一套完善的網(wǎng)絡(luò)管理、查詢(xún)?nèi)庀筚Y料中各類(lèi)觀測(cè)要素的查詢(xún)系統(tǒng),將現(xiàn)有的各類(lèi)數(shù)據(jù)庫(kù)中全省觀測(cè)站每小時(shí)發(fā)送的各類(lèi)氣象資料中各觀測(cè)要素,例如:全省各臺(tái)站觀測(cè)資料的入庫(kù)時(shí)間、緯度、經(jīng)度、海拔高度、以及溫度、濕度、降水量、風(fēng)速等各類(lèi)氣象觀測(cè)要素以WEB網(wǎng)頁(yè)的形式在氣象內(nèi)部Internet 網(wǎng)絡(luò)上實(shí)現(xiàn)查詢(xún)、統(tǒng)計(jì)。動(dòng)態(tài)實(shí)時(shí)地提供及時(shí)、準(zhǔn)確可靠的各類(lèi)氣象觀測(cè)資料各要素?cái)?shù)據(jù)信息。并實(shí)現(xiàn)對(duì)全省各臺(tái)站各類(lèi)觀測(cè)資料入庫(kù)統(tǒng)計(jì),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中各類(lèi)氣象資料要素的充分利用,滿足用戶對(duì)數(shù)據(jù)庫(kù)中各類(lèi)氣象要素查詢(xún)、統(tǒng)計(jì)。還可以以表格、統(tǒng)計(jì)圖表、grads 軟件繪制出色斑圖等多種形式輸出查詢(xún)結(jié)果,便于相關(guān)業(yè)務(wù)部門(mén)人員以及地市、縣觀測(cè)站工作人員查詢(xún)氣象資料各要素情況。
氣象資料數(shù)據(jù)庫(kù)管理系統(tǒng)是支持全省氣象業(yè)務(wù)內(nèi)部、外部科研開(kāi)發(fā)人員工作的氣象資料查詢(xún)平臺(tái),可對(duì)全省各級(jí)臺(tái)站各類(lèi)氣象要素進(jìn)行收集、處理、分發(fā)的存儲(chǔ)管理及查詢(xún)等多功能的應(yīng)用系統(tǒng)。該網(wǎng)站搭建在VS2010 上,采用asp.net框架下用C#語(yǔ)言進(jìn)行編程,數(shù)據(jù)庫(kù)采用了歷史數(shù)據(jù)庫(kù)SQL SERVER 數(shù)據(jù)庫(kù)。實(shí)時(shí)數(shù)據(jù)采集自O(shè)racle 數(shù)據(jù)庫(kù),前臺(tái)采用jquery,highcharts 等插件編制的氣象要素查詢(xún)網(wǎng)頁(yè)。
系統(tǒng)采用四層架構(gòu),包括:數(shù)據(jù)層、應(yīng)用支持層、業(yè)務(wù)層、表示層。數(shù)據(jù)層采用微軟的sqlhelper 連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)包括了實(shí)時(shí)數(shù)據(jù)庫(kù)、歷史數(shù)據(jù)庫(kù)、元數(shù)據(jù)庫(kù)信息,還有各類(lèi)氣象資料圖片數(shù)據(jù)。應(yīng)用支持層包括對(duì)用戶的管理、用戶權(quán)限設(shè)置、日志管理、數(shù)據(jù)管理。業(yè)務(wù)層主要是氣象要素查詢(xún)的功能模塊,包含查詢(xún)各功能模塊所用的函數(shù)。所有邏輯查詢(xún)語(yǔ)句都以存儲(chǔ)過(guò)程的形式寫(xiě)在數(shù)據(jù)庫(kù)中。如圖1 系統(tǒng)架構(gòu)圖。
圖1 系統(tǒng)架構(gòu)圖
根據(jù)我省的實(shí)際需求,本系統(tǒng)設(shè)計(jì)要實(shí)現(xiàn)以下幾項(xiàng)功能:數(shù)據(jù)管理(數(shù)據(jù)加工、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)輸出)、元數(shù)據(jù)服務(wù)(元數(shù)據(jù)發(fā)布、元數(shù)據(jù)檢索、元數(shù)據(jù)建庫(kù))[2]、數(shù)據(jù)服務(wù)(數(shù)據(jù)發(fā)布、數(shù)據(jù)查詢(xún)、數(shù)據(jù)分發(fā))、擴(kuò)展服務(wù)(專(zhuān)題服務(wù)、數(shù)據(jù)挖掘、科學(xué)論壇)、系統(tǒng)管理功能(用戶管理、安全管理、運(yùn)行監(jiān)控),具體功能結(jié)構(gòu)圖如圖2 所示。
圖2 功能結(jié)構(gòu)圖
山西省氣象信息中心現(xiàn)有實(shí)時(shí)數(shù)據(jù)庫(kù)一個(gè),歷史數(shù)據(jù)庫(kù)兩個(gè)。數(shù)據(jù)庫(kù)內(nèi)容及結(jié)構(gòu)均有所不同,且DBMS 也不同。實(shí)時(shí)庫(kù)為oracle 數(shù)據(jù)庫(kù),存有各種由北京下發(fā)的實(shí)時(shí)氣象資料。歷史庫(kù)一個(gè)為SYBASE 數(shù)據(jù)庫(kù),存放的是地面氣候月報(bào)表資料,包括每日3 次或4 次的定時(shí)觀測(cè)值;另一個(gè)為SQL Server 數(shù)據(jù)庫(kù),存放的是全省109 站建站以來(lái)的地面氣候資料定時(shí)值、日值、旬值、月值、年值資料,以及109 站從1991年開(kāi)始的逐時(shí)自記風(fēng)、自記降水資料和2004 年開(kāi)始陸續(xù)建立的多要素自動(dòng)站資料。這些資料經(jīng)過(guò)多次格式檢查和質(zhì)量控制,準(zhǔn)確性及可靠性高。因此,新建立的數(shù)據(jù)庫(kù)服務(wù)系統(tǒng)就必須是具備跨平臺(tái)、可重用、靈活性及伸縮性強(qiáng)的特點(diǎn)[3]。同時(shí),氣象信息中心作為全省氣象數(shù)據(jù)收集、處理、管理中心,數(shù)據(jù)庫(kù)系統(tǒng)還承擔(dān)著不同部門(mén)及領(lǐng)導(dǎo)的不同需求的查詢(xún)和管理功能。也就是說(shuō),這個(gè)數(shù)據(jù)庫(kù)系統(tǒng)是異質(zhì)的,目前大部分對(duì)這種異質(zhì)要求的解決方式是分布式系統(tǒng)的3 層或者多層架構(gòu)技術(shù)[3]。
系統(tǒng)主要分為以下功能模塊:首頁(yè)顯示,包含了實(shí)時(shí)氣象要素的山西省地圖GIS 顯示模塊,歷史上的天氣情況顯示模塊、歷史極值排列顯示模塊。溫度要素查詢(xún)模塊、降水量查詢(xún)模塊、風(fēng)要素查詢(xún)模塊等各類(lèi)氣象要素查詢(xún)模塊,后臺(tái)管理模塊。各氣象要素模塊下又包含各類(lèi)要素的子模塊。如圖4 所示。
圖4 系統(tǒng)查詢(xún)功能模塊
系統(tǒng)主界面上山西省地圖區(qū)域部分是用sharpmap 開(kāi)源dll 來(lái)實(shí)現(xiàn)地理數(shù)據(jù)的簡(jiǎn)單顯示。它鏈接的數(shù)據(jù)庫(kù)是oracle實(shí)時(shí)數(shù)據(jù)庫(kù)。數(shù)據(jù)訪問(wèn)層借助微軟已封裝好的sqlhelper 工具鏈接數(shù)據(jù)庫(kù)。
數(shù)據(jù)查詢(xún),也就是從數(shù)據(jù)庫(kù)中查詢(xún)用戶所需求的各類(lèi)氣象數(shù)據(jù)信息,而查詢(xún)條件的設(shè)定是衡量程序好壞的一個(gè)重要標(biāo)準(zhǔn)[4]。在設(shè)計(jì)程序時(shí)要充分考慮設(shè)計(jì)滿足用戶需求的各種查詢(xún)條件及在各種條件下顯示的查詢(xún)結(jié)果,并根據(jù)不同條件設(shè)定不同的窗體控件,以便于條件的選擇和設(shè)定。該系統(tǒng)提供了臺(tái)站查詢(xún)、氣象要素查詢(xún)、時(shí)段查詢(xún)、條件查詢(xún)、對(duì)比查詢(xún)等多種查詢(xún)功能。查詢(xún)結(jié)果可以以表格、曲線圖形等多種方式顯示出來(lái),供相關(guān)業(yè)務(wù)人員查詢(xún)。
在氣象資料數(shù)據(jù)庫(kù)查詢(xún)系統(tǒng)頁(yè)面中可以查詢(xún)以下氣象要素:
溫度查詢(xún)、降水查詢(xún)、風(fēng)要素查詢(xún)、相對(duì)濕度查詢(xún)、氣壓查詢(xún)、日照查詢(xún)、元數(shù)據(jù)查詢(xún)[2]、綜合條件查詢(xún)等模塊。
例如:在溫度查詢(xún)頁(yè)面中顯示有以下查詢(xún)要素:
逐日氣溫查詢(xún)——包括最高氣溫、平均氣溫和最低氣溫逐日查詢(xún)。每項(xiàng)查詢(xún)根據(jù)條件查詢(xún)最高(低、平均)溫度、累年值、距平、歷年同期值及年份,點(diǎn)擊年份后面圖標(biāo)可以查看該站歷史同期的溫度數(shù)據(jù)。
時(shí)段氣溫查詢(xún)——包括最高氣溫、平均氣溫和最低氣溫一年內(nèi)時(shí)段查詢(xún)。每項(xiàng)查詢(xún)根據(jù)條件查詢(xún)時(shí)間段最高(低、平均)溫度、累年值、距平,點(diǎn)擊歷史同期欄圖標(biāo)可以查看該站歷史同期的溫度數(shù)據(jù)。
極端時(shí)間點(diǎn)氣溫排位查詢(xún)——包括歷史極端氣溫、任意年極端氣溫、任意月溫度查詢(xún)、任意月極端氣溫排位查詢(xún)、某月某日極端氣溫、某年某月某日極端氣溫查詢(xún)。
歷史極端氣溫——直接查詢(xún)歷年的最高(低)溫度。
任意年極端氣溫——查詢(xún)某年最高(低)溫度、出現(xiàn)日期及歷年最值、出現(xiàn)日期、歷史排位。并且可以根據(jù)溫度閥值控制顯示數(shù)據(jù)。
任意月溫度查詢(xún)——根據(jù)年月可以選擇查詢(xún)?cè)聹囟纫刂?。并點(diǎn)擊極端高溫和極端低溫查看歷年同月的極端值。
任意月極端氣溫排位查詢(xún)——根據(jù)年月查詢(xún)?cè)撃暝碌淖罡?低)氣溫及出現(xiàn)時(shí)間、歷史排位。并且可以根據(jù)溫度閥值控制顯示數(shù)據(jù)。
某月某日極端氣溫——根據(jù)條件查詢(xún)某月某日的歷年最高(低)溫度及出現(xiàn)年份。
某年某月某日極端氣溫查詢(xún)——查詢(xún)某日最高(低)溫度、歷年最(低)溫度及出現(xiàn)日期、歷史排位。并且可以根據(jù)溫度閥值控制顯示數(shù)據(jù)。
鏈接數(shù)據(jù)庫(kù)代碼:
數(shù)據(jù)訪問(wèn)層借助微軟已封裝好的sqlhelper 工具。Sqlhelper 數(shù)據(jù)訪問(wèn)層省去了大量代碼,可以把數(shù)據(jù)訪問(wèn)層封裝起來(lái),使用起來(lái)較為方便。鏈接數(shù)據(jù)庫(kù)代碼如下:
其他氣象要素查詢(xún)?cè)诖司筒蛔鲈敿?xì)介紹。
本系統(tǒng)的實(shí)現(xiàn),實(shí)現(xiàn)了多種氣象要素的可視化查詢(xún)。用戶通過(guò)良好的界面,能夠快速檢索氣象數(shù)據(jù)的空間分布情況,為用戶提供了氣象資料查詢(xún)利用。采用了分層結(jié)構(gòu)進(jìn)行設(shè)計(jì),提高了系統(tǒng)的伸縮性和可靠性,便于日后根據(jù)業(yè)務(wù)實(shí)際需要進(jìn)行功能擴(kuò)充和系統(tǒng)的優(yōu)化。系統(tǒng)實(shí)現(xiàn)統(tǒng)一的用戶管理、統(tǒng)一的資源管理、統(tǒng)一的授權(quán)管理及統(tǒng)一的用戶界面,提高了工作效率。
[1]王建一,鄒麗君,周永吉.地面氣象要素?cái)?shù)據(jù)庫(kù)終端查詢(xún)系統(tǒng)[J].黑龍江氣象,2003(4):37-38.
[2]李集明,沈文海.氣象信息共享平臺(tái)及其關(guān)鍵技術(shù)研究[J].應(yīng)用氣象學(xué)報(bào),2006,17(5):621-628.
[3]何彬方,楊太明.省級(jí)農(nóng)業(yè)氣象數(shù)據(jù)庫(kù)及管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)農(nóng)學(xué)通報(bào),2009,25(24):520-524.
[4]易列剛,楊玲.基于C/S 和B/S 模式的氣象資料檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[G].2009 年高原山地氣象研究西南區(qū)域氣象學(xué)術(shù)交流會(huì),2009:573-577.