ArcGIS Engine 10 开发手册(4-20)空间查询
发布时间: 2017-10-25
所属分类: ArcGIS Engine 10 开发手册
什么是空间查询
空间查询可以说是两步过滤,属性过滤和空间过滤,既然有空间过滤, 空间查询体 现 在 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 开发手册
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子