码迷,mamicode.com
首页 > 其他好文 > 详细

IRelationalOperator 接口的应用

时间:2020-03-30 19:42:58      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:log   相交   空间   比较   ret   overlap   contains   相互   copy   

IRelationalOperator接口用来确定两个图形之间存在的空间关系,空间关系类型包括包含、相交、相等、相接、不相交、重叠、内部等。

       IRelationalOperator接口主要方法有以下8个:

 

(1)Contains包含关系

       包含关系只存在于以下6种情况:点包含点、线包含点、线包含线、面包含点、面包含线、面包含面情况。

 

(2)Cross相交关系

相交关系只能用于线与线、面与线、线与面这三种情况。

 

(3)Disjoint不相交关系

       不相交关系使用范围最广,涵盖点、线、面所有的相互关系,判断点、线、面图形是否存在不相交关系,不存在,返回true,相交,返回false。

 

(4)Equal相等关系

       相等关系只存在三种比较:点与点、线与线、面与面。

 

(5)Overlap重叠关系

       重叠关系也只存在三种比较:多点与多点、线与线、面与面。

       如果其中一个图形为空,则不存在重叠关系。

 

(6)Touch相接关系

       相接关系除了不能用与点与点,其他图形都可以进行判断。

 

(7)Within内部关系

       内部关系用于点被点、点被线、点被面、线被线、线被面和面被面包含与关系,他与contains正好相反,是一种被内部的关系。

 

(8)Relation关系

       用于检测是否存在定义relationship,一般不使用。

private string Overlap_Disjoint(IFeature pFeature, IFeatureLayer featureLayer)
{
string result = string.Empty;
IGeometry pGeometry = pFeature.ShapeCopy;
IFeatureClass featureClass = featureLayer.FeatureClass;
IFeatureCursor feac = featureClass.Search(null, false);
pFeature = feac.NextFeature();
while (pFeature != null)
{
IRelationalOperator pRelOperator = pGeometry as IRelationalOperator;
if (pRelOperator.Overlaps(pFeature.ShapeCopy))//重叠关系
{
result += "要素存在相互重叠关系$";
}
if (pRelOperator.Crosses(pFeature.ShapeCopy))//Disjoint 相交关系
{
result += "要素存在相交关系$";
}
pFeature = feac.NextFeature();
}
return result;
}

https://blog.csdn.net/yinjun151/article/details/51811555

 

IRelationalOperator 接口的应用

标签:log   相交   空间   比较   ret   overlap   contains   相互   copy   

原文地址:https://www.cnblogs.com/wgj-blog/p/12600440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!