在ArcEngine下实现图层属性过滤的两种方法

0
分享 2012-08-18
有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。

按下面介绍的方法可轻松实现图层属性过滤显示:



1、当图层已经加载时



privatevoid ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, stringsFilter)

{

ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sFlyr;



pDef.DefinitionExpression = sFilter;



sMapCtr.ActiveView.Refresh();

}



2、当图层尚未加载时

privateIFeatureClassGetFeatureClass(IWorkspace pWS, stringsTabName, string sAttrFilter)

{

try

{

if(pWS == null || sTabName == null) returnnull;



IFeatureWorkspace pFWS = pWS asIFeatureWorkspace;

IFeatureClass pFC = null;



pFC =pFWS.OpenFeatureClass(sTabName);



IQueryDefpQueryDef = pFWS.CreateQueryDef();

pQueryDef.Tables = sTabName;

pQueryDef.WhereClause =sAttrFilter;



IQueryName2pQueryName = newFeatureQueryNameClass();

pQueryName.PrimaryKey =pFC.OIDFieldName;

pQueryName.QueryDef =pQueryDef;



IDatasetpDS = (IDataset)pFWS;



IWorkspaceName pWSName = (IWorkspaceName)pDS.FullName;

IDatasetName pDSName = (IDatasetName)pQueryName;



pDSName.WorkspaceName =pWSName;

INamepName = (IName)pQueryName;

pFC = pName.Open() asIFeatureClass;



returnpFC;

}

catch

{

returnnull;

}

}

由属性过滤后的FeatureClass创建图层、加载到地图的过程就比较简单了
文章来源:http://blog.csdn.net/sydbc/article/details/17216429

0 个评论

要回复文章请先登录注册