劉文潔
(浙江省氣象服務(wù)中心,浙江 杭州 310017)
氣象數(shù)據(jù)加工處理和服務(wù)過(guò)程中往往涉及大量的氣象要素圖片繪制工作,預(yù)報(bào)和服務(wù)產(chǎn)品越來(lái)越豐富,圖形具有文字和表格等形式所不具備的直觀、簡(jiǎn)潔等優(yōu)勢(shì),更符合大眾接受服務(wù)信息的習(xí)慣。現(xiàn)今很多繪圖軟件如Micaps、Grads、Surfer、Metlab等用于氣象業(yè)務(wù)和服務(wù)系統(tǒng)的應(yīng)用,Surfer是美國(guó)Golden Software公司開(kāi)發(fā)的專(zhuān)業(yè)軟件,其添加了Com組件,可通過(guò)各類(lèi)編程語(yǔ)言,直接調(diào)用即可便捷地進(jìn)行開(kāi)發(fā),可謂大大提高了氣象預(yù)報(bào)服務(wù)過(guò)程天氣要素繪圖工作效率。
Surfer軟件是美國(guó)Golden Software公司出品的一款繪制三維圖線的具有插值功能的繪圖軟件,其主要功能是繪制等高線(contour map)、張貼圖(post map)、分類(lèi)張貼圖(classed post map)、矢量圖(vector map)、影像圖(image map)、線框圖(wireframe map)、3D表面圖(3D surface map)等形式的圖形。在日常氣象工作中經(jīng)常需要繪制各類(lèi)氣象要素的等值線圖,因此可以使用Surfer軟件來(lái)完成這些工作,為制作氣象預(yù)報(bào)和服務(wù)材料提供更加形象化的圖例。本文主要通過(guò)介紹繪制浙江省2014年9月20日08時(shí)—9月23日14時(shí)該時(shí)段的降水量等值線圖的過(guò)程,來(lái)說(shuō)明如何在氣象工作中利用Surfer軟件繪制各類(lèi)氣象要素的等值線圖。
使用Surfer軟件繪制彩信第二幀圖片,但并不是我們具有了數(shù)據(jù)文件就可以直接繪制出來(lái)的,Surfer要求繪制等值線的數(shù)據(jù)有特殊的格式要求,即我們首先要將數(shù)據(jù)文件轉(zhuǎn)換成Surfer能夠識(shí)別的的文件格式,才能繪制,下面我們以2014年9月20日08時(shí)—9月23日14時(shí)全省各自動(dòng)站降水量為例,繪制該時(shí)段的降水量等值線圖。
Surfer軟件支持文件類(lèi)型有[.xls]文件、[.dat]文件、[.txt]文件。數(shù)據(jù)格式為經(jīng)度、緯度、要素。如繪制雨量圖,只需保留總雨量、緯度和經(jīng)度三列數(shù)據(jù)就可。
格式如下:排列的順序依次為第一列(X)即為各自動(dòng)站點(diǎn)經(jīng)度,第二列(Y)為各自動(dòng)站點(diǎn)緯度,第三列(Z)為對(duì)應(yīng)的降水量數(shù)據(jù):
lon(X) lat(Y) rain(Z)
121.77 29.56 331.1
122.26 28.89 305.1
首先所有的作圖都要以高溫.Srf作為底圖,具體操作步驟如下。
1)打開(kāi)Surfer底圖界面→左邊Map→Contours→鼠標(biāo)右鍵刪除其它圖片→如下圖1所示。
圖1 高溫.srf底圖
2)創(chuàng)建網(wǎng)格文件
通過(guò)創(chuàng)建的(X、Y、Z)數(shù)據(jù)文件我們就可以生成繪制一個(gè)等值線圖或表面圖所需要的網(wǎng)格[.grd]文件。創(chuàng)建一個(gè)網(wǎng)格文件的具體操作為:選擇Surfer網(wǎng)格菜單中的網(wǎng)格→數(shù)據(jù)→查找范圍→D:彩信圖2014年9月20日08時(shí)—9月23日14時(shí)浙江各站要素.xls→打開(kāi)→彈出對(duì)話(huà)框,在網(wǎng)格化方法中選擇一種插值方法,最好選擇克里格方法(Kriging),因?yàn)檫@種方法在插值點(diǎn)與取樣點(diǎn)重合時(shí),插值的點(diǎn)就是樣本點(diǎn)的值,而其它并不能保證如此。再根據(jù)經(jīng)緯度選擇合適的X方向、Y方向并修改最小、最大值。需把X方向最小118.11改118,X方向最大122.81改123;Y方向最小27.17改27,Y方向最大31.17改31.5。點(diǎn)確認(rèn)→跳出界面替換存在的D:彩信圖2014年9月20日08時(shí)—9月23日14時(shí)浙江各站要素.grd?→點(diǎn)是→網(wǎng)格文件D:彩信圖2014年9月20日08時(shí)—9月23日14時(shí)浙江各站要素.grd已經(jīng)創(chuàng)建→確定
3)選擇Surfer網(wǎng)格菜單中的網(wǎng)格→樣條平滑→打開(kāi)→彈出對(duì)話(huà)框→插入的節(jié)點(diǎn)數(shù)行間和列間都改成10→確認(rèn)→替換存在的D:彩信圖out.grd?→確定→顯示out.grd已經(jīng)被成功平滑……
4)選擇Surfer網(wǎng)格菜單中的網(wǎng)格→白化→打開(kāi)→單擊zj.bln→打開(kāi)→保存→out.grd已存在。要替換它嗎?→是→D:彩信圖out.grd已經(jīng)被成功白化……→確定
5)選擇Surfer地圖菜單中的等值線圖→新建等值線圖→打開(kāi)
6)將新建的等值線圖移到左邊空白的地方→Map→Contours→鼠標(biāo)右擊屬性→出現(xiàn)對(duì)話(huà)框→“常規(guī)”選項(xiàng)卡里,我們?cè)谶@里勾選“填充等值線”和“顏色比例”選項(xiàng),然后在“等級(jí)”選項(xiàng)卡,我們可以設(shè)置等值線的間距及填充顏色,如果是降水量圖,一般選擇藍(lán)色系,由淺向深變化;如果是最低、最高溫度圖,一般選擇紅色系,由淺向深變化。一般色彩圖等級(jí)調(diào)3~4個(gè)等級(jí),如果層次感還不是太美觀也可以調(diào)5個(gè)等級(jí)。(注:降水量圖色彩定制:第1級(jí):196.216.255 第2級(jí):102.153.255第3級(jí):0.95.255第4級(jí):0.0.255第5級(jí):0.0.102,溫度圖色彩定制:第1級(jí):255.255.204 第2級(jí):255.204.0 第3級(jí):255.102.51 第4級(jí):255.0.0)等值線等級(jí)分別調(diào)為0,10,50,80,100,線條中所有實(shí)線部分全部改成空白的,填充背景里按顏色由淺到深設(shè)置好,標(biāo)注中全部改否,比例中改成0.75。
7)把底圖和新的等值線圖選中框起來(lái),鼠標(biāo)右擊→排列對(duì)象→中間→右對(duì)齊,上對(duì)齊或者直接把等值線圖拖到底圖上面,與底圖重疊,變成一張圖→鼠標(biāo)右擊→對(duì)象次序→移動(dòng)到后面;右邊的比色刻度尺和毫米可以改大小,(如果是溫度圖就把mm的地方改成℃)調(diào)到合適的大小。
8)去掉左邊Map里前面4項(xiàng)打√
9)圖片輸出
最后我們還要對(duì)繪制的圖片進(jìn)行輸出,文件→輸出,然后選擇需要保存的圖片文件名及格式,一般Surfer繪制的氣象要素等值線圖輸出為bmp格式或者png格式的圖像文件質(zhì)量較為理想,輸出效果見(jiàn)下圖2。
10)圖片處理
并設(shè)置圖例的標(biāo)題,加載地市名稱(chēng),如果區(qū)域中有空白的地方用區(qū)域中相同的顏色把它填色,如下圖3所示。
圖2 輸出效果圖
圖3 20日08時(shí)—23日14時(shí)全省雨量分布圖
1)獲取任意時(shí)間間隔區(qū)域自動(dòng)站雨量數(shù)據(jù)等值線的繪制關(guān)鍵是數(shù)據(jù)的收集,Surfer繪圖一般使用3列數(shù)據(jù):XYZ,X為經(jīng)度,Y為緯度,Z為氣象要素值。這里采用的數(shù)據(jù)直接來(lái)源于西雙版納州氣象局區(qū)域自動(dòng)站數(shù)據(jù)庫(kù)。任意時(shí)段區(qū)域自動(dòng)站雨量數(shù)據(jù)由VB自動(dòng)從數(shù)據(jù)庫(kù)中獲取,同時(shí)用VB把站點(diǎn)經(jīng)緯度和任意時(shí)段區(qū)域自動(dòng)站雨量數(shù)據(jù)寫(xiě)入文件station.dat,并存到指定文件夾,以便用surfer調(diào)取。數(shù)據(jù)的獲取也可以把經(jīng)緯度值先寫(xiě)入文件station.dat,接下來(lái)利用華創(chuàng)數(shù)據(jù)分析應(yīng)用終端,選擇氣象要素?cái)?shù)據(jù)文件,選取某一任意時(shí)間間隔為查詢(xún)條件,獲取該時(shí)段內(nèi)本地區(qū)所有區(qū)域自動(dòng)站的雨量信息并以Excel方式輸出到指定文件夾(data.xls)中,必須注意數(shù)據(jù)順序要與站點(diǎn)資料文件對(duì)應(yīng)一致。
2)VB調(diào)用Surfer繪制等值線,VB具有強(qiáng)大的“所見(jiàn)即所得”圖形用戶(hù)界面和編譯功能。由于它支持ActiveX自動(dòng)化控制協(xié)議,因此很容易在二者間建立ActiveX自動(dòng)化連接,實(shí)現(xiàn)VB應(yīng)用程序?qū)urfer繪圖功能的調(diào)用。代碼如下:
Set SurferApp=CreateObject(“Surfer.Application”)
’注:創(chuàng)建對(duì)象,CreateObject是Vb提供的一個(gè)方法,它創(chuàng)建并返回一個(gè)對(duì)ActiveX對(duì)象的引用。CreateObject方法在系統(tǒng)注冊(cè)表里查找“Sufer.Application”項(xiàng),并自動(dòng)激活Surfer服務(wù)。
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來(lái)繪制等值線,生成一個(gè)空白的繪圖頁(yè)。用Kriging法將資料內(nèi)插到網(wǎng)格點(diǎn)上,并定義網(wǎng)格的最大(小)經(jīng)緯度,Datefile為包含路徑的文件名,這里為雨量數(shù)據(jù)文件,Outgrid為數(shù)據(jù)插之后的輸出文件。
SurferApp.GridBlank InGrid:="*station.grd", BlankFile:="*nbj.bln", OutGrid:="*station.grd"
’注:用.bln文件白化等值線,去掉邊界外的插值,并重新保存,為后面繪制等值線做準(zhǔn)備。Set plot=SurferApp.Documents.Add(1)
Set ContourMapFrame=plot.Shapes.AddContourMap("*station.grd")
’注:生成一個(gè)空白的繪圖頁(yè),并在空白繪圖頁(yè)上生成白化后的等值線圖,并指定其文件名為ContourMapFrame。
Set ContourMap=ContourMapFrame.Overlays(1) ContourMap.Levels.LoadFile("*降水等級(jí).lvl")’注:降水等級(jí)文件可根據(jù)實(shí)際情況調(diào)整,以繪出較為美觀的圖形。
ContourMap.SmoothContours=4
ContourMap.ShowColorScale=True
ContourMap.FillContours=True
注:載入等值線等級(jí)文件,并平滑等值線,設(shè)置顯示色標(biāo),最后,填充等值線。
3)加載采用Mapinfo生成的底圖矢量文件為了更加詳細(xì)的了解區(qū)域內(nèi)各市縣降水分布,為地方領(lǐng)導(dǎo)和各級(jí)部門(mén)決策提供科學(xué)依據(jù),在雨量等值圖上加載分縣邊界十分重要。由于一般圖形都是圖片格式無(wú)法在等值線圖上直接加載,加載邊界地理信息bln代碼如下:
Set Basemap=plot.Shapes.addbasemap(ImportFileName:=“*nbj.bln”)
’注:給等值線圖plot加載分縣邊界數(shù)據(jù)。
Set postmapframe=plot.Shapes.AddPostMap(datafilename:="*station.xls",xCol:=1,
yCol:=2,LabCol:=3)
’注:添加張貼圖,生成一個(gè)地區(qū)區(qū)域自動(dòng)站數(shù)據(jù)填圖圖層。
其中station.xls為自動(dòng)站數(shù)據(jù),第一行為經(jīng)度,第二行為緯度,第三行為站點(diǎn)名稱(chēng)。
Set postmap1=PostMapFrame.Overlays(1)
'注:下面對(duì)張貼圖的屬性進(jìn)行設(shè)置
Set MkFormat=postmap1.Symbol
With MkFormat
.Size=0.05
.Index=12
End With
'注:設(shè)置站點(diǎn)符號(hào)的大小和形狀
Set lbFont = postmap1.LabelFont
With lbFont
.Face = "宋體"
.Size = 8
End With ' 注:設(shè)置站點(diǎn)名稱(chēng)的字體和大小
4) 圖形輸出 VB中顯示圖形一般用Picture 框或Image 框控件的Loadpicture 方法實(shí)現(xiàn)。Surfer 繪制的圖形不能直接在VB程序下顯示,可將Surfer 圖形導(dǎo)出為.gif 等Picture 框控件所支持的圖形文件格式,再用Loadpicture 方法實(shí)現(xiàn)圖形在Picture 框中顯示。
以gif 文件為例,將Surfer 圖形導(dǎo)出的代碼如下:
Set adtext=plot.Shapes.AddText(x:=1.5,y:=4,Text:="xxxx年xx月xx日xx小時(shí)降水圖")
With adtext.Font
.Face = "宋體"
.Size = 14
End With
' 注:在圖形的空白處加入標(biāo)注
plot.Shapes.SelectAll
plot.Select.OverlayMaps
’注:將上述所有圖層進(jìn)行合并
plot.Export FileName:="*data.gif",Options:="Width=600,Height=450" plot.Close
SurferApp.Quit
使用Surfer軟件繪制氣象等值線圖具有十分重要的意義,根據(jù)繪制出的直觀、形象的氣象要素等值線圖,能對(duì)本地區(qū)的氣象要素分布情況有一個(gè)清楚的認(rèn)識(shí),在使用中合理選用等值線間隔等級(jí)、刻度間隔和字體大小,還可以使圖片簡(jiǎn)潔、美觀。
參考文獻(xiàn):
[1] 文雅,郭治興.應(yīng)用Win—Surfer軟件繪制降水等值線圖[J].土壤與環(huán)境,2002,11(4):360-362.
[2] 陳歡歡,李星,丁文秀.Surfer8.0等值線繪制中的十二種插值方法[J].工程地球物理學(xué)報(bào),2007,4(1):52-57.
[3] 張杰,梁俊寧.Surfer8.0在繪制氣象等值線中的應(yīng)用[J].現(xiàn)代農(nóng)業(yè)科技,2010(1):284-286.
[4] 張仁凌.齊向華.使用Sufer軟件繪制雨量等值線圖[J].水利水文自動(dòng)化,2007,12(4):45-47.