您的位置:首页 > 其它

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

2013-12-09 09:03 260 查看
有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。

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

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创建图层、加载到地图的过程就比较简单了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: