C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素
阿新 • • 發佈:2017-08-22
layer style where sky 要求 我們 ase get filter
轉自原文 C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素
有時候,我們要對圖層上的地物進行有選擇性的顯示,以此來滿足實際的功能要求。
按下面介紹的方法可輕松實現圖層屬性過濾顯示:
1、當圖層已經加載時
private void ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, string sFilter)
{
ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sFlyr;
pDef.DefinitionExpression = sFilter;
sMapCtr.ActiveView.Refresh();
}
2、當圖層尚未加載時
private IFeatureClass GetFeatureClass(IWorkspace pWS, string sTabName, string sAttrFilter)
{
try
{
if (pWS == null || sTabName == null) return null;
IFeatureWorkspace pFWS = pWS as IFeatureWorkspace;
IFeatureClass pFC = null;
pFC = pFWS.OpenFeatureClass(sTabName);
IQueryDef pQueryDef = pFWS.CreateQueryDef();
pQueryDef.Tables = sTabName;
pQueryDef.WhereClause = sAttrFilter;
IQueryName2 pQueryName = new FeatureQueryNameClass();
pQueryName.PrimaryKey = pFC.OIDFieldName;
pQueryName.QueryDef = pQueryDef;
IDataset pDS = (IDataset)pFWS;
IWorkspaceName pWSName = (IWorkspaceName)pDS.FullName;
IDatasetName pDSName = (IDatasetName)pQueryName;
pDSName.WorkspaceName = pWSName;
IName pName = (IName)pQueryName;
pFC = pName.Open() as IFeatureClass;
return pFC;
}
catch
{
return null;
}
}
C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素