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

简介:

转自chanyinhelv原文 在ArcEngine下实现图层属性过滤的两种方法

 

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

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

 

 1、当图层已经加载时

1
2
3
4
5
6
7
8
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;
    }
}
复制代码

 2、当图层尚未加载时

           由属性过滤后的FeatureClass创建图层、加载到地图的过程就比较简单了。

 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6262801.html ,如需转载请自行联系原作者

相关文章
关于Dev 控件里 gridcontrol 的gridview 显示序号和checkbox
关于Dev 控件里 gridcontrol 的gridview 显示序号和checkbox
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发35:缓冲区分析
基于C#的ArcEngine二次开发35:缓冲区分析
基于C#的ArcEngine二次开发35:缓冲区分析
|
NoSQL C# 数据库
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理(下)
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理
|
4天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
15天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1307 5
|
1天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
14天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1339 87