国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C++Builder和Surfer接口技術(shù)及其在氣象繪圖中的應(yīng)用

2014-11-07 01:08:07楊輝劉威
科技資訊 2014年10期

楊輝 劉威

摘 要:在氣象業(yè)務(wù)和科研工作中,數(shù)據(jù)的可視化處理是非常重要的技術(shù)。本文基于Surfer接口,使用C++Builder開發(fā)了氣象數(shù)據(jù)查詢系統(tǒng),將氣象要素以色斑圖的形式直觀的顯示出來,實現(xiàn)氣象數(shù)據(jù)繪圖的自動化;同時本文也給出了調(diào)用Surfer Automation接口的具體方法和技巧。

關(guān)鍵詞:C++builder sufer 氣象繪圖

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2014)04(a)-0040-01

等值線圖是氣象工作中常用到的圖形顯示方法,它可將氣象要素的分布直觀地顯示出。在業(yè)務(wù)軟件開發(fā)中,自主開發(fā)等值線的繪制算法較為復(fù)雜,因此,可通過對成熟的商業(yè)軟件進(jìn)行二次開發(fā),并銜接至自己的系統(tǒng)中來實現(xiàn)。

Surfer軟件可實現(xiàn)等值線、三維面圖的繪制且具有各種函數(shù)運(yùn)算功能[1],并提供了完整的OLE Automation功能供外部程序調(diào)用。本文采用了BCB調(diào)用Surfer接口來完成氣象數(shù)據(jù)查詢軟件的編寫,并介紹了該技術(shù)在氣象數(shù)據(jù)可視化中的一個具體應(yīng)用,實現(xiàn)數(shù)據(jù)成圖的自動化,極大提高了業(yè)務(wù)人員的工作效率。

1 Surfer等值線繪制方法及接口技術(shù)

1.1 Automation接口及其優(yōu)點

Automation接口是指軟件提供的允許外部程序訪問其對象的編程接口。用戶可利用專業(yè)的工具軟件作為后臺,利用開發(fā)工具進(jìn)行二次開發(fā),可實現(xiàn)專業(yè)軟件的絕大部分功能。

Surfer提供了一套完整的OLE Automation功能供外部應(yīng)用程序調(diào)用[2]。外部程序調(diào)用中可以給任何對象的屬性賦值,通過賦予不同的參數(shù)值改變對象的狀態(tài);方法執(zhí)行過程中可以通過參數(shù)控制圖形的輸出。

1.2 利用Surfer繪制離散點等值線的原理

Surfer繪制離散點等值線的原理是將已給出的離散點數(shù)據(jù)插值生成光滑曲線,每條曲線上的數(shù)據(jù)值都是相等的。Surfer的主要內(nèi)插計算方法有克里金插值發(fā)、三角網(wǎng)格線性法、最近距離法、最小二乘法等[3]。

2 C++Builder調(diào)用Surfer繪圖的關(guān)鍵技術(shù)

2.1 背景地圖文件的生成

將本地區(qū)氣象要素的空間變化特征直觀的顯示出來,需要將本地區(qū)邊界外的數(shù)據(jù)裁減掉[4]。這里要用到Surfer的白化功能,白化過程中需要本地區(qū)的邊界文件。本文利用MapInfo來獲取邊界數(shù)據(jù),具體方法為打開地圖,雙擊需要提取邊界的地區(qū)使其變?yōu)殛幱埃缓髮⒌乩硇畔?fù)制出來,并粘貼至一個新的數(shù)據(jù)文件中;利用ReShape功能獲取到邊界數(shù)據(jù),最后利用Export功能將邊界文件導(dǎo)出。導(dǎo)出文件經(jīng)過記事本進(jìn)行格式修改后可直接在Surfer中作為底圖載入。

2.2 數(shù)據(jù)文件的格式說明

等值線繪制前,需要對原始數(shù)據(jù)文件進(jìn)行處理,并生成如下格式的數(shù)據(jù)文件:

114.87 30.37 162.2

……

數(shù)據(jù)文件一行為一條記錄,每條記錄的三條數(shù)據(jù)分別為經(jīng)度、緯度和繪制等值線要素的值。

2.3 調(diào)用Surfer接口繪制等值線

(1)在BCB中創(chuàng)建Surfer應(yīng)用程序?qū)ο蠛屠L圖文檔,并通過修改其"Default FilePath"的值來設(shè)置默認(rèn)的文件路徑。

V=CreateOleObject("Surfer.Application");

V.OlePropertyGet("Documents").OleFunction("Add",1);

(2)數(shù)據(jù)文件的格點化與白化處理,并繪制等值線。數(shù)據(jù)文件格點化所用到的函數(shù)為“GridData”,白化過程中所用到的地圖文件的路徑為變量blank。

V.OleFunction("GridBlank",grd,blank,grd);

Plot.OlePropertyGet("Shapes").OleFunction("AddContourMap",grd);

(3)調(diào)取分級文件,并利用分級文件來為等值線填色。

CMap=MapFram.OlePropertyGet("Overlays").OleFunction("Item",1);

CMap.OlePropertyGet("Levels").OleFunction("LoadFile",lvl);

(4)添加地圖底圖與標(biāo)注,并設(shè)置標(biāo)注的屬性。設(shè)置標(biāo)注的位置時是通過設(shè)置PMap的屬性來實現(xiàn),而設(shè)置標(biāo)注的字體、大小時則需要通過設(shè)置PMapFont的屬性來實現(xiàn)。

Plot.OlePropertyGet("Shapes").OleFunction("AddBaseMap",base);

PostMap=Plot.OlePropertyGet("Shapes").OleFunction("AddPostMap",post);

PFont=PostMap.OlePropertyGet("Overlays").OleFunction("Item",1);

PFont.OlePropertyGet("LabelFont").OlePropertySet("Face","宋體");

2.4 應(yīng)用實例

區(qū)域自動氣象站是氣象監(jiān)測網(wǎng)的重要組成部分,在防汛抗旱中發(fā)揮著重要的作用。利用傳統(tǒng)的Surfer繪圖方式將區(qū)域自動站數(shù)據(jù)利用等值線的表現(xiàn)出來,步驟雖不復(fù)雜,但是比較繁瑣。利用BCB調(diào)用Surfer,可實現(xiàn)氣象數(shù)據(jù)等值線繪圖的自動化,極大地提高了工作效率。

3 結(jié)論

利用C++Builder可視化編程軟件,通過Surfer提供的Automation接口,可有效地將BCB的強(qiáng)大軟件開發(fā)功能與Surfer的高效繪圖能力無縫地結(jié)合起來,具有非常強(qiáng)的實用性。實踐證明,利用BCB與surfer的接口技術(shù)對surfer進(jìn)行控制實現(xiàn)自動化繪圖是有效的。

參考文獻(xiàn)

[1] 毛興華.一種繪制等值線的新方法[J].測繪信息與工程,2001(4):34-36.

[2] 連志鸞.Surfer二次開發(fā)實現(xiàn)加密雨量圖自動顯示與輸出[J].氣象科技,2006,34(2):220-224.

[3] 陳歡歡,李星,丁文秀.Surfer8.0等值線繪制中的十二種插值方法[J].工程地球物理學(xué)報,2007,4(1):52-57.

[4] 張娟,周秉榮,蘇獻(xiàn)鋒.VB和Surfer實現(xiàn)氣象等值線的自動繪圖[J].青海氣象,2008(3):47-50.

海晏县| 神农架林区| 和顺县| 兴隆县| 萨迦县| 余干县| 安国市| 凌云县| 常熟市| 宁阳县| 佛山市| 工布江达县| 分宜县| 冷水江市| 高阳县| 中阳县| 鹤壁市| 桑植县| 新野县| 泰州市| 教育| 麟游县| 察隅县| 比如县| 十堰市| 江西省| 棋牌| 襄城县| 凤山市| 阳江市| 光泽县| 喀什市| 梅州市| 繁峙县| 赤水市| 新绛县| 富阳市| 日照市| 汉寿县| 渝北区| 台山市|