麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS Engine 10 开发手册(4-20)空间查询

什么是空间查询

空间查询可以说是两步过滤,属性过滤和空间过滤,既然有空间过滤, 空间查询体 现 在 ISpatialFilter.Geometry 和 ISpatialFilter.SpatialRel 上,那么这个接口的 Geometry 和 spatialrel 属 性是必须的。众所周知 ArcMap 的空间查询是非常丰富的,而 ArcGIS Engine 可以毫无保留的实现 ArcMap 所能提供的全部空间查询,对于 ArcGIS Engine 来说这些空间查询只是 ISpatialFilter 的参数,而这些参 数都是常量,如下表所示:

查询矩形范围内的点要素(示例)

public ESRI.ArcGIS.Geodatabase.IFeatureCursor GetAllFeaturesFromPointSearchInGeoFeatureLayer (ESRI.ArcGIS.Geometry.IEnvelope pEnvelope, IPoint pPoint, IFeatureClass pFeatureClass)
{
  if (pPoint == null || pFeatureClass == null)
  {
    return null;
  }

  //ITopologicalOperator pTopo = pPoint as ITopologicalOperator;

  //IGeometry pGeo = pTopo.Buffer(pSearchTolerance);

  System.String pShapeFieldName = pFeatureClass.ShapeFieldName;
  ESRI.ArcGIS.Geodatabase.ISpatialFilter pSpatialFilter = new ESRI.ArcGIS.Geodatabase.SpatialFilterClass ();
  pSpatialFilter.Geometry = pEnvelope;

  pSpatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects;

  pSpatialFilter.GeometryField = pShapeFieldName;

  ESRI.ArcGIS.Geodatabase.IFeatureCursor pFeatureCursor = pFeatureClass.Search (pSpatialFilter, false);

  return pFeatureCursor;
}

IMap map = this.axMapControl1.Map;
ISelection selection = map.FeatureSelection;

IEnumFeatureSetup pEnumFeatureSetup = (IEnumFeatureSetup) selection;
pEnumFeatureSetup.AllFields = true;

IEnumFeature pEnumFeature = (IEnumFeature) selection;
IFeature feature = pEnumFeature.Next ();

while (feature != null)
{
  string a = Convert.ToString (feature.get_Value (feature.Fields.FindField ("dfd")));
  feature = pEnumFeature.Next ();
}

ArcGIS Engine 10 开发手册全集

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

相关阅读

麻辣GIS-Sailor

作者:

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

声明

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

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

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

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