樂穎++郭一飛
摘要 等值線已經(jīng)廣泛地應(yīng)用于氣象領(lǐng)域。本文介紹了利用Surfer11.0的主要功能以及對應(yīng)的.net應(yīng)用程序的接口,將.net的軟件開發(fā)能力和Surfer的繪圖功能相結(jié)合,實(shí)現(xiàn)了基于B/S架構(gòu)的泰州地區(qū)的自動站數(shù)據(jù)的在線繪圖。
關(guān)鍵詞 Surfer;.net;自動成圖
中圖分類號 TP317.4 文獻(xiàn)標(biāo)識碼 A 文章編號 1007-5739(2015)12-0345-02
Application of Surfer Contour Drawing in Automatic Stations in Taizhou
LE Yin 1 GUO Yi-fei 2
(1 Taizhou Polytechnic College,Taizhou Jiangsu 225300; 2 Weather Bureau of Taizhou)
Abstract Contour has been widely used in the field of meteorology.This paper introduced the main functions of Surfer11.0 and the corresponding interface of .net application program. Combining .net software development capabilities with Surfer drawing functions,thus to draw contour online by automatic stations in Taizhou district based on B/S frame.
Key words Surfer;.net;automatic mapping
隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,等值線被越來越廣泛地應(yīng)用于氣象領(lǐng)域,用于研究和繪制降水、氣溫以及各類天氣形勢等。目前泰州市氣象局已安裝了103套自動氣象站,但分別由江蘇無錫所和上海長望2家提供,這就造成了數(shù)據(jù)來源的不一致,業(yè)務(wù)人員不能在同一個(gè)平臺上直觀地看到實(shí)況數(shù)據(jù)。為此,市氣象局開始對自動站數(shù)據(jù)進(jìn)行規(guī)范處理,建立統(tǒng)一的數(shù)據(jù)庫,將數(shù)據(jù)標(biāo)準(zhǔn)化。同時(shí)為了更好地方便業(yè)務(wù)人員使用,結(jié)合其他市數(shù)據(jù)處理的辦法,市氣象局?jǐn)M采用Surffer對自動氣象站數(shù)據(jù)進(jìn)行處理,生成等值線、色斑圖等[1]。以前多采用的是Surfer8.0軟件,但該版本軟件基于C/S架構(gòu),不能通過網(wǎng)頁來顯示,因此現(xiàn)將.NET與Surfer 11.0相結(jié)合,開發(fā)一套基于B/S架構(gòu)的等值線顯示系統(tǒng)[2]。
1 Surfer簡介
Surfer是美國Gold SoftWare公司開發(fā)的產(chǎn)品,從1985年至今已發(fā)展到11.0版本,該軟件不但能較好處理顯示二維數(shù)據(jù),且對三維數(shù)據(jù)也有不錯(cuò)的處理效果,專用于制作等高線、等值線等。繪制的圖像可通過屏幕、打印機(jī)等方式輸出,使用方便,精準(zhǔn)度較高,技術(shù)難度不高,易掌握,目前在氣象部門應(yīng)用較為廣泛。Surfer主要提供了以下幾大功能。
1.1 插值功能
Surfer 11.0提供了12種插值算法,在氣象業(yè)務(wù)的等值線繪制中用得較多的是自然鄰點(diǎn)、最近鄰點(diǎn)以及克里格插值三角網(wǎng)法等算法。根據(jù)其提供的算法,可以快速地對氣象二維、三維數(shù)據(jù)處理,最終生成為連續(xù)的數(shù)據(jù)圖形。
1.2 繪圖功能
Surfer 11.0有多種繪圖功能,目前用戶使用的主要有等值線、等高線、張貼圖、影像圖、三維立體網(wǎng)格圖、向量圖等,同時(shí)提供了多種圖形的輸出格式,甚至可以輸出shape應(yīng)用于GIS,需要注意的是,在繪制等值線時(shí),當(dāng)用戶指定按自身要求的區(qū)域輸出時(shí),該區(qū)域以外的部分應(yīng)用bln文件白化(blank)作圖,從而變成空白區(qū)域。
1.3 Scripter程序
Surfer 11.0通過CS Scripter腳本語言來進(jìn)行編程,通過它可以方便地控制Surfer的繪制。同時(shí)一些編程語言也能夠很好地調(diào)用Surfer 11.0中Active自動化所提供的編程接口。通過Surfer繪制各類圖形的流程大致如圖1所示。
2 VB.NET與Surfer接口
關(guān)于生成Surfer圖形的一些相關(guān)步驟和準(zhǔn)備工作,網(wǎng)上有較多的案例,本文就不一一論述,主要討論與.NET結(jié)合的編程問題。Surfer 11.0中提供的Automation 對象提供負(fù)責(zé)通用的接口,由編程語言調(diào)用,從而嵌入到用戶開發(fā)的系統(tǒng)中去。.NET中對Surfer的調(diào)用,是通過在相關(guān)項(xiàng)目的解決方案中的引用里面添加COM組件進(jìn)行調(diào)用的。下面通過實(shí)例的方式簡單介紹.NET中調(diào)用Surfer對象的幾個(gè)重點(diǎn)步驟。
2.1 生成對象
Dim TZSurfer As New Surfer.Application
Dim zdzPlot As Surfer.IPlotDocument
zdzPlot = TZSurfer.Documents.Add(1)
2.2 格點(diǎn)化數(shù)據(jù)
Dim strDAT,strGRD,strBLN,strOUTGRD as string
strDAT="E:\TZzdz\zdz.dat"
strGRD="E:\TZzdz\zdz.grd"
strBLN="E:\TZzdz\zdz.bln"
strOUTGRD="E:\TZzdz\zdzOut.grd"
SurferApp.GridData(DataFile:=strDAT,xCol:=1,yCol:=2,zCol:=3,Algorithm:=Surfer.SrfGridAlgorithm.srfKriging,Dup Method=2,NumCols:=340,NumRows:=500,yMin:=33.0325,yMax:=33.1,xMin:=119.64,xMax:=120.538888,ShowReport:=False,OutGrid:="strGRD")endprint
SurferApp.GridBlank(InGrid:=strGRD,BlankFile:=strBLN,OutGrid:=strOUTGRD)
該段代碼表示進(jìn)行克里格網(wǎng)格化插值。其中DataFile表示執(zhí)行的數(shù)據(jù)文件名,Algorithm表示網(wǎng)格化采用的方法,DupMethod表示消除重復(fù)點(diǎn)的方法,采用2是消除所有重復(fù)點(diǎn)。NumCols和NumRows代表了多少行、列,表示的是網(wǎng)格中的格點(diǎn)數(shù)量,同時(shí)代表了空白區(qū)域的大小。xMin至yMax則表示網(wǎng)格化區(qū)域,ShowRepod確定是否輸出報(bào)告,OutGrid表示輸出Grid格式文件zdzOut.grd。
2.3 數(shù)據(jù)白化
通過Surfe提供的Blank組件,去掉底圖以外的格點(diǎn)數(shù)據(jù),通過軟件的進(jìn)一步處理,最終去掉邊界的格點(diǎn)值。
Dim tzMapFrame As Surfer.IMapFrame
Dim strGRD as string
strGRD="E:\TZzdz\zdzout.grd"
tzMapFrame =plot.Shapes.AddContourMap(strGRD)
2.4 等值線繪制
將站點(diǎn)數(shù)據(jù)資料格點(diǎn)化后,通過調(diào)用COM組件的Contour功能繪制出等值線。一般先根據(jù)系統(tǒng)默認(rèn)等值線的間隔繪制,再根據(jù)需要逐步調(diào)整間隔,繪制的同時(shí)可決定對等值線進(jìn)行填充。最后通過調(diào)用COM組件的overlay合并同一坐標(biāo)的多個(gè)圖形,從而達(dá)到底圖與等值線的融合。
Dim tzMap As Surfer.IContourMap()
Dim strCLR as string
strCLR="E:\TZzdz\zdz.clr"
tzMap = contourmapframe.Overlays.Item(1)
tzMap.SmoothContours = 4
tzMap.FillContours = True
tzMap.FillForegroundColorMap.LoadFile(strCLR)
tzMap.Levels.AutoGenerate(MinLevel:=0,MaxLevel:=20,Interval:=3)'設(shè)置標(biāo)尺的最大和最小值,已經(jīng)間隔
tzMap.ApplyFillToLevels(FirstIndex:=1,NumberToSet:=22,NumberToSkip:=4)
tzMap.ShowColorScale = True
tzMap.ColorScale.Opacity = 100 '設(shè)置顏色標(biāo)尺的透明度()
tzMap.ColorScale.Height = 4 '
其中,需要注意Levels.LoadFile()和ApplyFillToLevels()這2個(gè)函數(shù)相對于以前的版本有變化,Levels.LoadFile()主要用來加載* .clr 格式的文件(Surfer 8.0及以前的版本是*.lvl文件),ApplyFillToLevels()用來填充到整個(gè)圖層。Smooth Contours表示的是平滑圖片等級,MinLevel,MaxLevel,Interval,表示設(shè)置標(biāo)尺的最大和最小值,以及間隔。
2.5 添加等值線背景
Dim tzMapFrame As Surfer.IMapFrame()
Dim tzBaseMap As Surfer.IBaseMap()
tzMapFrame = plot.Shapes.AddBaseMap(strBLN)
tzBaseMap = tzMapFrame.Overlays.Item(1)
Dim tzZdzFrame As Surfer.IMapFrame
tzZdzFrame = plot.Shapes.AddPostMap(DataFileName:="strBLN")
2.6 導(dǎo)出圖面
Surfer可通過Export方法導(dǎo)出矢量圖和位圖。但需要注意的是,若選擇位圖輸出時(shí),用戶可自定義其大小,對于填充的圖片,因壓縮算法不一樣,盡量不要選擇JPG格式,GIF、PNG以及BMP格式效果較好。若選輸出矢量圖時(shí),則不能改變其大小,還是按原圖尺寸輸出,EMF格式的圖片效果較好。
主要代碼如下:
Dim strGIF as string
strGIF="E:\TZzdz\BMP\TZzdz.bmp"
plot.Export(FileName:=strGIF,Options:="Width=1024,Height=960")
3 在業(yè)務(wù)中的應(yīng)用
3.1 平臺架構(gòu)
泰州自動氣象站業(yè)務(wù)系統(tǒng)采用B/S架構(gòu),使用ASP.NET結(jié)合SQL數(shù)據(jù)庫進(jìn)行開發(fā)。通過網(wǎng)頁提供給用戶進(jìn)行在線的實(shí)況數(shù)據(jù)檢索、查詢、統(tǒng)計(jì)等。并根據(jù)檢索的數(shù)據(jù)在線生成等值線等。Surfer11.0的Active接口為在Web環(huán)境下的應(yīng)用提供了可能。
3.2 Web中利用Surfer組件繪制等值線
當(dāng)業(yè)務(wù)人員通過瀏覽器打開自動站查詢系統(tǒng),根據(jù)相關(guān)的選擇時(shí)間、要素、站點(diǎn),服務(wù)器端檢索出數(shù)據(jù),然后根據(jù)Surfer數(shù)據(jù)的要求,格點(diǎn)化數(shù)據(jù),以純文本格式文件保存,以24 h降水量文件格式舉例如下:
latitude,Longitude,Rain24,NumStation
120.156,2.475,50,M2461
120.13,33.036,65,M2472
120.372,32.083,32,M2501
119.98,32.526,19,M3452
119.876,32.376,16,M3453
119.88,32.32,29,M3455
……
圖2、3為生成的降水色斑圖以及溫度色斑圖:
生成圖片時(shí)引入Ajax(Asynchronous JavaScript and XML)技術(shù),解決了因刷新圖片時(shí)的頁面閃爍問題。
4 結(jié)語
通過.NET結(jié)合Surfer 11.0軟件開發(fā)的等值線繪制系統(tǒng),將基于C/S架構(gòu)的Surfer軟件拓展應(yīng)用到B/S架構(gòu),用戶通過IE在線生成色斑圖、等值線圖,拓展了自動站數(shù)據(jù)的應(yīng)用范圍,更好滿足了氣象業(yè)務(wù)的需求[3-4]。
5 參考文獻(xiàn)
[1] 梁亮.Surfer軟件在氣象主分量分析中的應(yīng)用[J].浙江氣象,2005(3):29-33.
(下轉(zhuǎn)第348頁)
[2] 李雄.利用Surfer軟件包繪制氣候圖[J].廣西氣象,1997,18(4):57-58.
[3] 連志鸞.Surfer二次開發(fā)實(shí)現(xiàn)加密雨量圖自動顯示與輸出[J].氣象科技,2006,34(2):220-224.
[4] 張仁凌,齊向華.使用surfer軟件繪制雨量等值線圖[J].水文水利自動化,2007(4):45-47.endprint