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

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

 

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

 

 

 

       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创建图层、加载到地图的过程就比较简单了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值