zoukankan      html  css  js  c++  java
  • 空间关系分类及接口方法

    一、IRelationalOperator接口

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

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

    wps28_thumb[4]

    private bool CheckGeometryContain(IGeometry pGeometryA, IGeometry pGeometryB)
    {
        IRelationalOperator pRelOperator = pGeometryA as IRelationalOperator;
        if (pRelOperator.Contains(pGeometryB))
            return true;
    }

    1.Contains包含关系

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

    wps29_thumb[1]

    2.Cross相交关系

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

    wps30_thumb

    3.Disjoint不相交关系

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

    wps31_thumb[1]

    4.Equal相等关系

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

    wps32_thumb

    5.Overlap重叠关系

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

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

    wps33_thumb[1]

    6.Touch相接关系

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

    wps34_thumb

    7.Within内部关系

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

    wps35_thumb

    8.Relation关系

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

    二、ITopologicalOperator接口

    作为空间分析重要部分的拓扑关系运算,ArcGISEngine类库中将拓扑关系运算功能函数方法封装在ITopologicalOperator接口。

    属性:Boundary边界

    几何图形的边界属性。面的边界是多条折线;线的边界是与起始终止点相一致的多点;多点边界是空对象。

    wps36_thumb

    属性:IsKnownSimple是否简单对象

    如当前几何图形是简单对象返回true,否则返回false;它反映了图形是否进行了拓扑纠正。

    返回False:新创建的非空对象;图形经过投影、一般化处理;

    返回True:空几何对象;直接从要素类中获得的;执行过ITopologicalOperator接口方法后得到的几何图形;

    属性:IsSimple是否已拓扑纠正

    当图形还没被认定为简单对象,返回是否已经进行拓扑纠正。可调用Simply方法强制修正。

    方法:Buffer缓冲区

    根据指定的几何图形生成缓冲区,返回Polygon对象。缓冲区的距离Distance可以为“正”,也可以为“负”;为负数时,只适用于Polygon对象生成缓冲区。缓冲区的距离单位与生成缓冲区源几何图形坐标单位一致。

    ITopologicalOperator pTopologBoundary = pGeo as ITopologicalOperator;

    IGeometry pGeometry = pTopologBoundary.Buffer(2);

    wps37_thumb

    方法:Clip裁剪

    裁剪指定区域内的图形。

    wps38_thumb

    方法:ClipDense裁剪

    裁剪指定区域内的图形,并致密化输出线。(densifies lines in output contributed by the clipping envelope)

    方法:ConstructUnion合并

    合并一组几何图形同时创建一个新的对象

    方法:ConvexHull包络多边形

    创建一个能够包含一组图形的最小边界多边形

    wps39_thumb

    方法:Cut分割

    分割一个几何图形(线、面)为左右两部分(相对于分割线来说)。

    ITopologicalOperator.Cut(splitLine, sleftGeom,srightGeom);

    分割线绘制的方向决定了被分割后的对象属于左边还是右边。如下图所示,分割线至上而下将图形分割为左、右两部分,所以原图形的左半部分是作为结果的右边对象返回的。

    当几何图形与分割线没有相交时,几何图形将作为右边部分返回,左边部分为空。

    wps40_thumb

    方法:Difference去除相交部分

    获得原始图形除去相交部分之外的图形部分。

    wps41_thumb

    方法:Intersect相交

    获得源图形与另外图形相交部分

    wps42_thumb

    方法:QueryClipped裁剪

    与Clip相似,其中第二个参数为剪切后返回输出,被剪切对象本身不会改变

    方法:QueryClippedDense裁剪

    与ClipDense相似,其中第三个参数为剪切后返回输出,被剪切对象本身不会改变。

    方法:Simplify拓扑纠正

    改变原有几何图形,对几何图形进行拓扑纠正

    点集合:不做任何处理。多点:经过Simplify后会移除相同的点。

    wps43_thumb

    多线:有平面和非平面之分。

    当有M值时:重叠部分被舍去变成单一的;每个部分在相交位置被打断。对于最后输出的对象来说,相连续的部分合并生成个新对象;原来的线段可能会保留,其内部的结构会有所调整。

    当没有M值时:重叠、自相交的部分被保留,长度为0的部分被舍去;线段的走向会被调整;线段不相连时将创建新的部分;两个线段在终端相连时被融合。

    wps44_thumb

    多面:监测内部、外部结构,然后更改整个多边形结构。一般过程:移除所有悬挂的系列片段;找出最大的环,并添加到要输出的多边形中,同时在当前的多边形中删除这个环;重复这个步骤(如果这个过程在移除较多的片段时结束,则应该考虑使用IPolygon接口的方法来实现Simplify相似的操纵);将异或逻辑运算参数设置为true。Simplify结束后,除了必须的情况外,不会存在重叠、自相交的情况;并且任何点不是在外部边界上就是在多边形内。

    wps45_thumb

    方法:SymmetricDifference合并且去除相交部分

    两个几何图形合并后再减去相交的部分,是对两个图形的异或逻辑操作。

    wps46_thumb

    方法:Union合并

    图形合并。

    wps47_thumb

     

    三、esriSpatialRelEnum枚举类型

    在使用ISpatialFilter接口进行空间关系查询时,使用esriSpatialRelEnum枚举类型来判断空间关系。

    ISpatialFilter ipSpatialFilter = new SpatialFilterClass()
    {
        GeometryField = ipFeatureClass.ShapeFieldName,
        Geometry = ipGeometry,
        SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects,
        WhereClause = sWhere
    };
    IFeatureCursor ipCursor = ipFeatureClass.Search(ipSpatialFilter, false);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(ipSpatialFilter);
    //ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(ipSpatialFilter);

    esriSpatialRelContains包含

    esriSpatialRelWithin包含于

    应范围:所有要素类之间均具有该关系

    描述:可细分为一个要素完全包含另一个要素和一个要素被另一个要素完全包含。它们是相对的关系,若果说要素A完全位于要素B内,则要素B完全包含要素A。当两个图形完全相等时,即相互包含。

    wps48_thumbwps49_thumbwps50_thumb

    esriSpatialRelTouches边界相接

    应用范围:除点与点之间的关系外,其它的要素之间都可以具有该关系。

    描述:两个几何图形只在它们的交界处相交,而两个几何图形内部的交集为空。如点和线的相接,那么点必须在线的端点处才会发生相接关系。

    wps51_thumbwps52_thumb

    esriSpatialRelCrosses穿越

    应用范围:线与面,线与线。

    描述:如果二个要素的相交部分不为空,并且相交部分形状的维数比两个要素中最高维数低1(即线面交叉是线,线线交叉是点)则称这二个要素具有交叉关系。

    wps53_thumb

    esriSpatialRelOverlaps空间覆盖

    应用范围:线与线,面与面,多点与多点。

    描述:两个几何图形的交集与这两个几何图形的维数相同,但其交集结果与这两个几何图形不同。

    wps54_thumb

    esriSpatialRelIntersects广义相交

    应用范围:所有要素类之间均具有该关系。

    描述:相交关系是一个广义的关系,包括上述4种关系(包含、包含于、边界相接、穿越、空间覆盖)。

    esriSpatialRelEnvelopeIntersects包络线相交

    应用范围:所有要素类之间均具有该关系。

    描述:查询几何和目标几何的Envelope(包络线--最小外接矩形)相交(本身不一定相交)

    esriSpatialRelIndexIntersects索引相交

    描述:查询几何图形的空间范围和目标几何图形的索引范围相交。

    API解释:Returns a feature if the envelope of the query geometry intersects the index entry for the target geometry.  Because it uses the underlying index grid, rather than the evelope of the feature, it is faster and is commonly used for return features for display purposes.

    esriSpatialRelUndefined未定义

    描述:相当于不考虑空间关系。

    esriSpatialRelRelation空间关联

    描述:Query geometry IBE(Interior-Boundary-Exterior) relationship with target geometry。通过SpatialRelDescription属性设置自定义空间关系。俗称九关系查询。

    ISpatialFilter.SpatialRel设置为esriSpatialRelRelation,并且设置SpatialRelDescription为某个字符串。字符串中有9个字符,每个字符可以是F,T,或者*,T表示True,F表示False,*表示无关。这九个关系取交集,最终的结果为满足条件的结果集。例如:TT*FFT***表达了包含。

    这9个关系是分别从几何体的内部,边界,外部来区分的,所有的几何体之间的拓扑关系不外乎这9个关系的组合。

    ISpatialFilter spatialFilter = new SpatialFilterClass()
    {
        Geometry = geometry,
        GeometryField = originFClass.ShapeFieldName,
        SpatialRel = esriSpatialRelEnum.esriSpatialRelRelation,
        SpatialRelDescription = "FF*FF****";
    };
     

    Query Geometry

    Target Geometry

    1

    interior

    interior

    2

    interior

    boundary

    3

    interior

    exterior

    4

    boundary

    interior

    5

    boundary

    boundary

    6

    boundary

    exterior

    7

    exterior

    interior

    8

    exterior

    boundary

    9

    exterior

    exterior

  • 相关阅读:
    查看Linux系统版本信息
    ensemble github强大的下载安装功能--ensembl-git-tools
    Linux系统非root用户安装perl模块
    Linux下安装与使用本地的perl模块
    MATLAB 2014a (8.3) Compiler Runtime (MCR)
    GEO--工具 ScanGEO
    vcf2maf
    RNAseq 流程
    pathway一些网站
    abbitMQ整合Spring Booot【点对点模式】
  • 原文地址:https://www.cnblogs.com/publiter/p/14430334.html
Copyright © 2011-2022 走看看