劉文潔
(浙江省氣象服務中心,浙江 杭州 310017)
氣象數據加工處理和服務過程中往往涉及大量的氣象要素圖片繪制工作,預報和服務產品越來越豐富,圖形具有文字和表格等形式所不具備的直觀、簡潔等優勢,更符合大眾接受服務信息的習慣。現今很多繪圖軟件如Micaps、Grads、Surfer、Metlab等用于氣象業務和服務系統的應用,Surfer是美國Golden Software公司開發的專業軟件,其添加了Com組件,可通過各類編程語言,直接調用即可便捷地進行開發,可謂大大提高了氣象預報服務過程天氣要素繪圖工作效率。
Surfer軟件是美國Golden Software公司出品的一款繪制三維圖線的具有插值功能的繪圖軟件,其主要功能是繪制等高線(contour map)、張貼圖(post map)、分類張貼圖(classed post map)、矢量圖(vector map)、影像圖(image map)、線框圖(wireframe map)、3D表面圖(3D surface map)等形式的圖形。在日常氣象工作中經常需要繪制各類氣象要素的等值線圖,因此可以使用Surfer軟件來完成這些工作,為制作氣象預報和服務材料提供更加形象化的圖例。本文主要通過介紹繪制浙江省2014年9月20日08時—9月23日14時該時段的降水量等值線圖的過程,來說明如何在氣象工作中利用Surfer軟件繪制各類氣象要素的等值線圖。
使用Surfer軟件繪制彩信第二幀圖片,但并不是我們具有了數據文件就可以直接繪制出來的,Surfer要求繪制等值線的數據有特殊的格式要求,即我們首先要將數據文件轉換成Surfer能夠識別的的文件格式,才能繪制,下面我們以2014年9月20日08時—9月23日14時全省各自動站降水量為例,繪制該時段的降水量等值線圖。
Surfer軟件支持文件類型有[.xls]文件、[.dat]文件、[.txt]文件。數據格式為經度、緯度、要素。如繪制雨量圖,只需保留總雨量、緯度和經度三列數據就可。
格式如下:排列的順序依次為第一列(X)即為各自動站點經度,第二列(Y)為各自動站點緯度,第三列(Z)為對應的降水量數據:
lon(X) lat(Y) rain(Z)
121.77 29.56 331.1
122.26 28.89 305.1
首先所有的作圖都要以高溫.Srf作為底圖,具體操作步驟如下。
1)打開Surfer底圖界面→左邊Map→Contours→鼠標右鍵刪除其它圖片→如下圖1所示。

圖1 高溫.srf底圖
2)創建網格文件
通過創建的(X、Y、Z)數據文件我們就可以生成繪制一個等值線圖或表面圖所需要的網格[.grd]文件。創建一個網格文件的具體操作為:選擇Surfer網格菜單中的網格→數據→查找范圍→D:彩信圖2014年9月20日08時—9月23日14時浙江各站要素.xls→打開→彈出對話框,在網格化方法中選擇一種插值方法,最好選擇克里格方法(Kriging),因為這種方法在插值點與取樣點重合時,插值的點就是樣本點的值,而其它并不能保證如此。再根據經緯度選擇合適的X方向、Y方向并修改最小、最大值。需把X方向最小118.11改118,X方向最大122.81改123;Y方向最小27.17改27,Y方向最大31.17改31.5。點確認→跳出界面替換存在的D:彩信圖2014年9月20日08時—9月23日14時浙江各站要素.grd?→點是→網格文件D:彩信圖2014年9月20日08時—9月23日14時浙江各站要素.grd已經創建→確定
3)選擇Surfer網格菜單中的網格→樣條平滑→打開→彈出對話框→插入的節點數行間和列間都改成10→確認→替換存在的D:彩信圖out.grd?→確定→顯示out.grd已經被成功平滑……
4)選擇Surfer網格菜單中的網格→白化→打開→單擊zj.bln→打開→保存→out.grd已存在。要替換它嗎?→是→D:彩信圖out.grd已經被成功白化……→確定
5)選擇Surfer地圖菜單中的等值線圖→新建等值線圖→打開
6)將新建的等值線圖移到左邊空白的地方→Map→Contours→鼠標右擊屬性→出現對話框→“常規”選項卡里,我們在這里勾選“填充等值線”和“顏色比例”選項,然后在“等級”選項卡,我們可以設置等值線的間距及填充顏色,如果是降水量圖,一般選擇藍色系,由淺向深變化;如果是最低、最高溫度圖,一般選擇紅色系,由淺向深變化。一般色彩圖等級調3~4個等級,如果層次感還不是太美觀也可以調5個等級。(注:降水量圖色彩定制:第1級:196.216.255 第2級:102.153.255第3級:0.95.255第4級:0.0.255第5級:0.0.102,溫度圖色彩定制:第1級:255.255.204 第2級:255.204.0 第3級:255.102.51 第4級:255.0.0)等值線等級分別調為0,10,50,80,100,線條中所有實線部分全部改成空白的,填充背景里按顏色由淺到深設置好,標注中全部改否,比例中改成0.75。
7)把底圖和新的等值線圖選中框起來,鼠標右擊→排列對象→中間→右對齊,上對齊或者直接把等值線圖拖到底圖上面,與底圖重疊,變成一張圖→鼠標右擊→對象次序→移動到后面;右邊的比色刻度尺和毫米可以改大小,(如果是溫度圖就把mm的地方改成℃)調到合適的大小。
8)去掉左邊Map里前面4項打√
9)圖片輸出
最后我們還要對繪制的圖片進行輸出,文件→輸出,然后選擇需要保存的圖片文件名及格式,一般Surfer繪制的氣象要素等值線圖輸出為bmp格式或者png格式的圖像文件質量較為理想,輸出效果見下圖2。
10)圖片處理
并設置圖例的標題,加載地市名稱,如果區域中有空白的地方用區域中相同的顏色把它填色,如下圖3所示。

圖2 輸出效果圖

圖3 20日08時—23日14時全省雨量分布圖
1)獲取任意時間間隔區域自動站雨量數據等值線的繪制關鍵是數據的收集,Surfer繪圖一般使用3列數據:XYZ,X為經度,Y為緯度,Z為氣象要素值。這里采用的數據直接來源于西雙版納州氣象局區域自動站數據庫。任意時段區域自動站雨量數據由VB自動從數據庫中獲取,同時用VB把站點經緯度和任意時段區域自動站雨量數據寫入文件station.dat,并存到指定文件夾,以便用surfer調取。數據的獲取也可以把經緯度值先寫入文件station.dat,接下來利用華創數據分析應用終端,選擇氣象要素數據文件,選取某一任意時間間隔為查詢條件,獲取該時段內本地區所有區域自動站的雨量信息并以Excel方式輸出到指定文件夾(data.xls)中,必須注意數據順序要與站點資料文件對應一致。
2)VB調用Surfer繪制等值線,VB具有強大的“所見即所得”圖形用戶界面和編譯功能。由于它支持ActiveX自動化控制協議,因此很容易在二者間建立ActiveX自動化連接,實現VB應用程序對Surfer繪圖功能的調用。代碼如下:
Set SurferApp=CreateObject(“Surfer.Application”)
’注:創建對象,CreateObject是Vb提供的一個方法,它創建并返回一個對ActiveX對象的引用。CreateObject方法在系統注冊表里查找“Sufer.Application”項,并自動激活Surfer服務。
SurferApp.GridData DataFile:="*station.dat", xCol:=1, yCol:=2,zCol:=3, Algorithm:=2, DupMethod:=2, ShowReport:=False,
OutGrid:="*station.grd",xMin:=99.942882, xMax:=xx, yMin:=xx, yMax:=xx
’注:接著就是利用VB代碼控制Surfer來繪制等值線,生成一個空白的繪圖頁。用Kriging法將資料內插到網格點上,并定義網格的最大(小)經緯度,Datefile為包含路徑的文件名,這里為雨量數據文件,Outgrid為數據插之后的輸出文件。
SurferApp.GridBlank InGrid:="*station.grd", BlankFile:="*nbj.bln", OutGrid:="*station.grd"
’注:用.bln文件白化等值線,去掉邊界外的插值,并重新保存,為后面繪制等值線做準備。Set plot=SurferApp.Documents.Add(1)
Set ContourMapFrame=plot.Shapes.AddContourMap("*station.grd")
’注:生成一個空白的繪圖頁,并在空白繪圖頁上生成白化后的等值線圖,并指定其文件名為ContourMapFrame。
Set ContourMap=ContourMapFrame.Overlays(1) ContourMap.Levels.LoadFile("*降水等級.lvl")’注:降水等級文件可根據實際情況調整,以繪出較為美觀的圖形。
ContourMap.SmoothContours=4
ContourMap.ShowColorScale=True
ContourMap.FillContours=True
注:載入等值線等級文件,并平滑等值線,設置顯示色標,最后,填充等值線。
3)加載采用Mapinfo生成的底圖矢量文件為了更加詳細的了解區域內各市縣降水分布,為地方領導和各級部門決策提供科學依據,在雨量等值圖上加載分縣邊界十分重要。由于一般圖形都是圖片格式無法在等值線圖上直接加載,加載邊界地理信息bln代碼如下:
Set Basemap=plot.Shapes.addbasemap(ImportFileName:=“*nbj.bln”)
’注:給等值線圖plot加載分縣邊界數據。
Set postmapframe=plot.Shapes.AddPostMap(datafilename:="*station.xls",xCol:=1,
yCol:=2,LabCol:=3)
’注:添加張貼圖,生成一個地區區域自動站數據填圖圖層。
其中station.xls為自動站數據,第一行為經度,第二行為緯度,第三行為站點名稱。
Set postmap1=PostMapFrame.Overlays(1)
'注:下面對張貼圖的屬性進行設置
Set MkFormat=postmap1.Symbol
With MkFormat
.Size=0.05
.Index=12
End With
'注:設置站點符號的大小和形狀
Set lbFont = postmap1.LabelFont
With lbFont
.Face = "宋體"
.Size = 8
End With ' 注:設置站點名稱的字體和大小
4) 圖形輸出 VB中顯示圖形一般用Picture 框或Image 框控件的Loadpicture 方法實現。Surfer 繪制的圖形不能直接在VB程序下顯示,可將Surfer 圖形導出為.gif 等Picture 框控件所支持的圖形文件格式,再用Loadpicture 方法實現圖形在Picture 框中顯示。
以gif 文件為例,將Surfer 圖形導出的代碼如下:
Set adtext=plot.Shapes.AddText(x:=1.5,y:=4,Text:="xxxx年xx月xx日xx小時降水圖")
With adtext.Font
.Face = "宋體"
.Size = 14
End With
' 注:在圖形的空白處加入標注
plot.Shapes.SelectAll
plot.Select.OverlayMaps
’注:將上述所有圖層進行合并
plot.Export FileName:="*data.gif",Options:="Width=600,Height=450" plot.Close
SurferApp.Quit
使用Surfer軟件繪制氣象等值線圖具有十分重要的意義,根據繪制出的直觀、形象的氣象要素等值線圖,能對本地區的氣象要素分布情況有一個清楚的認識,在使用中合理選用等值線間隔等級、刻度間隔和字體大小,還可以使圖片簡潔、美觀。
參考文獻:
[1] 文雅,郭治興.應用Win—Surfer軟件繪制降水等值線圖[J].土壤與環境,2002,11(4):360-362.
[2] 陳歡歡,李星,丁文秀.Surfer8.0等值線繪制中的十二種插值方法[J].工程地球物理學報,2007,4(1):52-57.
[3] 張杰,梁俊寧.Surfer8.0在繪制氣象等值線中的應用[J].現代農業科技,2010(1):284-286.
[4] 張仁凌.齊向華.使用Sufer軟件繪制雨量等值線圖[J].水利水文自動化,2007,12(4):45-47.