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