王文勇,袁洪釗,周 雪,陳 林,何汝凡
(1.貴州省黔西南自治州氣象局,貴州 興義 562400;2.貴州省安龍縣氣象局,貴州 安龍 552400)
?
黔西南州區(qū)域自動站氣象資料繪圖系統(tǒng)的研制
王文勇1,袁洪釗1,周 雪2,陳 林2,何汝凡2
(1.貴州省黔西南自治州氣象局,貴州 興義 562400;2.貴州省安龍縣氣象局,貴州 安龍 552400)
隨著氣象服務的不斷推進,用戶對氣象服務產(chǎn)品的要求越來越高,提高氣象服務產(chǎn)品的質(zhì)量對于基層氣象臺站來說顯得至關重要。目前,區(qū)域氣象站的建設已覆蓋到各鄉(xiāng)鎮(zhèn),將這些區(qū)域氣象站資料用直觀的色斑圖來顯示,可有效提高氣象服務質(zhì)量和服務水平。系統(tǒng)綜合使用VB、Fortran、GrADS等技術,實現(xiàn)對區(qū)域自動站氣象資料的查詢、處理與繪圖等功能,并可分縣制作繪圖邊界和色斑圖,為決策氣象服務提供精美素材。
VB語言;Fortran語言;GrADS繪圖;區(qū)域自動站;氣象資料
近年來,區(qū)域自動氣象站建設已覆蓋到各鄉(xiāng)鎮(zhèn),中小尺度的區(qū)域氣象觀測系統(tǒng)已經(jīng)形成,如何有效地利用這些豐富的氣象資料開展氣象服務,制作出內(nèi)容豐富、直觀的氣象服務產(chǎn)品,已成為當前縣級氣象部門亟需解決的事情。
在眾多的繪圖軟件中,GrADS(Grid Analysis and Display System)是當今氣象界廣泛使用的一種數(shù)據(jù)處理和顯示軟件,其具有功能強大、顯示快速、出圖類型多樣化、圖形美觀等特點。雖然GrADS的操作使用命令行方式,但GrADS以其強大的數(shù)據(jù)分析能力、靈活的環(huán)境設置、豐富的出圖類型等特點,已成為國內(nèi)外氣象界通用的標準圖形環(huán)境之一。使用GrADS繪圖時,由于需要人工輸入命令,操作起來比較繁瑣,但結(jié)合VB語言進行軟件開發(fā),可以很好地解決這個問題[1]。
Visual Basic是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動編程語言,從任何標準來說,VB都是世界上使用人數(shù)最多的語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),程序員可以輕易地使用DAO、RDO、ADO連接數(shù)據(jù)庫,輕松地創(chuàng)建ActiveX控件,或輕松地使用VB提供的組件快速建立一個應用程序[2]。GrADS以命令行方式運行,VB中的shell函數(shù)為執(zhí)行GrADS程序提供了可能,免去開發(fā)人員不熟悉GrADS的麻煩[3]。
2.1.1 混合編程 綜合使用VB語言、Fortran語言、GrADS繪圖等技術,實現(xiàn)對區(qū)域自動站氣象資料的查詢、處理與繪圖等功能。在VB語言開發(fā)環(huán)境中,主要使用shell函數(shù)分別調(diào)用Fortran程序和GrADS程序,如調(diào)用GrADS程序的命令格式為:Shell("gradsnc.exe -blc rain.gs", vbHide),調(diào)用Fortran程序的命令格式為:Shell("rain.exe", vbHide) ,其中rain.exe為Fortran語言編譯程序。
2.1.2 進程等待的實現(xiàn) VB使用shell函數(shù)時,采取多進程方式執(zhí)行。VB程序執(zhí)行完shell函數(shù)后,會立刻轉(zhuǎn)入下一語句,而不等待外部進程執(zhí)行結(jié)束,導致數(shù)據(jù)查詢未結(jié)束就開始繪圖,或者圖形還未繪制成功就顯示圖形。系統(tǒng)采用進程等待方法,即等待調(diào)用的外部進程運行結(jié)束后,再繼續(xù)執(zhí)行后面的語句。關鍵代碼如下:
hWnd=OpenProcess(&H100000,0,pid)
Do
DoEvents
Loop Until WaitForSingleObject(hWnd,0)=0
2.2 資料查詢方法
我又打量了一下屋里的擺設,心里更慌了,因為這顯然不是在我家里。我不在自家床上睡覺又會在哪里呢,我努力回憶了幾次,可腦子里始終是一截黏糊糊的空白。
在VB中,事先通過調(diào)用OpenCn模塊連接數(shù)據(jù)庫,然后調(diào)用OpenRs模塊打開數(shù)據(jù)庫記錄集。具體調(diào)用方法如下:
OpenCn(Cip, pubs, users, pw),其中Cip是服務器IP地址,pubs是數(shù)據(jù)庫名稱,users是用戶名,pw是密碼。
OpenRs(sqlstr),其中sqlstr是查詢語句,可根據(jù)實際需要編寫。系統(tǒng)主要從貴州省氣象局服務器上查詢數(shù)據(jù),SQL語句格式如下:
Sqlstr="select StationID,sum(R1H) as sums from dbo." & tabb & " where ( StationID in ( " & aa & ") and (ObservTime between′" & (t1) & "' and ′" & (t2) & "′ )) group by StationID"
其中tabb代表數(shù)據(jù)庫表tabHourData或tabRainMinute,StationID、R1H分別代表站名和小時雨量,aa代表臺站名稱,t1、t2分別代表查詢開始時間和結(jié)束時間。數(shù)據(jù)查詢輸出格式為純文本,命名為rain.txt,其存儲格式如圖1所示。
圖1 rain.txt文件格式Fig.1 File format of rain.txt
2.3 站點資料處理
根據(jù)GrADS繪制站點資料圖流程,事先使用Fortran語言將rain.txt文件處理成GrADS能讀取的二進制數(shù)據(jù)文件rain.dat,然后將Fortran處理代碼編譯成可供VB調(diào)用的可執(zhí)行程序rain.exe。
數(shù)據(jù)處理完成后,為rain.dat編寫數(shù)據(jù)描述文件rain.ctl。由于繪制站點圖需要一個地圖映射文件rain.map,此文件通過執(zhí)行“stnmap.exe -i rain.ctl”命令生成,在輸入rain.ctl時需要輸入該文件的完整路徑。
再準備供站點繪圖插值用的格點數(shù)據(jù)文件grid.dat及grid.ctl。根據(jù)用戶圖形顯示需要,編寫站點繪圖的批處理文件rain.gs。完成以上準備工作后,即可調(diào)用GrADS軟件繪制站點圖。
3.1 系統(tǒng)主界面
系統(tǒng)運行主界面簡單整潔,左側(cè)為設置和文本顯示區(qū),右側(cè)為圖形顯示區(qū),如圖2所示。
圖2 系統(tǒng)主界面Fig.2 Main interface of system
3.2 繪圖文件準備
3.2.1 地圖文件 利用各縣市邊界的經(jīng)緯度數(shù)據(jù)制作GrADS地圖文件,分別命名為:qxn.map、56792.map、57900.map、57902.map、57905.map、57906.map、57907.map、57908.map、57909.map。根據(jù)選擇的區(qū)域,繪制出相應的地圖。
3.2.2 格點數(shù)據(jù)文件 對不同區(qū)域進行繪圖時,所需要的格點數(shù)據(jù)文件不同,插值對格點的數(shù)量及分布有嚴格的要求。系統(tǒng)為各縣市分別制作了相應的格點數(shù)據(jù)文件,分別命名為:qxngrid.dat、56792grid.dat、57900grid.dat、57902grid.dat、57905grid.dat 57906
grid.dat、57907grid.dat、57908grid.dat、57909grid.dat。
3.2.3 站點信息文件 繪制站點圖需要站點信息,將黔西南州所有區(qū)域站按縣市進行分類,按要求制作為站點信息文件,分別命名為:qxn.txt、56792.txt、57900.txt、57902.txt、57905.txt、57906.txt、57907.txt、57908.txt、57909.txt。軟件在查詢數(shù)據(jù)時,也是通過讀取這些文件確定繪圖站點。
3.2.4 地圖屏蔽文件 繪制美觀的色斑圖,自然離不開對圖形的美化,利用動力論壇中網(wǎng)友提供的程序province-basemap.gs對地圖以外的區(qū)域進行屏蔽,只保留地圖內(nèi)的圖像,這樣畫出來的圖既美觀又整潔。province-basemap.gs程序需要將地圖的邊界經(jīng)緯度按要求制作成***_out.txt文件,系統(tǒng)分別為各縣市制作了此文件,分別命名為:qxn_out.txt、56792_out.txt、57900_out.txt、57902_out.txt、57905_out.txt、57906_out.txt、57907_out.txt、57908_out.txt、57909_out.txt。
3.3 主要實現(xiàn)功能
3.3.1 多種繪圖類型 不同的繪圖類型有不同的色斑,繪圖類型主要有:1 h降水量、3 h降水量、6 h降水量、12 h降水量、24 h降水量、累計小時降水量、降水距平百分率、氣溫等共8個類型,用戶可根據(jù)需要選擇不同的繪圖類型。
3.3.2 在線實時繪圖 繪圖文件生成后,選擇時間范圍,點擊“在線繪圖”按鈕,系統(tǒng)即可進行數(shù)據(jù)查詢、處理與自動繪圖,實現(xiàn)一鍵繪圖功能,并將圖形顯示于軟件界面上,生成的圖形文件rain.gif和rain.gmf自動存放在軟件目錄下,其中rain.gif文件讀取方便,但硬拷貝效果差;rain.gmf則具有高質(zhì)量、硬拷貝效果好等優(yōu)點,用于在Word、PPT等軟件中進行服務材料制作時效果較好。
3.3.3 診斷繪圖 使用該系統(tǒng)時,如發(fā)現(xiàn)某個站點的數(shù)據(jù)是錯誤的,想對其進行修改后再繪圖,此時在線繪圖就很不方便。系統(tǒng)提供了數(shù)據(jù)修改功能,只要輸入需要修改數(shù)據(jù)的臺站號及正確值,點擊“數(shù)據(jù)修改”按鈕,即可將正確的數(shù)據(jù)保存在rain.txt文件中,再點診斷繪圖,就可以不重新查詢數(shù)據(jù)庫,直接讀取修改后的數(shù)據(jù)進行繪圖。若不知道正確值,可將其值改為缺測值-999.0。
3.3.4 按鄉(xiāng)鎮(zhèn)統(tǒng)計 很多鄉(xiāng)鎮(zhèn)都有兩個以上區(qū)域自動站,如只需按鄉(xiāng)鎮(zhèn)開展服務,系統(tǒng)設計了按鄉(xiāng)鎮(zhèn)最大(高)、鄉(xiāng)鎮(zhèn)最小(低)、鄉(xiāng)鎮(zhèn)平均等功能進行統(tǒng)計,默認為不選取。
3.3.5 文本顯示區(qū)域 當繪圖類型為雨量時,將所繪站點按從大到小進行排列。當繪圖類型為氣溫時,將所繪站點按從低到高進行排列。統(tǒng)計出來的文本經(jīng)過簡單的編輯后,可用于編發(fā)氣象短信。
綜合利用VB編程語言、GrADS繪圖軟件、Fortran語言等各自的特點,設計出一個實用的區(qū)域自動站氣象資料繪圖系統(tǒng)。系統(tǒng)實現(xiàn)分縣制作地圖文件,繪制色斑圖,并將地圖以外區(qū)域屏蔽掉,繪制生成的圖形產(chǎn)品真實美觀,在雨量實時監(jiān)測方面更直觀、方便,使值班人員能夠集中精力關注本區(qū)域的雨量情況,決策者可從中直觀地了解氣象信息。同時,系統(tǒng)可生成圖形、表格、文字等3種產(chǎn)品,圖形和表格產(chǎn)品用于制作決策氣象服務材料,文字產(chǎn)品經(jīng)過簡單修改后可用于發(fā)布手機短信。另外,系統(tǒng)還實現(xiàn)了區(qū)域自動站氣象資料統(tǒng)計功能。自其投入業(yè)務運行以來,大大減輕了值班人員的工作量,明顯提高了決策氣象服務現(xiàn)代化水平。
[1] 虞蘇青,鄧世友.淺析用VB調(diào)用Grads繪圖軟件的技巧——雷達回波拼圖的報警系統(tǒng)[J].貴州氣象,2012,36(3):48-49.
[2] 彭國倫.Fortran95程序設計[M].北京:中國電力出版社,2002.
[3] 劉輝權,肖天貴,邱靜雅.氣象預報預警系統(tǒng)開發(fā)中VB與GrADS、Fortran混合編程技術[J].成都信息工程學院學報,2011, 26(2):208-214.A research of graphics system using regional weather station data in Qianxinan
WANG Wenyong1,YUAN Hongzhao1,ZHOU Xue2,CHEN Lin2,HE Rufan2
(1.Qianxinan Meteorological Bureau of Guizhou Province, Xingyi 562400, China;2.Anlong Meteorological Bureau of Guizhou Province, Anlong 552400, China)
With the advancement of meteorological service, user requirements for meteorological service products are getting higher and higher, To improve the quality of the meteorological service products is very important for the meteorological stations at basic level. At present, the construction of the regional meteorological station has been covered by the township, Drawing these regional weather station data into choroplethic graph, can effectively improve the quality and service level of meteorological service. This system can realize regional automatic weather data query, processing and mapping functions using VB, Fortran and GrADS technologies. And it can produce drawing boundary and choroplethic graph, provide fine material for decision-making meteorological service.
VB language; fortran language; GrADS language; regional automatic weather station; meteorological data
1003-6598(2016)04-0061-03
2016-03-08第
王文勇(1987—),男(苗族),助工,主要從事綜合氣象觀測及綜合管理工作,E-mail:568949994@qq.com。
P415.1+2
B