基于Surfer和ArcGISEngine的雨量等值线自动生成法
- 格式:pdf
- 大小:410.80 KB
- 文档页数:4
第26卷第6期2008年12月水 电 能 源 科 学Water Resources and Power Vol.26No.6Dec.2008文章编号:100027709(2008)0620008204基于Surfer 和Arc GIS Engine 的雨量等值线自动生成法傅希德1 唐 俊2 张晓盼3 袁晓辉4(1.湖北省气象科技服务中心,湖北武汉430074;2.湖北省气象信息保障中心,湖北武汉430074;3.武汉理工大学资源与环境工程学院,湖北武汉430070;4.华中科技大学水电与数字化工程学院,湖北武汉430074)摘要:介绍了一种充分利用Surfer 软件和Arc GIS Engine 开发组件等现有技术工具实现矢量等值线雨量自动绘制的方法。
实例表明,应用效果很好。
关键词:等值线;GIS ;Surfer ;Arc GIS Engine 中图分类号:P426.61+3文献标志码:A收稿日期:2008208210,修回日期:2008209210基金项目:国家自然科学基金资助项目(50779020)作者简介:傅希德(19532),男,高级工程师、总工程师,研究方向为计算机网络通信系统和气象系统工程应用,E 2mail :xidef u @ 在实际气象应用中,需对大量各种气象数据要素绘制等值线进行分析。
目前,以位图格式绘制的等值线已不能解决如下问题:在等值线图上叠加行政区划等信息;精确叠加显示和标注关键地物(河流、水库、公路、铁路、输电线路等);用户对图形显示和打印精细程度的较高要求。
随着GIS 技术的发展,绘制有关数据信息矢量格式的等值线并综合显示地理信息数据已成为可能。
鉴此,本文结合气象资料存储与气象信息查询系统开发,比较了Surfer 和Arc GIS Engine 绘制和显示雨量等值线的优缺点,介绍了基于Surfer 和Arc GIS Engine 开发组件实现矢量等值线绘制方法,在中国长江电力股份公司三峡水利梯调中心气象服务及湖北省气象决策服务和天气会商中应用效果很好。
1 绘制矢量格式等值线法现状绘制矢量格式等值线的主要方法和性能分析如表1所示。
2 Surfer 绘制和显示雨量等值线的优缺点 Surfer 软件是G olden Software 公司研制的基于Windows 系列操作系统的插值绘图的小型软件,可处理离散点资料、格点资料,可绘制等值线表1 矢量等值线绘制主要方法比较Tab.1 Comp aris on on p rimary me t hodsof ve c t or is oline dra w ing绘制方法优点缺点引用文献GIS 自主开发完全掌握绘制代码,具有最高的集成度,便于对绘制结果进行灵活处理。
GIS 系统自带的插值功能有限,有时不能满足需求,如自行开发,需耗费大量时间和人力。
[1~5]专业等值线绘制工具(主要是Surfer )插值算法丰富,计算结果精确。
集成度较差,用户交互能力不强,无法充分使用目前GIS 矢量格式的地图,易丢失数据。
[6,7]采用组件形式将专业绘制软件等值线生成功能嵌入目标GIS 环境中利用专业绘制软件具有的组件调用能力,具有较好的集成度和适应性,是目前最适于兼顾快速开发和用户体验领域的方法。
目前未实现底层格网文件的数据转换,表现效果不匹配。
[8~10]图、三维立体图等,也可添加研究区域的部分地理信息并在资料点上显示标注等;提供Windows 界面,操作简单,同时还可通过VB 等编程语言将其嵌入用户开发的系统中。
(1)Surfer 绘制等值线的优点。
Surfer 强大的插值功能使其成为处理XYZ 数据首选软件,能迅速方便地将离散点的测量数据通过插值转换为连续的数据曲面,Surfer 8.0提供内插方法多达12种:反距离加权插值法、克里格插值法、最小曲率法、改进谢别德法、自然邻点插值法、最近邻点插值法、多元回归法、径向基函数法、线性插值三角网法、移动平均法、局部多项式法和数据度量法,因此用户可根据不同的情况灵活选用不同的内插方法创建所需的格网文件。
(2)Surfer显示等值线的缺点。
单纯使用Surfer生成和绘制显示等值线有很大的不足,主要反映在后期对等值线图的综合显示和打印方面:①无法充分展现现有地理信息地图数据。
若增加地物信息(如道路、河流等),则在生成等值线图时需将现有的GIS矢量地图导入Surfer,并和等值线图进行叠加。
但Surfer对矢量元素(如代表城市、自动站站点等矢量点,代表道路、河流等矢量线,代表湖泊等矢量多边形)仅能用内置的几种简单线形(如虚线、点划线)显示,无法按原图定义的铁路符号形式表现。
Surfer无法对图像进行投影变换,但在实际应用中常需对图像进行投影变换,如气象应用中常用的麦卡托投影和兰博托投影等。
②对等值线图上的各要素进行标注的能力差。
Surfer仅能对自己绘制的等值线进行标注,且标注的形式仅有一种,无法显示导入的地理信息地图带有的属性信息(如城市名称等)。
③人机交互功能差。
由于Surfer是一款专业的等值线绘制软件,难以满足更复杂和个性化的GIS应用环境,无法根据用户的专业需求进行更改,显示的内容仅能作为更专业的GIS应用的中间媒介数据。
3 Arc GIS Engine绘制和显示等值线的优缺点 Arc GIS Engine是一个创建定制的GIS桌面应用程序的开发产品。
Arc GIS Engine包括构建Arc GIS产品ArcView、ArcEditor、ArcInfo、Arc GIS Server.的所有核心组件。
使用Arc GIS Engine可创建独立界面版本的应用程序或对现有应用程序扩展,为GIS和非GIS用户提供专门的空间解决方案。
(1)Arc GIS Engine后期显示等值线的优点。
①直接使用矢量格式图像操作,显示时支持任意大小的无级缩放,可打印任意幅面的图像结果,不会出现图像的变形和模糊。
②可按用户需求充分展现地理信息地图。
查询系统中根据风力风向在图中绘制风向标的需求,可通过使用自定义的风向标符号完美实现。
③使用Arc GIS Engine可将地理信息地图中的元素的任何属性作为标注显示,并可让用户选择需标注的属性及自定义标注的字体、颜色、大小、位置等。
④强大的人机交互功能。
可方便地实现前进、后退、放大、缩小、漫游、复原等操作;可由用户定制显示对象的样式,选择所需显示的对象,还可根据对象的某项属性动态控制显示对象和对象显示的样式。
⑤ArcGIS Engine提供了强大丰富的开发接口。
使用ArcGIS Engine组件可在不安装ArcGIS Desktop环境的情况下,在应用程序中集成绝大部分的ArcGIS的功能。
(2)Arc GIS Engine生成等值线的缺点。
在Arc GIS Engine中生成等值线需使用空间分析模块,Arc GIS Engine仅提供了5种插值方法。
插值方法少,使用不如Surfer灵活,从实际使用情况看插值方法的数学模型也不如Surfer。
此乃使用Arc GIS Engine绘制等值线的最大不足。
4 实例在分析Surfer和Are GIS Engine绘制和显示雨量等值线优缺点基础上,开发了基于这两个组件的雨量等值线自动生成方法。
4.1 生成样本点数据要素数据样本点是绘制等值线的基础数据。
样本点应包含坐标信息和需进行等值线分析的气象要素值,若需显示该样本点的其他附加信息,也可包含其中。
Surfer支持多种文件格式作为其进行插值的源数据,本项目中使用的格式为:经度,纬度,雨量值,雨量站名称,雨量站编号\n 由用户从程序界面指定时间范围对数据库中的雨量数据执行SQL查询、计算该事件范围内的雨量累计值,最后输出为由逗号分隔的文本文件。
4.2 使用Surfer对样本点进行插值生成样本点数据后就可使用应用程序控制Surfer进行插值操作。
Surfer以进程外的COM 组件方式提供开发接口[9]。
本项目使用C#语言,首先使用Surfer.IApplication接口创建和控制Surfer COM对象:Surfer.IApplication surferApplication=new Surfer. ApplicationClass();然后通过Surfer提供的GridData函数插值生成格网文件。
该函数参数较多,大部分可使用缺省值,其中较重要的为DataFile、Algorit hm、numCols、numRows、Out Grid、Out Fmt6个参数。
Data File指定输入的样本数据文件,Algorit hm 指定插值所用算法,numCols和numRows指定生成的格网行列数,Out Grid指定结果输出文件, Out Fmt指定输出结果格式。
为使输出结果能在ArcGIS中使用,Out Fmt应设置为srf G ridFmtAscii。
4.3 Surfer格网文件转换为ArcGIS格网文件Surfer生成的格网文件不能在ArcGIS中直接使用,先要编写相应程序代码将其转化成ArcGIS 可识别的格式。
・9・第26卷第6期 傅希德等:基于Surfer和Arc GIS Engine的雨量等值线自动生成法 (1)文件头的转换。
Arc GIS 和Surfer 对格网文件头的格式定义存在差异[8],见表2。
由表可知,格网宽度需计算后进行转换,格网宽度的计算公式为:cellsize =(x max -x min )/(ncols -1)表2 ArcGIS 和Surf er 网格文件格式比较T ab.2 Grid file f orma t of ArcGIS and Surf er 数据名称ArcGIS 变量Surfer 变量文件头标识\DSAA 格网列数ncols ncols 格网行数nrows rcols最小经度xllcornerx min 最大经度\x max 最小纬度yllcornery min 最大维度\y max网格宽度cellsize \无数据网格点NODAT A _value\ (2)数据文件的转换。
2种格式的文件都是按纵轴坐标(纬度)存放,即存放完同一个纵轴坐标(纬度)的格点数据,再存下一个纵轴坐标(纬度)的格点数据。
差别为Surfer 格网文件的存放顺序是按纵轴坐标从大到小(即从高纬度到低纬度),而Arc GIS 格式则相反(从低纬到高纬)。
本项目中利用堆栈数据结构实现数据的反序转换过程。
4.4 使用Arc GIS 格网文件绘制等值线调用Arc GIS Engine 中提供的二进制栅格文件导入接口IRaster ImportOp ,可实现ASCII 格式的格网数据文件读取,然后调用ISurfaceOp 接口的Contour 函数生成等值线:IGeoDataset pcontourOutp ut =p SurfaceOp.Contour ((IGeo 2Dataset )p RasterDS ,dInterval ,ref Missing4);其中,p RasterDS 为导入的二进制栅格数据,dInter 2val 为等值线间隔,dbase 为等值线的起画值,Missing4为缺省参数的取值。