1、Cut切割几何对象 Difference一个几何图形减去它与另一个几何图形相交的部分 Intersect两个同维度几何对象的交集部分 Simplify使几何对象拓扑一致 SymmetricDifference对称差分将两个几何图形的并集部分减去两个几何图形交集的部分Union合并两个同维度的几何对象为单个几何对象 1. Boundary属性如图所示Polygon几何对象的Boundary是组成它的Polyline几何对象Polyline几何对象的Boundary是组成它的顶点Point几何对象而Point几何对象的Boundary是空对象,示意图如下图所示:2010-10-25 15:24 上
2、传下载附件 (20.15 KB) 2.Buffer方法:Buffer方法可以给一个高级几何对象产生一个缓冲区,无论是Polygon,Polyline,Point它们的缓冲区都是具有面积的几何对象,如下图所示:25 上传下载附件 (11.73 KB) 3.Clip方法Clip方法可以将用一个Envelope对象对一个几何对象进行裁剪,参见结果是几何对象被Envelope 对象所包围的部分如图所示:下载附件 (16.11 KB) 4.ConvexHull方法ConvexHull方法可以产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)26 上传下载附件 (11.54 KB)
3、5.Cut方法Cut方法不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,做,右两部分是相对曲线的方向而言。点与多点不能被切割,Polyline和Polygon只有与切割曲线相交时才能执行Cut方法,如下图:27 上传下载附件 (10.03 KB) 6.Difference方法Difference方法用于产生两个几何对象的差集。如图所示:下载附件 (10.61 KB) 7.Union方法和ConstructUnion都用于合并几何对象,所不同的是前者合并两个同维度的几何对象为单个几何对象,而后者是高效的合并多个枚举几何对象与单
4、个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效的。28 上传下载附件 (5.69 KB) 8.Intersect方法Intersect方法用于返回两个同维度几何对象的交集,即两个几何对象的重合部分。如下图所示:下载附件 (8.04 KB) 9.SymetricDifference方法SymetricDifference方法用于产生两个几何图形的对称差分,即两个几何的并集部分减去两个几何的交集部分,如下图所示:29 上传下载附件 (12.38 KB) 10.IsSimple属性和Simplify方法IsSimple属性用于检测几何对象是否是拓扑正确即为简化几何对象,而Simpli
5、fy方法用于简化几何对象使几何对象的拓扑正确。如下图所示:下载附件 (50.01 KB) 简化几何对象功能开发 在开发对几何对象空间分析时,所操作的几何对象必须是简化的几何对象,以下代码片段演示了如何使一个几何对象在拓扑上一致,例如在一个PointCollection对象中移除所有的重合点;对于segmentCollection移除所有重合线段,而相交的线段会变成非相交线段(即在相交处产生一个顶点);对于Polygon所有相交的环将被移除,未封闭的环将被封闭。 1. / <summary>2. / 简化几何对象3. / &/summary&4. param name="p
6、Geometry&几何对象&/param&5. private void SimplifyGeometry(IGeometry pGeometry)6. 7. try8. 9. ITopologicalOperator pTopOperator = pGeometry as ITopologicalOperator;10. if (pTopOperator != null)11. 12. if (!(pTopOperator.IsKnownSimple)13. 14. (pTopOperator.IsSimple)15. 16. pTopOperator.Simplify();17. 18.
7、19. 20. 21. catch (Exception Err)22. 23. MessageBox.Show(Err.Message, &提示&, MessageBoxButtons.OK, MessageBoxIcon.Information);24. 25. 复制代码6.4 IRelationalOperator接口6.4.1 IRelationalOperator接口简介几何对象之间都存在某种关联关系,如包含,相等,在内部,相交,叠加等。这些关联关系的获得都可以通过IRelationalOperator接口来获得,关系运算是在两个几何对象间进行的,通过IRelationalOpera
8、tor的某一个方法返回一个布尔值来说明这两个几何对象是否有这种关系。所有支持ITopologicaloperator的几何对象的类也实现了IRelationalOperator接口,其中包括Envelope对象,这意味着还可以对两个几何对象的Envelope进行关联关系检查。方法名称描述Contains检查两个几何图形几何图形1是否包含几何图形Crosses用于检测两个几何图形是否相交Equal 用于检测两个几何图形是否相等Touches用于检测两个几何图形是否相连Disjoint 用于检测两个几何图形是否不相交Overlaps用于检测两个几何图形是否有重叠Relation用于检测是否存在定义
9、relationshipWithin检查两个几何图形几何图形1是否被包含于几何图形6.4.2判断几何对象包含关系功能开发 以下代码片段演示如何判断几何图形A是否包含几何图形B:1. 1./ 检测几何图形A是否包含几何图形B 2. 2./ 3. 3./ 几何图形A 4. 4./ 几何图形B 5. 5./ True为包含,False为不包含 6. 6.private bool CheckGeometryContain(IGeometry pGeometryA, IGeometry pGeometryB) 7. 7. 8. 8.IRelationalOperator pRelOperator = p
10、GeometryA as IRelationalOperator;9. 9.if (pRelOperator.Contains(pGeometryB) 10. 10.11. 11. return true;12. 12. 13. 13.else 14. 14.15. 15. return false;16. 16.17. 17.6.5 IProximityOperator接口6.5.1 IProximityOperator接口简介IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点。IProximityOperator
11、接口的主要方法有:QueryNearesPoint,ReturnDistance, ReturnNearestPoint ReturnDistance方法用于返回两个几何对象间的最短距离,QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,ReturnNearestPoint方法用于创建并返回几何对象上离给定输入点的最近距离的点。6.5.2 最近点查询功能开发以下代码片段演示如何使用IProximityOperator接口获取给定点与要查询的几何图形的最近点:/ 在pGeometry上返回一个离pInputPoint最近的point2. 3. 2.4.
12、5. 3./ 给定的点对象6. 7. 4./ 要查询的几何图形8. 9. 5./ the nearest Point10. 11. 6.private IPoint NearestPoint(IPointpInputPoint, IGeometry pGeometry)12. 13. 7.14. 15. 8.16. 17. 9.18. 19. 10.IProximityOperator pProximity = (IProximityOperator)pGeometry;20. 21. 11. IPoint pNearestPoint = pProximity.ReturnNearestPoi
13、nt(pInputPoint, esriSegmentExtension.esriNoExtension);22. 23. 12. return pNearestPoint;24. 25. 13.26. 27. 14.catch(Exception Err)28. 29. 15.30. 31. 16.32. 33. 17. return null;34. 35. 18.36. 37. 19.以下代码片段演示如何使用IProximityOperator接口查询给定的两个几何对象的距离:1. / 获取两个几何图形的距离3. 4. 1.5. 2.6. 3./ 两个几何图形的距离 8. 5.priva
14、te doubleGetTwoGeometryDistance(IGeometry pGeometryA, IGeometry pGeometryB) 9. 6.10. 7.IProximityOperatorpProOperator = pGeometryA as IProximityOperator;11. 8.if (pGeometryA!=null| pGeometryB !=null) 12. 9.13. 10.double distance=pProOperator.ReturnDistance(pGeometryB);14. 11.return distance;15. 12.16. 13.17. 14.18. 15. return 0;19. 16.20. 17.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1