ArcgisEngine+C#开发中,对一个图层进行过滤,并只显示符合条件的要素

在二次开发中,经常会对一个图层进行查询,查询出符合条件的要素,我们通常会想到:

 IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "XZQDM =510113";

 IFeatureCursor featureCursor = sourceFeatureClass.Search(queryFilter, true);
                IFeature feature= featureCursor.NextFeature();
                while (feature!= null)       

                 {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(feature);
                    pFeature = featureCursor.NextFeature();
                }

 System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor);

但是这种方法虽然可以找到我们希望得到的效果,但是不符合条件的要素依然显示。

 

 

其实有一种高效的方法,可以实现从一个图层查询,并只显示符合条件的要素:

其中featureLayer是进行查询的图层,"XZQDM =510113"是查询条件

 IFeatureLayerDefinition   featureLayerDefinition = featureLayer as IFeatureLayerDefinition;
 featureLayerDefinition.DefinitionExpression ="XZQDM =510113";

在使用地图模块动态开发,即地图图层的要素类动态从sde数据库中获取要素类时(大量空间数据存储在sde的要素类中),

此方法十分有效,前提是模板要素类的表结构和sde中的获取要素类表结构相同。

其中featureClass是从sde空间数据库中获取的要素类,

featureLayer.FeatureClass=featureClass;

IFeatureLayerDefinition   featureLayerDefinition = featureLayer as IFeatureLayerDefinition;
 featureLayerDefinition.DefinitionExpression ="XZQDM =510113";

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值