基于ArcGIS的VBA多边形空洞去除方法研究

2013-08-29 17:00张金兰欧阳婷萍
大众科技 2013年3期
关键词:外环内环批量

张金兰 欧阳婷萍

(1.广东工贸职业技术学院,广东 广州 510510;2.中国科学院广州地球化学研究所 边缘海地质重点实验室,广东 广州 510640)

在GIS中,矢量数据模型是地理数据的最主要表现形式。在矢量数据模型中,将二维地理实体抽象为点、线、面(多边形)三类要素对象[1]。这些几何形体对象可以精确描述具有离散特征的要素在地球上的具体位置和形状,并能够表达出地理实体之间的空间关系。正是因为空间关系,才使得GIS可以对这些要素进行不同的空间分析和运算,得出用户需要的结果,这也是GIS区别于一般地理信息系统的本质——空间查询和分析功能。空间关系主要包括方向关系、拓扑关系和度量关系。空间拓扑关系是空间实体间的一个重要而又基本的关系,是GIS空间推理、查询和分析的基础[2-7]。多边形的拓扑关系可归纳为“相离”、“相接”、“相交”、“覆盖”、“包含”、“覆盖于”、“包含于”、“相等”关系[6,7]。但对于这些关系的描述和应用都是在简单无洞多边形的基础上的。如果多边形存在空洞(内环),便会对拓扑关系造成困扰,干扰GIS的应用。因此经常需要对多边形的空洞(内环)进行删除。ESRI公司的ArcGIS系列软件是一个全面的、完善的、功能强大的GIS软件平台[8]。ArcGIS虽然能够对空洞多边形进行去除,但只能对空洞(内环)一个一个的进行删除,不能达到批量处理的效果。本文针对上述问题,利用ArcGIS中内置VBA对多边形空洞进行批量的删除处理,生成无洞多边形。经试验表明,该方法简单,效果理想,为GIS的数据处理和应用分析提高效率,更适用于广大GIS用户。

1 VBA介绍

众所周知,Arcmap中包含了内置的VBA,VBA全称Visual Basic For Application,是 Visual Basic的子集,作为ArcGIS的二次开发工具。VBA提供了一种集成的编程环境——VB编辑器(VBE)。在该环境中,可以编写并调试在Arcmap中使用的VB宏及ESRI的对象库,宏的命令可以将VB的一些或部分功能与Arcmap的功能集成起来。创建宏的过程就是编写VB的子程序,改程序的名字就是宏的名字[9]。VBA的开发使用ActiveX技术,这种技术能使用户能够从ArcGIS的内部或外部以编程方式来操作ArcGIS,同时具有一个功能强大的对象库——ArcObjects。ArcGIS与VBA的结合具有如下特点:

(1)VBA可以通过应用程序满足用户的需要,增强与用户的交互,集成ArcGIS的功能,使ArcGIS任务自动化,增强ArcGIS的功能[10,11]。

(2)VBA是VB的子集,二者结构和语法完全一致,易于掌握和快速应用,并且内嵌于ArcGIS软件中,无需安装[11,12]。

2 基于ArcGIS的VBA多边形空洞去除的实现

2.1 算法依据

在ArcObjects中, Polygon(多边形)是一个有序Ring(环)对象的集合,环有内环和外环之分,内环及多边形的空洞。内环和外环的存储方向是有区别的,内环存储方向是逆时针方向,而外环是顺时针方向,这也决定了环的面积特性有所区别。内环的面积为负值,外环的面积为正值[13-15]。这是判断内环和外环的关键,也是去除多边形空洞的算法依据。

2.2 算法实现

(1)在ArcGIS的“ArcMap—T0ols—Macros-Create”下,输入文件名,编好程序后,若想保存文件,点VBE中的“File—save Project”图标,输入文件名,则文件以后缀名为.mxd的格式保存.当下次需要运行时,打开“ArcMap—tools—Macms—VBE—Run”,运行宏的结果将在桌面显示。

(2)在本次开发中主要用到Polygon类和Ring类,首先通过ITopologicalOperator2接口的SimplifyPreserveFromTo函数确保多边形的内环和外环的方向是正确的;接着通过IArea接口的Area属性值是否小于0,来筛选内环进行删除,只保留多边形的外环,完成多边形空洞的去除。部分代码如下:

(3)上述代码是去除一个多边形的空洞,要对整个图层的多边形空洞的批量去除,只需要遍历完整个图层的多边形要素即可。实验结果如图1所示:

图1 处理结果

3 结论与建议

本文利用ArcGIS中内置VBA进行二次开发,实现对多边形空洞的批量删除处理,算法简单可行,实现效率高。对于GIS用户在进行空间分析,特别是根据多边形拓扑关系进行空间分析的时候具有重要的意义。

[1]邬伦,刘瑜,等.地理信息系统——原理、方法和应用[M],北京:科学出版社,2005.

[2]何建华,刘耀林.GIS中拓扑和方向关系推理模型[J]. 测绘学报,2004,33(2):156-162.

[3]杜世宏,秦其明,王桥.GIS中由多种方向关系推理拓扑关系的方法[J].计算机辅助设计与图形学学报,2005, 17(9):1917-1927.

[4]邓敏,李志林,李永礼.GIS线目标间拓扑关系描述的层次方法[J].遥感学报,2007,11(3):311-317.

[5]刘耀开,刘传立.GIS空间拓扑关系形式化描述模型分析[J].江西理工大学学报,2008,29(5):41-44.

[6]邓敏,刘文宝,冯学智.GIS面目标间拓扑关系的形式化模型[J].测绘学报,2005,34(1):85-90.

[7]邓敏,刘文宝,黄杏元,等.空间目标的拓扑关系及其GIS应用分析[J].中国图像图形学报,2006,11(12):1743-1749.

[8]魏士春,张红日,苏奋振,等.基于ArcGIS的面状要素中轴线提取方法研究[J].地理空间信息,2007,5(2):45-47.

[9]党安荣,贾海峰,易善桢,等.ArcGIS 8 Desktop地理信息系统应用指南[M].北京:清华大学出版社,2003.

[10]黄红华,谭云婷,吴鹏.基于ArcGIS二次开发的图斑综合研究[J].科技资讯,2009,31:1-1.

[11]刘少军,何政伟,黄润秋,等.利用ArcGIS中VBA开发滑坡阶段综合预报功能[J].桂林工学院学报,2004,24(3):315-318.

[12]谭金华,左石磊,洪胜.基于ArcGIS VBA批量生成野外调查用途程序设计[J].浙江测绘,2011,1:71-73.

[13]兰小机,刘德儿.基于ArcObjects与C#.NET的GIS应用开发[M].北京:冶金工业出版社,2011.

[14]韩鹏,徐占华,褚海峰,等.地理信息系统开发[M].武汉:武汉大学出版社,2005.

[15]ESRI. Engine help for .NET(VS2008)[DB/OL]. ms-help://ESRI.EDNv9.3/NET_Engine/e7a44d7b-bb14-43e0-b71b-38b817b953 af.htm.

猜你喜欢
外环内环批量
潘王路南延南外环道路绿化工程设计
批量提交在配置分发中的应用
深圳外环高速公路通车
基于弓状下缘的腹腔镜内环网塞修补术治疗成人腹股沟斜疝的效果观察
巩膜外环扎术治疗复发性视网膜脱离的临床观察
单孔腹腔镜治疗儿童巨大腹股沟斜疝
经脐两孔法腹腔镜腹股沟疝内环高位结扎加脐外侧襞加强术治疗小儿腹股沟斜疝*(附108例报告)
经脐微型腹腔镜内环高位结扎术联合包皮环套术的临床应用
某型机低压涡轮外环钎焊技术
在数控车床上批量钻铰孔类工件的实践