ITopologicalOperator与IRelationalOperator
来源:互联网 发布:如何制作风险矩阵 编辑:程序博客网 时间:2024/05/16 07:26
操作两个Geometry时,常用的接口是ITopologicalOperator,比如clip,Intersect,Union,cut等。
当判断两个Geometry之间的拓扑关系式,用IRelationalOperator ,它有Contains、Crosses、Disjoint、Equals、Overlaps、Within、Touches等方法。
示例:
- ITopologicalOperator sourcePolygon= (ITopologicalOperator)outerPolygon;
- IPolygon resultPolygon = (IPolygon)sourcePolygon.Difference(cutPolygons);
- IRelationalOperator re = (IRelationalOperator)outerPolygon;
- if (!re.Contains(inPolygon))
- {
- throw new Exception("abcdefg");
- }
在进行这两个接口的运算前要注意下,如果参加运算的两个Geometry对象不是简单对象时,(注1:Simple对象,见下图)(注2:可以用ITopologicalOperator接口的IsSimple函数进行判断)(注3:当使用IPointCollection等接口生成或编辑的Geometry对象比较常出现这种情况),运算有可能会出错,并得不出想要的结果,这时需要对其进行处理:
- ((ITopologicalOperator)outerPolygon).Simplify();
简单对象的定义及处理
附1:ITopologicalOperator的一些函数示意:
方法名称
说明
Boundary
几何图形对象的边界
Buffer
对几何图形对象进行缓冲区空间拓扑操作
Clip
对几何图形对象进行裁剪空间拓扑操作
ConstructUnion
高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效
ConvexHull
构建几何对象的凸边形
Cut
切割几何对象
Difference
一个几何图形减去它与另一个几何图形相交的部分
Intersect
两个同维度几何对象的交集部分
Simplify
使几何对象拓扑一致
SymmetricDifference
对称差分将两个几何图形的并集部分减去两个几何图形交集的部分
Union
合并两个同维度的几何对象为单个几何对象
图解:
http://www.gisjc.com/a/ArcGIS_Engine/2010/0425/239.html
附2:IRelationalOperator的一些关系类型:
关系类型描述Contains判断一个图形是否包含另外一个图形Within判断一个图形是否被另外一个图形所包含。Crosses判断两个图形是否在维数较少的那个图形的内部相交Disjoint判断两个图形间是否没有相同点Equals
判断两个图形是否是同一个类型并且在平面上的点是否是相同的位置。如果返回值为真,则它们应该包含(Contains)另外一个图形同时也被另外一个图形所包含(Within)。
Overlaps判断两个图形的交集是否和其中的一个图形拥有相同的维数,并且他们交集不能和其中任何一个图形相等。该方法只使用与两个Polyline 之间或者两个Polygon 之间。
Touch判断两个图形的边界是否相交,如果两个图形的交集不为空,但两个图形内部的交集为空,则返回值为真。
- ITopologicalOperator与IRelationalOperator
- engine中空间运算接口ITopologicalOperator与空间关系接口IRelationalOperator
- 空间分析相关接口(ITopologicalOperator,IRelationalOperator,IProximityOperator)
- IRelationalOperator接口
- IRelationalOperator接口
- ITopologicalOperator接口
- ITopologicalOperator接口
- IRelationalOperator接口及方法介绍
- ITopologicalOperator接口问题多多
- ITopologicalOperator接口详解
- ITopologicalOperator接口详解
- ITopologicalOperator接口使用
- ITopologicalOperator接口使用方法
- ITopologicalOperator接口简介
- X/Y Domain导致ITopologicalOperator::Intersect出错
- ITopologicalOperator Buffer调用异常的解决方法
- ITopologicalOperator.Union方法成功地merge polygon
- ArcEngine利用ITopologicalOperator实现裁剪功能
- php des 加密解密实例
- Django makemessages errors Unknown encoding “utf8”
- 滴答滴答
- gcc/gdb初体验
- mysql使用知识点总结
- ITopologicalOperator与IRelationalOperator
- 创业者觉得苦逼得真正原因
- jenkins scm 签出重试次数
- 多个UpdatePanel控件相互引发刷新的使用 (二)
- spring的注解 配置
- ZOJ 3329 One Person Game(概率DP+迭代)
- SqlServer总结
- 零基础学python-16.6 嵌套作用域
- hdoj 1754 I Hate It【线段树】