1. 程式人生 > >C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素

C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素

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開發中,對一個圖層進行過濾,只顯示符合條件的要素