ArcGIS_Engine基础开发教程——学习空间分析_第1页
ArcGIS_Engine基础开发教程——学习空间分析_第2页
ArcGIS_Engine基础开发教程——学习空间分析_第3页
ArcGIS_Engine基础开发教程——学习空间分析_第4页
ArcGIS_Engine基础开发教程——学习空间分析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ArcGIS Engine基础开发教程(6)学习空间分析本帖最后由 fxlcoco 于 2010-3-9 09:53 编辑 ESRI BBS GIS大讲堂首发,转载请注明出处空间分析功能是GIS的主要功能之一,本章将为读者介绍一些GIS开发常用的功能涉及到的空间拓扑运算,空间关系运算,空间临近运算所使用到的接口。例如开发一个缓冲区分析功能,获取两个几何要素的最短距离,判断两个几何要素的拓扑关系等都需要使用到这些接口,使用这些接口可以极大提高开发者的开发效率。1.1目标1.熟悉ITopologicalOperator接口(用于空间拓扑运算)的使用2.熟悉IRelationalOperator接口

2、(用于空间关联运算)的使用3.熟悉IProximityOperator接口(用于空间距离运算)的使用1.2准备工作1.IDE:Visual Studio 2005/20082.ArcGIS Engine Developer kit 9.36 收藏 分享 评分 努力不一定成功,放弃就一定失败。学习是一种信仰(In learning we trust)!fxlcoco · 发短消息 · 加为好友 fxlcoco (Smart)当前离线 GIS圈里小混混UID4359 帖子1409 精华14 积分12456 在线时间1692 小时 

3、;注册时间2005-12-21 最后登录2010-5-5 2# 1.1 ITopologicalOperator接口1.1.1 ITopologicalOperator接口简介ITopologicalOperator接口用来通过对已存在的几何对象做空间拓扑运算以产生新的结合对象。实现该接口的类有Point,Multipoint,Polyline,Polygon,MultiPatch这些都是高级几何对象,另外GeometryBag也实现了该接口,低级的构建几何对象如Segments(Line,Circular Arc,Elliptic Arc,Bezier Curve),Pa

4、ths或者Rings如果想使用该接口需包装成高级几何对象。ITopologicalOperator接口在GIS开发中使用非常广泛,通常GIS系统中缓冲区分析,裁剪几何图形,几何图形差分操作,几何图形合并操作等都需要使用此接口。下表是ITopologicalOperator接口主要的方法说明:方法名称说明Boundary几何图形对象的边界Buffer对几何图形对象进行缓冲区空间拓扑操作Clip对几何图形对象进行裁剪空间拓扑操作ConstructUnion高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效ConvexHull构建几何对象的凸边形Cut切割几

5、何对象Difference一个几何图形减去它与另一个几何图形相交的部分Intersect两个同维度几何对象的交集部分Simplify使几何对象拓扑一致SymmetricDifference对称差分将两个几何图形的并集部分减去两个几何图形交集的部分Union合并两个同维度的几何对象为单个几何对象1. Boundary属性如图所示Polygon几何对象的Boundary是组成它的Polyline几何对象Polyline几何对象的Boundary是组成它的顶点Point几何对象而Point几何对象的Boundary是空对象,示意图如下图所示:下载 (20.15 KB)2009-6-15 09:122

6、.Buffer方法:Buffer方法可以给一个高级几何对象产生一个缓冲区,无论是Polygon,Polyline,Point它们的缓冲区都是具有面积的几何对象,如下图所示:下载 (11.73 KB)2009-6-15 09:123.Clip方法Clip方法可以将用一个Envelope对象对一个几何对象进行裁剪,参见结果是几何对象被Envelope 对象所包围的部分如图所示:下载 (16.11 KB)2009-6-15 09:124.ConvexHull方法ConvexHull方法可以产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)下载 (11.54 KB)2009-6-

7、15 09:125.Cut方法Cut方法不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,做,右两部分是相对曲线的方向而言。点与多点不能被切割,Polyline和Polygon只有与切割曲线相交时才能执行Cut方法,如下图:下载 (10.03 KB)2009-6-15 09:126.Difference方法Difference方法用于产生两个几何对象的差集。如图所示:下载 (10.61 KB)2009-6-15 09:127.Union方法和ConstructUnion都用于合并几何对象,所不同的是前者合并两个同维度的几何对象

8、为单个几何对象,而后者是高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效的。下载 (5.69 KB)2009-6-15 09:128.Intersect方法Intersect方法用于返回两个同维度几何对象的交集,即两个几何对象的重合部分。如下图所示:下载 (8.04 KB)2009-6-15 09:129.SymetricDifference方法SymetricDifference方法用于产生两个几何图形的对称差分,即两个几何的并集部分减去两个几何的交集部分,如下图所示:下载 (12.38 KB)2009-6-15 09:1210.IsSimple属

9、性和Simplify方法IsSimple属性用于检测几何对象是否是拓扑正确即为简化几何对象,而Simplify方法用于简化几何对象使几何对象的拓扑正确。如下图所示:下载 (50.01 KB)2009-6-15 09:12image001.png (20.15 KB) 下载次数:82009-6-15 09:12image003.png (11.73 KB) 下载次数:62009-6-15 09:12image005.png (16.11 KB) 下载次数:52009-6-15 09:12image007.png (11.54 KB) 下载次数:32009-6-15 09:12image009.p

10、ng (10.03 KB) 下载次数:52009-6-15 09:12image011.png (10.61 KB) 下载次数:52009-6-15 09:12image013.png (5.69 KB) 下载次数:92009-6-15 09:12image015.png (8.04 KB) 下载次数:62009-6-15 09:12努力不一定成功,放弃就一定失败。学习是一种信仰(In learning we trust)!fxlcoco · 发短消息 · 加为好友 fxlcoco (Smart)当前离线 GIS圈里小混混UID4359 帖子1409 精

11、华14 积分12456 在线时间1692 小时 注册时间2005-12-21 最后登录2010-5-5 3#6.3.2简化几何对象功能开发   在开发对几何对象空间分析时,所操作的几何对象必须是简化的几何对象,以下代码片段演示了如何使一个几何对象在拓扑上一致,例如在一个PointCollection对象中移除所有的重合点;对于segmentCollection移除所有重合线段,而相交的线段会变成非相交线段(即在相交处产生一个顶点);对于Polygon所有相交的环将被移除,未封闭的环将被封闭。1.2. / <summar

12、y>3.         / 简化几何对象4.         / </summary>5.         / <param name="pGeometry">几何对象</param>6.         private void SimplifyGeometry(IGeometry pGeom

13、etry)7.         8.             try9.             10.                 ITopologicalOperator pTopOperator = pGeometry as ITopologicalOperator;1

14、1.                 if (pTopOperator != null)12.                 13.                     if (!(pTopOperator.IsKnownSimple)14.  

15、;                   15.                         if (!(pTopOperator.IsSimple)16.                  

16、60;      17.                             pTopOperator.Simplify();18.                         19.    

17、                 20.                 21.             22.             catch (Exception Err)23.    

18、60;        24.                 MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);25.             26.         5

19、# 6.5 IProximityOperator接口6.5.1 IProximityOperator接口简介IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点。IProximityOperator接口的主要方法有:QueryNearesPoint,ReturnDistance, ReturnNearestPoint ReturnDistance方法用于返回两个几何对象间的最短距离,QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,ReturnNearestPoint方法用于创

20、建并返回几何对象上离给定输入点的最近距离的点。6.5.2 最近点查询功能开发以下代码片段演示如何使用IProximityOperator接口获取给定点与要查询的几何图形的最近点: 1.   / 在pGeometry上返回一个离pInputPoint最近的point2.         / </summary>3.         / <param name="pInputPoint">给定的点对象</par

21、am>4.         / <param name="pGeometry">要查询的几何图形</param>5.         / <returns>the nearest Point</returns>6.          private IPoint NearestPoint(IPoint  pInputPoin

22、t, IGeometry pGeometry)7.         8.             try9.             10.                IProximityOperator pProximity = (IProximityOperator)pG

23、eometry;11.                 IPoint pNearestPoint = pProximity.ReturnNearestPoint(pInputPoint, esriSegmentExtension.esriNoExtension);12.                 return pNearestPoint;13.      

24、60;      14.             catch(Exception Err)15.             16.                 MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, Me

25、ssageBoxIcon.Information);17.                 return null;18.             19. 以下代码片段演示如何使用IProximityOperator接口查询给定的两个几何对象的距离: 1.     / <summary>2.         / 获取两个几何图

26、形的距离3.         / </summary>4.         / <param name="pGeometryA">几何图形A</param>5.         / <param name="pGeometryB">几何图形B</param>6.         / <returns>两个几何图形的距离</returns>7.         private double  GetTwoGeometryDistance(IGeometry pGeometryA, IGeometry pGeometryB)8.                   &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论