摘 要: 針對當前氣象業(yè)務應用軟件存在繪制局部等值線圖編程復雜、操作繁瑣、地形邊緣不精細、要素顯示不直觀等不利于天氣分析的弱點,以軍隊格點報為例,介紹了基于Surfer Automation技術繪制軍隊格點報等值線圖的方法,實現(xiàn)了局部精細繪制等值線圖和動態(tài)顯示站點氣象要素值的功能,降低了編程復雜度,并將該技術應用于業(yè)務應用軟件中。
關鍵詞: Surfer Automation;等值線圖;氣象業(yè)務軟件
等值線圖是天氣分析與預報的重要工具,目前部隊氣象業(yè)務應用軟件在繪制等值線圖方面,還存在著編程復雜、操作繁瑣、不能直觀顯示站點氣象要素、地形邊緣不精細等不利于天氣分析的問題。
針對以上問題,國內(nèi)有學者進行了Surfer在氣象數(shù)據(jù)可視化領域中的應用研究。梁亮[1]進行了Surfer在氣象主分量顯示分析中的研究,實現(xiàn)了Surfer顯示氣象數(shù)據(jù)的功能;楊遠航等人[2]用Delphi和Surfer接口繪制氣象要素等值線圖,實現(xiàn)了自動氣象站數(shù)據(jù)實時顯示分析。本文介紹了利用Surfer Automation技術通過VC#編程來高效繪制軍隊格點報等值線圖的方法,并設計實現(xiàn)了基于Surfer Automation技術的業(yè)務應用軟件。
1 VC#和Surfer簡介
VC#是美國微軟公司為.net平臺專門設計的,由事件驅(qū)動、完全面向?qū)ο蟮目梢暬幊陶Z言[3],其功能強大、編程簡單高效。
Surfer是美國黃金軟件公司研發(fā)的專業(yè)繪制等值線圖的圖像制作分析軟件[4],因其強大的繪圖功能和較低的系統(tǒng)需求而被廣泛地應用于測繪、水利、氣象等領域。Surfer作為專業(yè)的等值線繪圖工具,底圖邊緣繪制精細、對氣象要素場的分析結(jié)果準確、效率較高[1],在氣象數(shù)據(jù)可視化領域有一定的實用價值。Surfer提供的Automation技術,幾乎涵蓋了Surfer的全部功能,并支持VC#編程語言進行二次開發(fā)[5]。
2 程序設計原理研究
2.1 設計原理
VC#調(diào)用Surfer Automation技術的MapFrame、PlotDocument等對象來實現(xiàn)繪制等值線圖功能。MapFrame對象結(jié)構(gòu)圖如圖1所示,其中繪圖常用到BaseMap、ContourMap、PostMap、VectorMap和Axis等接口。
在繪圖前,VC#需要對Surfer進行引用和初始化。在VC#的項目管理器中添加對“Surfer.exe”文件的引用,并在程序文件中添加using Surfer聲明即可完成引用。建立Surfer的Application對象即可完成初始化。
繪圖的基本過程包括:軍隊格點報數(shù)據(jù)格式轉(zhuǎn)換、背景底圖的生成、等值線圖的繪制、等值線參數(shù)設定、顯示等步驟,具體流程如圖2所示。
2.2 關鍵程序研究
2.2.1 數(shù)據(jù)準備
Surfer繪圖用到的數(shù)據(jù)主要有:底圖邊界文件、站點信息文件和站點氣象要素數(shù)據(jù)文件。
底圖邊界文件格式和站點信息文件格式可利用VC#參照參考文獻[4]編寫。
站點氣象要素數(shù)據(jù)來自于軍隊格點報,而軍隊格點報的數(shù)據(jù)格式與Surfer要求的數(shù)據(jù)格式不同,因此需要將軍隊格點報數(shù)據(jù)通過VC#編程轉(zhuǎn)換成Surfer所需要的XYZ離散數(shù)據(jù)文件,即“經(jīng)度、緯度、氣象要素值”格式,一般以“.dat”為擴展名。在生成XYZ數(shù)據(jù)文件后,需要通過Surfer Automation的GridData命令插值成為GRD等值線數(shù)據(jù)文件。GridData命令提供了包括NearestNeighbor等12種插值方法,可以根據(jù)需要選擇其中一種,大大簡化了編程復雜度。根據(jù)盧涵宇等人的研究,本文選擇使用Kriging插值方法[6]。
2.2.2 帶有站點信息底圖的繪制
等值線通常以底圖為參考[7],可利用MapFrame中BaseMap接口添加邊界文件形成基面圖,利用PostMap接口添加站點信息文件形成站點分布圖,將站點分布圖覆蓋在基面圖上而形成底圖。
常見邊界文件有BLN空白邊界文件和BNA地圖邊界文件。Surfer讀取文件中所有邊界點的坐標并將其繪在基面圖的相應位置上。
站點信息文件采用XYZ文件格式,即“經(jīng)度、緯度、站名”格式,Surfer讀取該文件后按照站點經(jīng)度與緯度信息將其繪制在站點分布圖上。
圖3 為利用Surfer Automation技術繪制的東南沿海地區(qū)底圖效果圖。
2.2.3 等值線圖繪制與等值線參數(shù)設定
在使用Kriging插值方法將軍隊格點報文件插值成GRD等值線數(shù)據(jù)文件后,使用Surfer Automation的MapFrame對象的ContourMap接口加載GRD格式文件,使其作為一個圖層附加在底圖上。
通過VC#編寫的應用程序界面,可設定等值線間隔參數(shù)并傳遞Surfer。根據(jù)等值線間隔參數(shù),ContourMap接口可以調(diào)整等值線間隔,同時顯示色標。圖4為業(yè)務應用軟件中等值線設定窗口,可根據(jù)業(yè)務需要調(diào)整。
通過以上步驟,Surfer共創(chuàng)建了3個圖層,分別是基面圖層、站點分布圖層和等值線圖層。使用PlotDocument對象的Sharps對象,選擇所有圖層,利用PlotDocument對象保存為SRF中間文件,將SRF文件用Export方法輸出保存為圖像文件。至此,等值線圖像文件已生成。
2.2.4 等值線圖的顯示
使用PictureBox控件加載Surfer生成的圖像文件,完成等值線圖像的顯示工作。
3 應用實例
VC#調(diào)用Surfer Automation 技術編寫的業(yè)務應用軟件,可以顯示自起報時間起特定時刻某一層次的特定氣象要素值等值線圖,并能在鼠標所在位置顯示站點的站號、站名和氣象要素值,同時能夠調(diào)整等值線間隔,有目的地繪制等值線圖。圖5為VC#使用Surfer Automation技術編寫的軍隊格點報業(yè)務應用軟件界面,當前顯示了2011年7月26日08時,預報時次為00 h的2 m高度溫度要素分布等值線圖,鼠標指向?qū)跽军c,顯示“59102尋烏28.1”,表示站號:59102,站名:尋烏,2 m高度溫度為28.1℃。
與常見氣象業(yè)務繪圖軟件相比,Surfer在精細繪制地形邊緣和局地等值線方面有著較大的優(yōu)勢。Surfer Automation技術利用VC#二次開發(fā)方法在氣象數(shù)據(jù)可視化方面具有可行性,既能充分發(fā)揮VC#強大的界面開發(fā)功能、降低編程復雜度,又能最大限度地利用Surfer豐富的繪圖資源、減少系統(tǒng)的消耗。與網(wǎng)絡相連,還可以開發(fā)氣象數(shù)據(jù)實時顯示系統(tǒng)。
利用Surfer Automation技術編程方便、快捷、高效,在開發(fā)帶有繪圖和實時分析功能的氣象業(yè)務應用系統(tǒng)上有一定的應用前景。
參考文獻
[1] 梁亮.SURFER軟件在氣象主分量分析中的應用[J].浙江氣象,2005,26(3):29-37.
[2] 楊遠航,黃愛玉,沈永生.基于Delphi與Surfer接口繪制氣象要素等值線圖[J].福建電腦,2010(4):147-148.
[3] DEITEL H M, DEITEL P J, LISTFIELD J, et al. C#:how to program[M].USA:Pretice Hall.[2002].http://www.deitel.com.
[4] Gold Software Inc. surfer help[J/OL].[2010-08-25].http://www.goldensoftware.com.
[5] 馬玉峰,高春香.VB與Surfer聯(lián)合編程實現(xiàn)自動繪制氣象要素圖形[J].內(nèi)蒙古氣象,2010(2):38-40.
[6] 盧涵宇,王華軍,柳錦寶,等.基于Surfer的地學數(shù)據(jù)快速可視化研究及應用[J].廣西大學學報,2011,36(2):279-284.
[7] 楊學斌.基于SurferAutomation技術的氣象等值線自動繪制[J].山東氣象,2010(4):30-33.