您的位置:首页 > 编程语言 > C#

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

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

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";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐