樂穎++郭一飛


摘要 等值線已經廣泛地應用于氣象領域。本文介紹了利用Surfer11.0的主要功能以及對應的.net應用程序的接口,將.net的軟件開發能力和Surfer的繪圖功能相結合,實現了基于B/S架構的泰州地區的自動站數據的在線繪圖。
關鍵詞 Surfer;.net;自動成圖
中圖分類號 TP317.4 文獻標識碼 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
隨著計算機技術的迅速發展,等值線被越來越廣泛地應用于氣象領域,用于研究和繪制降水、氣溫以及各類天氣形勢等。目前泰州市氣象局已安裝了103套自動氣象站,但分別由江蘇無錫所和上海長望2家提供,這就造成了數據來源的不一致,業務人員不能在同一個平臺上直觀地看到實況數據。為此,市氣象局開始對自動站數據進行規范處理,建立統一的數據庫,將數據標準化。同時為了更好地方便業務人員使用,結合其他市數據處理的辦法,市氣象局擬采用Surffer對自動氣象站數據進行處理,生成等值線、色斑圖等[1]。以前多采用的是Surfer8.0軟件,但該版本軟件基于C/S架構,不能通過網頁來顯示,因此現將.NET與Surfer 11.0相結合,開發一套基于B/S架構的等值線顯示系統[2]。
1 Surfer簡介
Surfer是美國Gold SoftWare公司開發的產品,從1985年至今已發展到11.0版本,該軟件不但能較好處理顯示二維數據,且對三維數據也有不錯的處理效果,專用于制作等高線、等值線等。繪制的圖像可通過屏幕、打印機等方式輸出,使用方便,精準度較高,技術難度不高,易掌握,目前在氣象部門應用較為廣泛。Surfer主要提供了以下幾大功能。
1.1 插值功能
Surfer 11.0提供了12種插值算法,在氣象業務的等值線繪制中用得較多的是自然鄰點、最近鄰點以及克里格插值三角網法等算法。根據其提供的算法,可以快速地對氣象二維、三維數據處理,最終生成為連續的數據圖形。
1.2 繪圖功能
Surfer 11.0有多種繪圖功能,目前用戶使用的主要有等值線、等高線、張貼圖、影像圖、三維立體網格圖、向量圖等,同時提供了多種圖形的輸出格式,甚至可以輸出shape應用于GIS,需要注意的是,在繪制等值線時,當用戶指定按自身要求的區域輸出時,該區域以外的部分應用bln文件白化(blank)作圖,從而變成空白區域。
1.3 Scripter程序
Surfer 11.0通過CS Scripter腳本語言來進行編程,通過它可以方便地控制Surfer的繪制。同時一些編程語言也能夠很好地調用Surfer 11.0中Active自動化所提供的編程接口。通過Surfer繪制各類圖形的流程大致如圖1所示。
2 VB.NET與Surfer接口
關于生成Surfer圖形的一些相關步驟和準備工作,網上有較多的案例,本文就不一一論述,主要討論與.NET結合的編程問題。Surfer 11.0中提供的Automation 對象提供負責通用的接口,由編程語言調用,從而嵌入到用戶開發的系統中去。.NET中對Surfer的調用,是通過在相關項目的解決方案中的引用里面添加COM組件進行調用的。下面通過實例的方式簡單介紹.NET中調用Surfer對象的幾個重點步驟。
2.1 生成對象
Dim TZSurfer As New Surfer.Application
Dim zdzPlot As Surfer.IPlotDocument
zdzPlot = TZSurfer.Documents.Add(1)
2.2 格點化數據
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)
該段代碼表示進行克里格網格化插值。其中DataFile表示執行的數據文件名,Algorithm表示網格化采用的方法,DupMethod表示消除重復點的方法,采用2是消除所有重復點。NumCols和NumRows代表了多少行、列,表示的是網格中的格點數量,同時代表了空白區域的大小。xMin至yMax則表示網格化區域,ShowRepod確定是否輸出報告,OutGrid表示輸出Grid格式文件zdzOut.grd。
2.3 數據白化
通過Surfe提供的Blank組件,去掉底圖以外的格點數據,通過軟件的進一步處理,最終去掉邊界的格點值。
Dim tzMapFrame As Surfer.IMapFrame
Dim strGRD as string
strGRD="E:\TZzdz\zdzout.grd"
tzMapFrame =plot.Shapes.AddContourMap(strGRD)
2.4 等值線繪制
將站點數據資料格點化后,通過調用COM組件的Contour功能繪制出等值線。一般先根據系統默認等值線的間隔繪制,再根據需要逐步調整間隔,繪制的同時可決定對等值線進行填充。最后通過調用COM組件的overlay合并同一坐標的多個圖形,從而達到底圖與等值線的融合。
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)'設置標尺的最大和最小值,已經間隔
tzMap.ApplyFillToLevels(FirstIndex:=1,NumberToSet:=22,NumberToSkip:=4)
tzMap.ShowColorScale = True
tzMap.ColorScale.Opacity = 100 '設置顏色標尺的透明度()
tzMap.ColorScale.Height = 4 '
其中,需要注意Levels.LoadFile()和ApplyFillToLevels()這2個函數相對于以前的版本有變化,Levels.LoadFile()主要用來加載* .clr 格式的文件(Surfer 8.0及以前的版本是*.lvl文件),ApplyFillToLevels()用來填充到整個圖層。Smooth Contours表示的是平滑圖片等級,MinLevel,MaxLevel,Interval,表示設置標尺的最大和最小值,以及間隔。
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 導出圖面
Surfer可通過Export方法導出矢量圖和位圖。但需要注意的是,若選擇位圖輸出時,用戶可自定義其大小,對于填充的圖片,因壓縮算法不一樣,盡量不要選擇JPG格式,GIF、PNG以及BMP格式效果較好。若選輸出矢量圖時,則不能改變其大小,還是按原圖尺寸輸出,EMF格式的圖片效果較好。
主要代碼如下:
Dim strGIF as string
strGIF="E:\TZzdz\BMP\TZzdz.bmp"
plot.Export(FileName:=strGIF,Options:="Width=1024,Height=960")
3 在業務中的應用
3.1 平臺架構
泰州自動氣象站業務系統采用B/S架構,使用ASP.NET結合SQL數據庫進行開發。通過網頁提供給用戶進行在線的實況數據檢索、查詢、統計等。并根據檢索的數據在線生成等值線等。Surfer11.0的Active接口為在Web環境下的應用提供了可能。
3.2 Web中利用Surfer組件繪制等值線
當業務人員通過瀏覽器打開自動站查詢系統,根據相關的選擇時間、要素、站點,服務器端檢索出數據,然后根據Surfer數據的要求,格點化數據,以純文本格式文件保存,以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為生成的降水色斑圖以及溫度色斑圖:
生成圖片時引入Ajax(Asynchronous JavaScript and XML)技術,解決了因刷新圖片時的頁面閃爍問題。
4 結語
通過.NET結合Surfer 11.0軟件開發的等值線繪制系統,將基于C/S架構的Surfer軟件拓展應用到B/S架構,用戶通過IE在線生成色斑圖、等值線圖,拓展了自動站數據的應用范圍,更好滿足了氣象業務的需求[3-4]。
5 參考文獻
[1] 梁亮.Surfer軟件在氣象主分量分析中的應用[J].浙江氣象,2005(3):29-33.
(下轉第348頁)
[2] 李雄.利用Surfer軟件包繪制氣候圖[J].廣西氣象,1997,18(4):57-58.
[3] 連志鸞.Surfer二次開發實現加密雨量圖自動顯示與輸出[J].氣象科技,2006,34(2):220-224.
[4] 張仁凌,齊向華.使用surfer軟件繪制雨量等值線圖[J].水文水利自動化,2007(4):45-47.endprint