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 开发手册

如您有疑问,可在文末留言,或到QQ群提问。

本站QQ群:291616564 麻辣GIS

微信公众号:malagis,扫描右边二维码直接关注。

微信捐助麻辣GIS 支付宝捐助麻辣GIS

如果本文对您有所帮助,欢迎对我们团队进行打赏捐助,让我们在传播3S的路上可以走得更远。


作者:,GIS爱好者。
分享本文,请您带上本文链接

发表评论