1. 程式人生 > >ArcEngine空間分析

ArcEngine空間分析

因此 nts isp interop AC () object ash feature

  這裏提到的空間分析(SpatialAnalysis)特指ArcEngine中使用空間篩選器(SpatialFilter)來實現的空間篩選分析,可以使用其自帶的空間交互類型(如:相交、包含、相切等)進行分析,也可以使用九交模型來分析,不管使用哪種方式,這種分析都是精確的無差別的,也就是說不能設置容差的,這種分析在實際使用中是有一定的局限性的,後續的文章我們可能會講到。同時,空間篩選器是屬性篩選器的擴展和延伸,因此空間分析還具備了屬性篩選的功能,這個特性很有用,可以縮小篩選範圍,輔助空間分析定位。

涉及接口

IFeatureClass、ISpatialFilter、IQueryFilter、IFeatureCursor

代碼實現

 1 IGraphicsContainer container = axMapControl1.ActiveView as IGraphicsContainer;
 2 IGeometry geometry = axMapControl1.TrackPolygon();
 3 
 4 IElement element = new PolygonElementClass();
 5 element.Geometry = geometry;
 6 container.AddElement(element, 0);
 7 axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, null
, null); 8 Application.DoEvents(); 9 10 11 ILayer layer = this.axMapControl1.get_Layer(0); 12 IFeatureLayer featureLayer = layer as IFeatureLayer; 13 IFeatureClass featureClass = featureLayer.FeatureClass; 14 15 ISpatialFilter filter = new SpatialFilterClass(); 16 filter.Geometry = geometry; 17 filter.GeometryField = featureClass.ShapeFieldName;
18 filter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; 19 20 IFeatureCursor cursor = featureClass.Search(filter, false); 21 IFeature feature = cursor.NextFeature(); 22 while (feature != null) 23 { 24 axMapControl1.FlashShape(feature.Shape); 25 26 IElement featureElement = new PolygonElementClass(); 27 featureElement.Geometry = feature.Shape; 28 container.AddElement(featureElement, 99); 29 30 feature = cursor.NextFeature(); 31 } 32 33 axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, null, null); 34 System.Runtime.InteropServices.Marshal.ReleaseComObject(cursor);

ArcEngine空間分析