IRelationalOperator 接口的应用
作者:互联网
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
标签:关系,重叠,包含,相交,pFeature,接口,应用,IRelationalOperator 来源: https://www.cnblogs.com/wgj-blog/p/12600440.html