AO组件技术在水利信息管理中的应用
2011-07-18李小根潘向丽孙大鹏
李小根,潘向丽,周 进,孙大鹏
(华北水利水电学院,河南郑州 450011)
AO组件技术在水利信息管理中的应用
李小根,潘向丽,周 进,孙大鹏
(华北水利水电学院,河南郑州 450011)
应用组件库ArcObjects中的组件研制了某水库的库容和淹没面积的计算功能模块,分析了功能模块的基本原理,建立了基于AO的计算方法,并和传统方法进行了比较.结果表明,基于AO的计算方法得出的结论精度更高,在防洪、调度、洪水综合利用方面能够提供精确的、科学的决策依据.
控件;模块;引擎;ArcObjects
在水库的日常管理中,水库的管理部门经常要计算水库的库容和淹没面积,按照传统方法,水库的管理部门将水库按照规则立方体进行计算,这种计算方法势必带来一定的误差.而应用ESRI公司的组件库ArcObjects的控件能够很好地解决这一问题,该方法按照水库的实际地形来计算水库的库容和淹没面积,能够得出精确的计算结果.
1 基本原理
该计算方法使用ESRI ArcGIS Objects的 ToolbarControl和 MapControl 2个控件.ToolbarControl控件用于容纳各种内置和自定义工具,MapControl读取用来进行计算所需的地理数据.MapControl控件是该数据计算方法的核心控件,用来装载地图数据对象.这些装入MapControl的地图数据对象在程序设计中指定,并且可以指定为链接模式或包含模式.在链接模式下,无论何时创建MapControl控件,控件会自动从地图文档中读取最新的数据.在包含模式下,MapControl控件将地图文档中的数据的一个副本复制到控件中,不再显示复制以后更新的地图文档的内容.把地图文档装入MapControl控件,可以使用 MapControl控件的 LoadMxFile方法[1].
2 计算方法的实现过程
该数据计算方法界面的设计视图如图1所示.
此独立 CalForm窗体从 System.Windows.Forms.Form继承而来,包括2个主要对象和4个主要方法、事件[2-3].
2个主要对象分别为:MapControl控件的实例axMapControl1,ToolbarControl控件的实例axToolbar-Control1.4个主要方法和事件为:GetProarea(),GetVolume(),axMapControl1_OnMouseMove(),ax-ToolbarControl1_OnMouseMove().
GetProarea()方法用来计算当前水位下库区淹没面积.使用了ArcGIS Engine的 Geodatabase对象库中的ITin,ITinAdvanced,ISurface 3个接口.其中,ITin接口用于新建对象,ITinAdvanced接口的Init()方法用于初始化TIN数据,ISurface接口的GetProjectedArea()方法用于计算当前水位下的库区淹没面积.GetProarea()方法的核心代码为:
图1 数据计算的设计视图
用GetVolume()方法计算当前水位下的库容.使用了ArcGIS Objects的 Geodatabase对象库中的ITin,ITinAdvanced,ISurface 3 个接口.其中,ITin 接口用于新建对象,ITinAdvanced接口的Init()方法用于初始化TIN数据,ISurface接口的GetVolume()方法用于计算当前水位下的库容.GetVolume()方法的核心代码为:
数据计算界面中的水深点击式查询功能是自定义工具.此工具对象继承自 ESRI.ArcGIS.SystemUI.ITool和 ESRI.ArcGIS.SystemUI.ICommand,通过ToolbarControl的AddItem()方法添加到工具条中.在实现 ESRI.ArcGIS.SystemUI.ITool 和 ESRI.Arc-GIS.SystemUI.ICommand接口时最主要的部分是重写了 ESRI.ArcGIS.SystemUI.ICommand 接口的 On-MouseDown()事件.用它来处理鼠标在地图上的点击,搜索鼠标点击点附近的TIN数据,根据TIN数据进行线性内插,计算出点击点的高程值并返回给用户.重写OnMouseDown()事件的部分代码为:
3 计算结果
某水库水位是从128 m到106 m的整数水位,使用该系统对库容和淹没面积进行计算并与常规计算方法、积分法的计算结果相比较,统计结果如图2和图3所示.
图2 库容计算结果比较
4 结语
从图2和图3可以看出,3条线基本重合,说明该方法切实可行.引入“比例”的概念,用“比例”表示该系统的计算结果与常规法和积分法计算结果的平均值所差的百分比.可以得出如下结论:①当水位在107 m以上时该系统的库容和淹没面积计算结果和其它2种方法的计算结果相差无几,最多差3.07%,大多数在1%之内,这个误差正是由传统方法计算造成的,而该计算方法是应用积分方法得出来的结果,精度比较高;②当水位在106 m到107 m,也就是接近死水位1 m范围内出现了较大误差,事实上水位降到这个范围的可能性很小,因此这部分误差对该系统的运行不会造成太大影响.另外还可用曲线拟合法修正这部分计算结果.
图3 淹没面积计算结果比较
[1]Hand D,Mannila H,Smyth P.数据挖掘原理[M].张银奎,廖丽,宋俊,译.北京:机械工业出版社,2003.
[2]吕凤军.数字图像处理编程基础[M].北京:机械工业出版社,1998.
[3]黄敏,何国辉.Visual C++程序开发指南[M].北京:科学出版社,1995.
Application of the AO Component to Water Conservancy Information Management
LI Xiao-gen,PAN Xiang-li,ZHOU Jin,SUN Da-peng
(North China Institute of Water Conservancy and Hydroelectric Power,Zhengzhou 450011,China)
The ArcObjects components were applied to developing the functional module for calculating the storage capacity and flooded area of the reservoir,and the basic principle of it was analyzed.The calculation method based on ArcObjects was established,and the calculation results were compared with the ones obtained by the traditional method.It indicated that the results obtained by the calculation method based on ArcObjects were more accurate and could provide a precise and scientific decision-making basis for flood control,scheduling,comprehensive utilization of flood.
component;module;engine;ArcObjects
1002-5634(2011)05-0024-03
2011-06-28
李小根(1973—),男,河南焦作人,副教授,博士,主要从事水利信息技术、地理信息系统方面的研究.
(责任编辑:蔡洪涛)