ArcGIS Engine 10 开发手册(6-2)使用ArcGIS Engine进行关系操作
发布时间: 2017-12-22
所属分类: ArcGIS Engine 10 开发手册
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 开发手册
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子
GetFeatureClass 这个是怎么来的?
http://resources.arcfmsolution.com/10.2%20and%2010.2.1/ResponderSDK/topic1031.html