分类:1 图形查询属性(点击查询、多边形查询) 2 属性查询图形(单一属性查询,多种属性复合查询)
1.1点击查询
IFeatureLayer pfeaturelayer = axMapControl1.get_Layer(0) as IFeatureLayer; // 主要是确定要查找的图层
IPoint point = new PointClass(); // 点选查询,获取点信息
point.PutCoords(e.mapX, e.mapY);
ISpatialFilter spatialfilter = new SpatialFilterClass(); // ISpatialFilter两个关键参数分别为Geometry和SpatialRel
spatialfilter.Geometry = point;
spatialfilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects; // 点与图层的关系
IFeatureCursor FeatureCursor = pfeaturelayer.FeatureClass.Search(spatialfilter, false);
IFeature feature;
feature = FeatureCursor.NextFeature();
1.2 多边形查询
多边形查询分很多种包括矩形,圆形,多边形等等,其实主要方法还是一样的,与点击查询不同的是ISpatialFilter.Geometry不再是point
IFeatureLayer pfeaturelayer=axMapControl1.get_Layer(0) as IFeatureLayer;
IGeometry poylogn = axMapControl1.TrackRectangle() as IGeometry;
ISpatialFilter spatialfileter = new SpatialFilterClass();
spatialfileter.Geometry = poylogn;
spatialfileter.SpatialRel = esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects;
IFeatureCursor cursor = pfeaturelayer.FeatureClass.Search(spatialfileter, false);
IFeature pfeature = cursor.NextFeature();
2.1属性查询图形
主要用的接口为IQueryFilter接口,查询是属性为Double和String 的时候还是有区别的,比如:
属性为string的时候 地块编号=’01A’
属性为double的时候地块面积=100;
string test = textBox6.Text;
IFeatureLayer featurelayer = axMapControl1.get_Layer(0) as IFeatureLayer;
IQueryFilter filter = new QueryFilterClass();
filter.WhereClause = "地块编号='" + test + "'";
IFeatureCursor featurecursor;
featurecursor = featurelayer.FeatureClass.Search(filter, false);
IFeature feature;
当然属性查询图形还有一个必要的功能是,能够定位到图形。