麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS Engine 10 开发手册(6-2)使用ArcGIS Engine进行关系操作

GIS 中的空间对象除了拥有属性数据之外,他们之间还拥有某种关系,比如说一个点在一个面的内部, 两个对象相交,相等,包含,相接等关系。关系运算符(Relational Operators)比较两个几何体,并返回 一个 boolean 来说明所要的关系是否存在,这些关系都是通过 IRelationalOperator 接口实现的。 IRelationalOperatior 接口的方法如下:

IRelationalOperator 接口被面,线等几何要素实现,IRelationalOperator 接口中的方法的参数也非 常类似,参数往往是一个几何对象,以 IRelationalOperator.Contains 方法为例说明:

示例利用IRelationalOperator实现空间包含统计

IFeatureClass pPolygonFClass = GetFeatureClass (@"D:\空间查询\分析用的空间数据","三级成矿区带");

IFeatureClass pPointFClass = GetFeatureClass (@"D:\空间查询\分析用的空间 数据","探矿权点");

ITable pTable = CreateTable (@"D:\空间查询\分析用的空间数据", "Res3");

IFeatureCursor pPolyCursor = pPolygonFClass.Search (null, false);
IFeature pPolyFeature = pPolyCursor.NextFeature ();

while (pPolyFeature != null)

{

  IGeometry pPolGeo = pPolyFeature.Shape;
  IRelationalOperator pRel = pPolGeo as IRelationalOperator;
  int Count = 0;

  IFeatureCursor pPointCur = pPointFClass.Search (null, false);
  IFeature pPointFeature = pPointCur.NextFeature ();

  while (pPointFeature != null)

  {

    IGeometry pPointGeo = pPointFeature.Shape;

    if (pRel.Contains (pPointGeo))

    {

      Count++;

    }

    pPointFeature = pPointCur.NextFeature ();

  }

  if (Count != 0)

  {

    IRow pRow = pTable.CreateRow ();
    pRow.set_Value (1, pPolyFeature.get_Value (0));
    pRow.set_Value (2, Count);

    pRow.Store ();

  }

  pPolyFeature = pPolyCursor.NextFeature ();

}

结果和前面的一样

ArcGIS Engine 10 开发手册全集

ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

已有 2 条评论

  1. 麻辣GIS-qq
    1#
    qq  · 2020-11-05 21:25

    GetFeatureClass 这个是怎么来的?

      1. 麻辣GIS-Sailor
        Sailor  · 2020-11-13 01:07

        http://resources.arcfmsolution.com/10.2%20and%2010.2.1/ResponderSDK/topic1031.html

留言板(小编看到第一时间回复)