[转]ArcGIS中判断两个Geometry之间的关系

[转]ArcGIS中判断两个Geometry之间的关系



操作两个Geometry时,常用的接口是ITopologicalOperator,比如clip,Intersect,Union,cut等。

当判断两个Geometry之间的拓扑关系式,用IRelationalOperator ,它有Contains、Crosses、Disjoint、Equals、Overlaps、Within、Touches等方法。

示例:

 

[c-sharp]  view plain copy
  1. ITopologicalOperator sourcePolygon= (ITopologicalOperator)outerPolygon;  
  2. IPolygon resultPolygon = (IPolygon)sourcePolygon.Difference(cutPolygons);  

 

[c-sharp]  view plain copy
  1. IRelationalOperator re = (IRelationalOperator)outerPolygon;  
  2. if (!re.Contains(inPolygon))  
  3. {  
  4.     throw new Exception("abcdefg");  
  5. }  

 

在进行这两个接口的运算前要注意下,如果参加运算的两个Geometry对象不是简单对象时,(注1:Simple对象,见下图)(注2:可以用ITopologicalOperator接口的IsSimple函数进行判断)(注3:当使用IPointCollection等接口生成或编辑的Geometry对象比较常出现这种情况),运算有可能会出错,并得不出想要的结果,这时需要对其进行处理:

[c-sharp]  view plain copy
  1. ((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

判断两个图形的边界是否相交,如果两个图形的交集不为空,但两个图形内部的交集为空,则返回值为真。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值