ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IRelationalOperator 接口的应用

2020-03-30 19:02:20  阅读:274  来源: 互联网

标签:关系 重叠 包含 相交 pFeature 接口 应用 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有