查询功能

来源:互联网 发布:数据库系统概论课件 编辑:程序博客网 时间:2024/05/22 05:11

 分类: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;

                    当然属性查询图形还有一个必要的功能是,能够定位到图形。