您的位置: turnitin查重官网> 工程 >> 工程项目管理 >> 管理工程 >线图VB6.0实现Surfer自动绘制降水等值线图策略

线图VB6.0实现Surfer自动绘制降水等值线图策略

收藏本文 2024-01-28 点赞:31951 浏览:145392 作者:网友投稿原创标记本站原创

摘要:Surfer 是美国Golden软件公司的产品,主要用于绘制等值线图及相应的三维图形。本文主要讨论了采用Visual Basic 6.0为开发工具,来实现对Surfer自动绘制等值线的二次开发,并给出实现操作的关键程序代码。VB与Surfer的有效结合,可大大提高工作效率。
关键词:Visual Basic;Surfer;等值线;降水

1 引言
雨量等值线是指某一给定时间内的降雨量相等各点连成的平滑曲线。由于等值线可以将离散的台站数据或野外观测数据进行空间插值处理,结合了数据图形,能反映雨量的时空分布特征,比较直观,因而在防汛、水文等部门得到广泛使用。
传统的手工绘制雨量等值线图时,需要首先将各雨量数据点数值点绘到需要绘制等值线的底图上,确定暴雨中心,然后通过人工计算暴雨中心与周边雨量点的数值差值将雨量点与暴雨中心的连线等分,进而绘制出降水等值线图。这种方法绘制速度慢、精度不高,已经无法满足防汛工作的时效性,必将影响水情防汛工作。
本文介绍利用Visual Basic 6.0编制VBA程序嵌入一个小型实用的空间插值绘图软件Surfer 8中

摘自:本科毕业论文范文www.udooo.com

,利用计算机快速绘制已知数据的等值线图的方法,可以大大的提高工作效率。

2 数据的空间插值方法

Surfer进行数据空间插值时会用到几种方法,了解这几种常用的插值方法对于我们针对不同数据选择适当的插值方法和相关参数是很重要的。

2.1 距离倒数加权法

该方法以数据点与网络点的距离平方倒数作为权值,距离越大权值越小,反之则越大。在具体应用时,既可以把它当作精确估值,又可当作平滑估值。
距离倒数加权法其优点在于算法简单,易于实现。在进行插值时其结果出在用于插值数据的最大和最小值之间。缺点是距离加权法没有考虑数据场在空间的分布,往往会因为采样点的分布不均而使估值结果产生偏差。另外,由于插值结果肯定介于估值点的最大和最小值之间,因此会因为采样点的不均而对空间场产生错误的估计。

2.2 最小曲率法

该法构造出具有最小曲率的曲面,使其穿过空间场的每一点,并尽可能使曲面变得光滑。最小曲率法是平滑插值。

2.3 三角剖分线性插值法

此法是把数据点用线相连,在平面中形成许多三角形,并满足三角形间互不穿切。这样,整个空间场就可以看成由这些小三角平面构成,每个三角形的顶点都为样品点所代替。插值时,将落在小三角平面投影中的网格点用三角平面上的值来代替。这种方法是精确插值,较为忠实原始数据点,但是此法设计三角剖分、平面拟合以及投点等几个步骤,因而计算量很大。
3降雨等值线的绘制

3.1前期准备工作

绘制降雨等值线图前,必须做好前期准备工作。如地区地图、地图区域的空白文件、降雨量文件等。地区地图是用作区域等值线图的背景图,所以这里需要事先准备好地图,这里的地图为map.BMP。底图区域的空白文件是为了删除行政地图map.BMP的边界以外的等值线,它是*.bln文件由Surfer的数字化命令创建,其文件格式如下:
标志行,标识符
X1,Y1
X2,Y2
......
Xn,Yn
其中Xn、Yn是闭合闭合多边形的坐标数据,标志行为闭合多边形上点坐标的个数。这里需要注意的是标识符值为1时,所选的区域里面的等值线将被删除,标识符值为0时,所选的区域外边的等值线将被删除。这里创建map.bln空白文件,其中标识符值为0。
降雨量文件由雨量站点的地理坐标和时段降雨量组成,降雨量可由水情数据库中提取,然后和站点经纬度组成降雨量文件,降雨量文件为Excel,表内格式如下:
X1,Y1,Z1
X2,Y2,Z2
......
Xn,Yn,Zn
Xn、Yn为雨量站点的地理坐标,Zn为雨量站点的降雨量。准备好的文件应放入所编写程序中引用的相应目录,本次从简便出发选择的为D盘根目录,创建以唐山某一场降雨量为例的降雨量文件rainfall.xls,即“D:\rainfall.xls”。

3.2 程序主代码

VB 6.0调用Surfer 8进行编程的原理和方法为:在VB应用程序中创建Surfer 8 的Active X对象,即在客户应用程序中与Surfer 8怎么写作器程序实现通讯,这样就可以使用这个对象所包含的各种方法和属性来实现对Surfer 8的调用。[3]
在VB的集成开发环境中,通过“工程”菜单中的“引用”命令,将其中的Surfer 8 Type Library选中(如图1),就可实现VB 6.0对Surfer 8的调用。这样就可以在VB的对象浏览器中查看Surfer 8对象的库、类、属性、方法以及事件。
图2 在VB中引用Surfer
以下为程序主要步骤的代码:
Dim SurferApp As Object∥定义Surfer的对象
Set SurferApp= CreateObject("Surfer.Application")
∥创建Surfer Application对象,CreateObject方法是Visual Basic提供的一个方法,是在系统注册表中查找"Surfer.Application"项并启动激活Surfer怎么写作。
SurferApp.GridData DataFile:="D:\rainfall.xls",xCol:=1,yCol:=2,
zCol:=3,xMin:=504,xMax:=3437,yMin:=247,yMax:=2017,Algorithm:=2,OutGrid:="D:\ rainfall.grd"
∥读取降雨量数据并对原始的离散数据进行栅格化处理后输出。这里读取事先准备好的降雨量文件rainfall.xls,表中包含站点的地理坐标和时段降雨量,应用克里格法将资料内插到格点上,并输出栅格化处理后的文件“rainfall.grd”。
SurferApp.GridBlank Ingrid:= "D:\

1.grd",blankfile:="D:\map.bln",

OutGrid:="D:\ rainfall

2.grd"

/ /利用Surfer的空白功能去掉边界外的资料。由于地图有地理边界,而生成的等值线图必须在地图边界内,故去除边界外的等值线。利用Surfer的空白功能生成并输出新的格网文件(rainfall

2.grd)。其中map.bln文件为空白文件,提前创建好的。

Set Doc = SurferApp.Documents.Add(1)
Set map1=Doc. Shapes.AddBaseMap(ImportFileName:="D:
map.BMP")
Set map2 = Doc.Shapes. AddContourMap ("D:\ rainfall

2.grd")

Doc.Export FileName:= "D:\唐山.emf", Options:=" "Width=701,
Height=439"
∥等值线图和底图的叠加,并输出生成的等值线图“唐山.emf”。Surfer可以输出多种格式的图形文件,如emf、jpg、bmp、dxf等格式,但是由于Surfer保存为jpg和bmp格式时失真比较严重,因此建议采用emf、wmf等格式。
前期准备工作时将地区地图、地图区域的空白文件、降雨量文件等存入相应的目录,只需要将上面的主程序代码装载到VB程序中,程序就将自动调用这些文件,从而自动绘制出等值线图,见图2。限于篇幅,以上仅列出了关键步骤的代码。
图2 降水等值线图
4 结语
本文主要讨论了利用Visual Basic 6.0编制VBA程序嵌入Surfer 8实现自动绘制降雨等值线的方法。VB 6.0和Surfer 8两个软件都很小巧,对计算机硬件要求较低,其中VB 6.0还为河北省水文整编必备的软件,故通用性较强。在工作中采用此方法绘制降雨等值线图,将大大提高工作效率。

参考文献:
文雅,郭治兴. 应用Win-Surfer软件绘制降水等值线图. 土壤与环境. 200

2. 11(4)360-362

王建,白世彪,陈晔. Surfer 8 地理信息制图[M]. 中国地图出版社. 2004.
[3] 高春艳,刘彬彬,王斌. Visual Basic 开发技术大全[M]. 人民邮电出版社. 2007.

    copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号