APP下载

Surfer绘制等值线在泰州自动站业务中的应用

2015-08-17乐颖郭一飞

现代农业科技 2015年12期

乐颖++郭一飞

摘要 等值线已经广泛地应用于气象领域。本文介绍了利用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