[转]ArcGIS中判断两个Geometry之间的关系
2015-07-28 17:17
309 查看
[转]ArcGIS中判断两个Geometry之间的关系
当判断两个Geometry之间的拓扑关系式,用IRelationalOperator ,它有Contains、Crosses、Disjoint、Equals、Overlaps、Within、Touches等方法。
示例:
[c-sharp] view plaincopy
ITopologicalOperator sourcePolygon= (ITopologicalOperator)outerPolygon;
IPolygon resultPolygon = (IPolygon)sourcePolygon.Difference(cutPolygons);
[c-sharp] view plaincopy
IRelationalOperator re = (IRelationalOperator)outerPolygon;
if (!re.Contains(inPolygon))
{
throw new Exception("abcdefg");
}
在进行这两个接口的运算前要注意下,如果参加运算的两个Geometry对象不是简单对象时,(注1:Simple对象,见下图)(注2:可以用ITopologicalOperator接口的IsSimple函数进行判断)(注3:当使用IPointCollection等接口生成或编辑的Geometry对象比较常出现这种情况),运算有可能会出错,并得不出想要的结果,这时需要对其进行处理:
[c-sharp] view plaincopy
((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 | 判断两个图形的边界是否相交,如果两个图形的交集不为空,但两个图形内部的交集为空,则返回值为真。 |
相关文章推荐
- Eclipse 常用快捷键
- Servlet+JSP要点
- PHP csv大量数据导出分割处理
- 很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
- Windows平台下使用Beyond Compare作为GIT默认的比对与合并工具
- iOS阶段学习第27天笔记(UIButton-UIImageView的介绍)
- 链接
- UINavgation 总结
- APP_ABI目前能取得值
- Python 练习册,每天一个小程序
- VMware虚拟机配置Ubuntu桥接方式(Bridged)使虚拟机和宿主机能互相ping通
- Android里面的匿名类与匿名内部类使用
- shell:读取文件的每一行内容并输出
- 绝对布局AbsoluteLayout学习笔记
- 游戏暂停界面 和 音量开关 背景音乐 音效调节
- Unity查找脚本被哪些Perfab或场景引用
- 设计模式(5): 命令模式
- HDU 3635 Dragon Balls (并查集)
- sybase使用
- Android的输入法是否弹出