摘 要: 針對(duì)當(dāng)前氣象業(yè)務(wù)應(yīng)用軟件存在繪制局部等值線圖編程復(fù)雜、操作繁瑣、地形邊緣不精細(xì)、要素顯示不直觀等不利于天氣分析的弱點(diǎn),以軍隊(duì)格點(diǎn)報(bào)為例,介紹了基于Surfer Automation技術(shù)繪制軍隊(duì)格點(diǎn)報(bào)等值線圖的方法,實(shí)現(xiàn)了局部精細(xì)繪制等值線圖和動(dòng)態(tài)顯示站點(diǎn)氣象要素值的功能,降低了編程復(fù)雜度,并將該技術(shù)應(yīng)用于業(yè)務(wù)應(yīng)用軟件中。
關(guān)鍵詞: Surfer Automation;等值線圖;氣象業(yè)務(wù)軟件
等值線圖是天氣分析與預(yù)報(bào)的重要工具,目前部隊(duì)氣象業(yè)務(wù)應(yīng)用軟件在繪制等值線圖方面,還存在著編程復(fù)雜、操作繁瑣、不能直觀顯示站點(diǎn)氣象要素、地形邊緣不精細(xì)等不利于天氣分析的問題。
針對(duì)以上問題,國(guó)內(nèi)有學(xué)者進(jìn)行了Surfer在氣象數(shù)據(jù)可視化領(lǐng)域中的應(yīng)用研究。梁亮[1]進(jìn)行了Surfer在氣象主分量顯示分析中的研究,實(shí)現(xiàn)了Surfer顯示氣象數(shù)據(jù)的功能;楊遠(yuǎn)航等人[2]用Delphi和Surfer接口繪制氣象要素等值線圖,實(shí)現(xiàn)了自動(dòng)氣象站數(shù)據(jù)實(shí)時(shí)顯示分析。本文介紹了利用Surfer Automation技術(shù)通過VC#編程來高效繪制軍隊(duì)格點(diǎn)報(bào)等值線圖的方法,并設(shè)計(jì)實(shí)現(xiàn)了基于Surfer Automation技術(shù)的業(yè)務(wù)應(yīng)用軟件。
1 VC#和Surfer簡(jiǎn)介
VC#是美國(guó)微軟公司為.net平臺(tái)專門設(shè)計(jì)的,由事件驅(qū)動(dòng)、完全面向?qū)ο蟮目梢暬幊陶Z(yǔ)言[3],其功能強(qiáng)大、編程簡(jiǎn)單高效。
Surfer是美國(guó)黃金軟件公司研發(fā)的專業(yè)繪制等值線圖的圖像制作分析軟件[4],因其強(qiáng)大的繪圖功能和較低的系統(tǒng)需求而被廣泛地應(yīng)用于測(cè)繪、水利、氣象等領(lǐng)域。Surfer作為專業(yè)的等值線繪圖工具,底圖邊緣繪制精細(xì)、對(duì)氣象要素場(chǎng)的分析結(jié)果準(zhǔn)確、效率較高[1],在氣象數(shù)據(jù)可視化領(lǐng)域有一定的實(shí)用價(jià)值。Surfer提供的Automation技術(shù),幾乎涵蓋了Surfer的全部功能,并支持VC#編程語(yǔ)言進(jìn)行二次開發(fā)[5]。
2 程序設(shè)計(jì)原理研究
2.1 設(shè)計(jì)原理
VC#調(diào)用Surfer Automation技術(shù)的MapFrame、PlotDocument等對(duì)象來實(shí)現(xiàn)繪制等值線圖功能。MapFrame對(duì)象結(jié)構(gòu)圖如圖1所示,其中繪圖常用到BaseMap、ContourMap、PostMap、VectorMap和Axis等接口。

在繪圖前,VC#需要對(duì)Surfer進(jìn)行引用和初始化。在VC#的項(xiàng)目管理器中添加對(duì)“Surfer.exe”文件的引用,并在程序文件中添加using Surfer聲明即可完成引用。建立Surfer的Application對(duì)象即可完成初始化。
繪圖的基本過程包括:軍隊(duì)格點(diǎn)報(bào)數(shù)據(jù)格式轉(zhuǎn)換、背景底圖的生成、等值線圖的繪制、等值線參數(shù)設(shè)定、顯示等步驟,具體流程如圖2所示。

2.2 關(guān)鍵程序研究
2.2.1 數(shù)據(jù)準(zhǔn)備
Surfer繪圖用到的數(shù)據(jù)主要有:底圖邊界文件、站點(diǎn)信息文件和站點(diǎn)氣象要素?cái)?shù)據(jù)文件。
底圖邊界文件格式和站點(diǎn)信息文件格式可利用VC#參照參考文獻(xiàn)[4]編寫。
站點(diǎn)氣象要素?cái)?shù)據(jù)來自于軍隊(duì)格點(diǎn)報(bào),而軍隊(duì)格點(diǎn)報(bào)的數(shù)據(jù)格式與Surfer要求的數(shù)據(jù)格式不同,因此需要將軍隊(duì)格點(diǎn)報(bào)數(shù)據(jù)通過VC#編程轉(zhuǎn)換成Surfer所需要的XYZ離散數(shù)據(jù)文件,即“經(jīng)度、緯度、氣象要素值”格式,一般以“.dat”為擴(kuò)展名。在生成XYZ數(shù)據(jù)文件后,需要通過Surfer Automation的GridData命令插值成為GRD等值線數(shù)據(jù)文件。GridData命令提供了包括NearestNeighbor等12種插值方法,可以根據(jù)需要選擇其中一種,大大簡(jiǎn)化了編程復(fù)雜度。根據(jù)盧涵宇等人的研究,本文選擇使用Kriging插值方法[6]。
2.2.2 帶有站點(diǎn)信息底圖的繪制
等值線通常以底圖為參考[7],可利用MapFrame中BaseMap接口添加邊界文件形成基面圖,利用PostMap接口添加站點(diǎn)信息文件形成站點(diǎn)分布圖,將站點(diǎn)分布圖覆蓋在基面圖上而形成底圖。
常見邊界文件有BLN空白邊界文件和BNA地圖邊界文件。Surfer讀取文件中所有邊界點(diǎn)的坐標(biāo)并將其繪在基面圖的相應(yīng)位置上。
站點(diǎn)信息文件采用XYZ文件格式,即“經(jīng)度、緯度、站名”格式,Surfer讀取該文件后按照站點(diǎn)經(jīng)度與緯度信息將其繪制在站點(diǎn)分布圖上。
圖3 為利用Surfer Automation技術(shù)繪制的東南沿海地區(qū)底圖效果圖。

2.2.3 等值線圖繪制與等值線參數(shù)設(shè)定
在使用Kriging插值方法將軍隊(duì)格點(diǎn)報(bào)文件插值成GRD等值線數(shù)據(jù)文件后,使用Surfer Automation的MapFrame對(duì)象的ContourMap接口加載GRD格式文件,使其作為一個(gè)圖層附加在底圖上。
通過VC#編寫的應(yīng)用程序界面,可設(shè)定等值線間隔參數(shù)并傳遞Surfer。根據(jù)等值線間隔參數(shù),ContourMap接口可以調(diào)整等值線間隔,同時(shí)顯示色標(biāo)。圖4為業(yè)務(wù)應(yīng)用軟件中等值線設(shè)定窗口,可根據(jù)業(yè)務(wù)需要調(diào)整。
通過以上步驟,Surfer共創(chuàng)建了3個(gè)圖層,分別是基面圖層、站點(diǎn)分布圖層和等值線圖層。使用PlotDocument對(duì)象的Sharps對(duì)象,選擇所有圖層,利用PlotDocument對(duì)象保存為SRF中間文件,將SRF文件用Export方法輸出保存為圖像文件。至此,等值線圖像文件已生成。

2.2.4 等值線圖的顯示
使用PictureBox控件加載Surfer生成的圖像文件,完成等值線圖像的顯示工作。
3 應(yīng)用實(shí)例
VC#調(diào)用Surfer Automation 技術(shù)編寫的業(yè)務(wù)應(yīng)用軟件,可以顯示自起報(bào)時(shí)間起特定時(shí)刻某一層次的特定氣象要素值等值線圖,并能在鼠標(biāo)所在位置顯示站點(diǎn)的站號(hào)、站名和氣象要素值,同時(shí)能夠調(diào)整等值線間隔,有目的地繪制等值線圖。圖5為VC#使用Surfer Automation技術(shù)編寫的軍隊(duì)格點(diǎn)報(bào)業(yè)務(wù)應(yīng)用軟件界面,當(dāng)前顯示了2011年7月26日08時(shí),預(yù)報(bào)時(shí)次為00 h的2 m高度溫度要素分布等值線圖,鼠標(biāo)指向?qū)跽军c(diǎn),顯示“59102尋烏28.1”,表示站號(hào):59102,站名:尋烏,2 m高度溫度為28.1℃。
與常見氣象業(yè)務(wù)繪圖軟件相比,Surfer在精細(xì)繪制地形邊緣和局地等值線方面有著較大的優(yōu)勢(shì)。Surfer Automation技術(shù)利用VC#二次開發(fā)方法在氣象數(shù)據(jù)可視化方面具有可行性,既能充分發(fā)揮VC#強(qiáng)大的界面開發(fā)功能、降低編程復(fù)雜度,又能最大限度地利用Surfer豐富的繪圖資源、減少系統(tǒng)的消耗。與網(wǎng)絡(luò)相連,還可以開發(fā)氣象數(shù)據(jù)實(shí)時(shí)顯示系統(tǒng)。
利用Surfer Automation技術(shù)編程方便、快捷、高效,在開發(fā)帶有繪圖和實(shí)時(shí)分析功能的氣象業(yè)務(wù)應(yīng)用系統(tǒng)上有一定的應(yīng)用前景。
參考文獻(xiàn)
[1] 梁亮.SURFER軟件在氣象主分量分析中的應(yīng)用[J].浙江氣象,2005,26(3):29-37.
[2] 楊遠(yuǎn)航,黃愛玉,沈永生.基于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)合編程實(shí)現(xiàn)自動(dòng)繪制氣象要素圖形[J].內(nèi)蒙古氣象,2010(2):38-40.
[6] 盧涵宇,王華軍,柳錦寶,等.基于Surfer的地學(xué)數(shù)據(jù)快速可視化研究及應(yīng)用[J].廣西大學(xué)學(xué)報(bào),2011,36(2):279-284.
[7] 楊學(xué)斌.基于SurferAutomation技術(shù)的氣象等值線自動(dòng)繪制[J].山東氣象,2010(4):30-33.
