王樂(lè)
摘 要:伴隨科學(xué)技術(shù)水平的不斷提升,許多新技術(shù)、新理念、新方式在氣象領(lǐng)域中得到廣泛應(yīng)用,強(qiáng)有力的推動(dòng)著其發(fā)展與完善。需要指出的是,在各類氣象業(yè)務(wù)工作當(dāng)中,都需要把大量數(shù)據(jù)以一種直觀方式給顯示出來(lái)(圖像形式),而Surfer軟件便具有良好的繪圖與數(shù)據(jù)處理功能,以Microsoft為基礎(chǔ)設(shè)置COM體系OLE標(biāo)準(zhǔn)接口,并選用實(shí)用性更強(qiáng)的C++Builder6.0編程,對(duì)SurferAutomation繪圖功能施加合理化、高效化控制,因而能夠達(dá)到自動(dòng)繪制氣象數(shù)據(jù)等值線的目的。
關(guān)鍵詞:氣象數(shù)據(jù);等值線;Surfer Automation;C++
Surfer由世界著名的GoldenSoftware公司所開發(fā),其能夠基于NT系統(tǒng)與Windows系統(tǒng)的輔助下,進(jìn)行等值線圖、三維立體圖的繪制,而且在其內(nèi)部,還儲(chǔ)存者大量格網(wǎng)化方法及數(shù)據(jù)插值。因此,用戶借助其腳本語(yǔ)言(CSScripter)編程,便能夠?qū)urfer進(jìn)行控制,以此來(lái)高效繪圖;此外,還能利用其所配置的ActiveX編程接口,聯(lián)合C++、Delphi、VB等可視化編程語(yǔ)言,對(duì)Surfer繪圖施加有效控制。對(duì)于C++ Builder6.0而言(由Borland公司所開發(fā)),其實(shí)為一種比較典型的快速應(yīng)用程序開發(fā)(RAD)工具,在其COM體系結(jié)構(gòu)當(dāng)中,擁有一個(gè)標(biāo)準(zhǔn)接口,即為OLE,C++應(yīng)用程序能夠根據(jù)現(xiàn)實(shí)需要,借助其屬性、方法,來(lái)合理化、實(shí)時(shí)性且高效化調(diào)動(dòng)Surfer相關(guān)功能,最終達(dá)到二次開發(fā)Surfer應(yīng)用的目的。本文以氣象繪圖為對(duì)象,就C++與Surfer Automation在其中的具體應(yīng)用探討如下。
1 Automation技術(shù)概述
Automation技術(shù)能夠根據(jù)現(xiàn)實(shí)需要,通過(guò)某個(gè)對(duì)象,使一個(gè)應(yīng)用程序?qū)α硗庖粋€(gè)應(yīng)用程序進(jìn)行“操縱”。其較好的提供了一個(gè)自應(yīng)用程序的外部來(lái)對(duì)另外一個(gè)應(yīng)用程序進(jìn)行全面控制的編程界面。需要說(shuō)明的是,從應(yīng)用程序當(dāng)中所暴露出的對(duì)象,便是自動(dòng)化對(duì)象;外部用戶程序能夠聽過(guò)對(duì)此些對(duì)象的屬性、方法進(jìn)行合理使用,以此達(dá)到對(duì)此應(yīng)用程序施加控制的目的。還需強(qiáng)調(diào)的是,Surfer在組織其自動(dòng)化對(duì)象上,所采用的是層次化方式。當(dāng)前,已經(jīng)被常態(tài)化應(yīng)用的自動(dòng)化對(duì)象為WksDocument、PlotDocument、Application等。而在全部Surfer自動(dòng)化對(duì)象當(dāng)中,最為基礎(chǔ)的便是Application,其通常會(huì)設(shè)置在此種層次結(jié)構(gòu)的最根部,所反映或折射的是Surfer應(yīng)用程序?qū)嵗A硇柚赋龅氖牵琒hapes Collection實(shí)為全部繪圖對(duì)象的一種完整集合。各自動(dòng)化對(duì)象自身均有專屬自身的方法與屬性,比如Aexs Collection,其專屬方法為Item,而專屬屬性有三種,其一為Parent,其二是Count,其三為Application。而對(duì)于屬性所描述的內(nèi)容來(lái)講,實(shí)為對(duì)象的當(dāng)前狀態(tài),而方法則為對(duì)象的執(zhí)行功能。在整個(gè)外部程序架構(gòu)當(dāng)中,通過(guò)將各種參數(shù)值賦予屬性,并采用對(duì)象的方法,來(lái)對(duì)各種操作予以執(zhí)行,便能最終獲得Surfer所對(duì)應(yīng)的Au-tomation技術(shù)。
2 C++與Surfer Automation接口
2.1 基本原理
針對(duì)C++Builder6.0來(lái)講,其提供了能夠操作OLE對(duì)象的各種指令,比如OleFunction、lePropertyGet及CreateObject等。在實(shí)際操作過(guò)程中,Surfer能夠根據(jù)現(xiàn)實(shí)需要,提供active X自動(dòng)化對(duì)象,并且還準(zhǔn)允其它對(duì)自動(dòng)化予以支持的開發(fā)工具,調(diào)動(dòng)Surfer當(dāng)中的各種繪圖功能;另外,還需說(shuō)明的是,還可借助各種對(duì)象來(lái)實(shí)現(xiàn),比如APPlication、Axes、MapFrame等(由Surfer所提供)。應(yīng)用程序通過(guò)利用其方法以及給Surfer對(duì)象的屬性賦值,最終便能得到SurferAutomation技術(shù)。
2.2 核心接口代碼分析
通過(guò)剖析Automation技術(shù),從中可得知,C++要想對(duì)Surfer Automation進(jìn)行合理化使用,需要產(chǎn)生一個(gè)Application對(duì)象(Surfer),然后方能操縱各種層次對(duì)象的目的。借助下述代碼,便能實(shí)現(xiàn)在C++當(dāng)中將Surfer Automation對(duì)象予以生成:
IapplicationPtr pApp(__uuidof(Applica-tion));
//產(chǎn)生一個(gè)Surfer Application對(duì)象句柄,PApp->Visible= VARIANT_TRUE;
//VARIANT_TRUE使sufer應(yīng)用程序;
可見,Papp實(shí)為Surfer Application Object架構(gòu)當(dāng)中的一個(gè)句柄,借助此句柄,能夠利用其Dcouments屬性,得到1個(gè)Documents Collection對(duì)象,因此,能夠?yàn)镾urfer添加1個(gè)全新的文檔;另通過(guò)等值距、等值線范圍的設(shè)置,輸出BMP圖像。
3 氣象數(shù)據(jù)等值線繪圖系統(tǒng)
在各種氣象工作當(dāng)中,均或多或少的需要在處理好數(shù)據(jù)之后,以一種圖形方式,將其顯示出來(lái);但需要指出的是,因氣象數(shù)據(jù)在具體格式上,存在與Surfer軟件所對(duì)應(yīng)的繪圖格式不相符的情況,所以,首先要做的便是轉(zhuǎn)化“繪圖數(shù)據(jù)”的格式,然后在完成顏色設(shè)置,從中便能獲得色標(biāo)文件(自定義格式);此時(shí),可通過(guò)對(duì)Surfer繪圖的接口功能進(jìn)行調(diào)用,實(shí)現(xiàn)氣象數(shù)據(jù)至Surfer等值線繪圖處理之間的自動(dòng)化;上述操作完成后,通過(guò)開展“圖像顯示”,便能獲得等值線圖像。
4 結(jié)語(yǔ)
綜上,借助Surfer8.0版本,并與Surfer所具有的繪圖功能相結(jié)合,可以達(dá)到縮短軟件開發(fā)周期的目的,成功開發(fā)出在業(yè)務(wù)當(dāng)中有著最強(qiáng)實(shí)用性的軟件。本文借助Surfer所具有的強(qiáng)大繪圖功能,將其與C++所具有的強(qiáng)大軟件開發(fā)能力相結(jié)合,應(yīng)用在氣象繪圖,使其各項(xiàng)數(shù)據(jù)變得更加直觀、全面。
參考文獻(xiàn)
[1]張瑩, 張勝業(yè), 昌彥君.Surfer Automation技術(shù)在電法資料成圖中的應(yīng)用[J].工程地球物理學(xué)報(bào), 2019,(01):56-59.
[2]凌士兵, 林劉敏, 鄭潮宇.SURFER編程在電視氣象節(jié)目中的圖形繪制應(yīng)用[J].東南傳播, 2019,(10):165-166.
[3]楊鵬, 曹江山, 岳陽(yáng).Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用[J].河北遙感, 2018,(2):15-16.
[4]于斌, 陳希, 李妍,等.Suffer Automation技術(shù)在氣象業(yè)務(wù)軟件中的應(yīng)用研究[J].微型機(jī)與應(yīng)用, 2018, 31(011):11-13.