• 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

  • 相关阅读:
    Access-自定义控件TabControl
    Excel公式-求最低价网站名字
    Excel图表-太极图
    Excel图表-"DNA"图
    VB中的GDI编程-2 画笔
    leetcode
    leetcode
    leetcode
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/wgj-blog/p/12600440.html
Copyright © 2020-2023  润新知