首页 > 其他分享 >arcgis二次开发

arcgis二次开发

时间:2024-12-13 18:34:19浏览次数:9  
标签:命令 地图 视图 arcgis ArcMap 二次开发 图层 方法

Arcgis二次开发代码示例

一.数据:一些点的测试:选择的测试数据集 字段:name编号

image-20241212193754705

二.一些函数

  1. 注册

    static void RegisterFunction(Type registerType) //注册组件类别的方法
    static void UnregisterFunction(Type registerType) //取消注册
    
  2. region ArcGIS 组件类别注册器生成的代码

    private static void ArcGISCategoryRegistration(Type registerType) //同上注册
    private static void ArcGISCategoryUnregistration(Type registerType) //组件注销
    
  3. 构造函数 ZoomToLayer()

    base.m_category:定义该命令的类别,通常用于组织命令。例如,"Developer Samples" 表示它是开发人员样例的一部分。

    base.m_caption:定义命令的标题,在 ArcMap 界面上显示。

    base.m_message:命令的描述消息,通常在工具提示或状态栏显示。

    base.m_toolTip:命令的工具提示文本,在鼠标悬停时显示。

    base.m_name:命令的唯一标识符,通常是一个非本地化的字符串,用于在代码中唯一标识该命令。

    这些属性的值基本上用于命令的本地化和描述,便于用户识别和使用。

  4. Overriden Class Methods 一些方法的重写

    1. OnCreate的重写

      • summary:描述了该方法的作用——在命令创建时调用。这是 ArcGIS 命令生命周期中的一个方法,通常用于初始化命令的属性。

      • paramhook 参数是 ArcGIS 应用程序的实例,它通常是 IApplication 类型,代表 ArcMap 或 ArcCatalog 应用程序。

      • OnCreate 方法:该方法在命令创建时被调用,通常用于初始化命令的状态。在这个例子中,方法的作用是:

        • hook 转换为 IApplication 类型,以便访问 ArcMap 或 ArcCatalog 的功能。
        • 检查当前应用程序是否是 ArcMap。如果是,则启用命令;如果不是,则禁用命令。

      这个方法是 ArcGIS 自定义命令的重要一环,确保命令的启用与 ArcMap 的应用环境兼容。如果命令在其他类型的应用程序(如 ArcCatalog)中无效,它会被禁用。

    2. OnClick 方法:该方法是自定义命令中用户点击按钮时执行的逻辑。在这个例子中:

      • 它获取了当前 ArcMap 文档的 IMxDocument 实例,可能用于后续的操作(如地图视图操作)。
      • 它创建并显示了一个自定义窗体 NeuForm,该窗体可能用于显示信息或与用户交互。
      • 被注释掉的部分 ZoomToLayerInTOC(mxDocument) 可能是用于缩放到 TOC 中选中的图层,但此功能目前被禁用了。
  5. Zoom to Active Layer in TOC 缩放到 TOC 中的活动图层

    ZoomToLayerInTO()
    
    • layer.AreaOfInterest:获取选中图层的兴趣区域(通常是该图层的边界框)。AreaOfInterest 是一个表示图层可见区域的矩形,通常用于地图缩放。

    • activeView.Extent:将活动视图的显示范围设置为图层的兴趣区域,实现 缩放到图层 的功能。

    • activeView.Refresh():刷新活动视图,使得地图显示更新后的区域。

  6. Get MxDocument from ArcMap 获取来自 ArcMap 的 MxDocument

    IMxDocument 是 ArcMap 中的一个接口,表示当前的地图文档,包含了地图视图、图层和其他文档相关的信息。

    这段代码实现了一个名为 GetMxDocument 的方法,用于从 ArcMap 中获取 IMxDocument 接口。IMxDocument 是 ArcMap 中的一个核心接口,表示当前地图文档,包含了地图视图、图层和其他相关的地图数据

    获取之后 return的是mxDocument

三.按钮的点击事件与交互

  1. 成员变量

    m_application:存储 IApplication 类型的变量,表示 ArcMap 应用程序实例。

    m_pDoc:存储 IMxDocument 类型的变量,表示当前 ArcMap 文档(地图文档)。

    m_pAV:存储 IActiveView 类型的变量,表示当前地图的活动视图。

    m_pFeature:存储 IFeature 类型的变量,表示选中的地理要素。

    m_ActiveViewEventsViewRefreshed:用于事件处理,可能与视图刷新的事件相关。

  2. 初始化窗口的方法(默认)不用更改

  3. 选择图层特征 SelectMapFeaturesByAttributeQuery方法

    public IFeature SelectMapFeaturesByAttributeQuery(ESRI.ArcGIS.Carto.IActiveView activeView, ESRI.ArcGIS.Carto.IFeatureLayer featureLayer, System.String whereClause)
    
    • SelectMapFeaturesByAttributeQuery 方法

      :通过属性查询whereClause选择指定图层的地理要素。

      • featureLayer:传入的图层,用于选择其中的要素。
      • whereClause:查询条件,用于选择特定的要素。
      • IActiveView:更新地图视图以显示选择的要素。
      • 通过 IFeatureSelection 接口执行选择操作,使用 SelectFeatures 方法将符合条件的要素添加到选择集中,并刷新视图。
  4. 按钮的点击事件,绑定方法即可

四.修改地方 对查询语句进行修改即可

五.对高亮方法的重写

重点在于不要与Arcgis中选择的蓝色高亮重合

标签:命令,地图,视图,arcgis,ArcMap,二次开发,图层,方法
From: https://www.cnblogs.com/zizizi/p/18605560

相关文章

  • SOLIDWORKS 二次开发:提升设计效率与创新能力的利器
    在当今竞争激烈的制造业环境中,产品设计的效率和质量对于企业的成功至关重要。SOLIDWORKS作为一款广泛应用的三维机械设计软件,其强大的功能为工程师们提供了丰富的设计工具。然而,随着设计需求的日益复杂和多样化,单纯依靠SOLIDWORKS软件本身的标准功能有时难以满足特定的设计任务......
  • SOLIDWORKS二次开发参数化
    如今企业开发新产品时,零件模型的建立及出图的速度是决定整个产品开发效率的关键。在企业的产品的开发到一定时期,很多的设计经过实际验证分析后,一些产品的大致持征已经确定,这时企业就希望能将该类产品系列化、参数化及标准化。于是,将模型设计中定量化的参数变量化就成了一个有效的......
  • 微软中文输入法带来的一点小坑,导致arcgispro输入中文异常
    有同事反映,在Pro中新建要素类时,没办法设定名称为“新建”,会自己变成不完整的拼音。查看了一下,确有此事。在相同的界面里还有其他输入框,却没有这种情况。研究了一下,发现是输入法引发的连锁问题。有问题的输入框,是加了数据验证的。因为pro中创建要素类时,不允许名称中带特殊字符,......
  • Arcgis Pro 案例分享
    旅游景点与火车站案那现在我们就开始一些Pro软件的实操吧。Pro中其实有一些直接给出的案例,这里我们先来分析第一个。新加坡的一家旅行社希望制作一款宣传册,用于向游客介绍距离市中心热门目的地最近的火车站。该宣传册将与带有文本信息的地图相结合,并在城市的自助设备中出售......
  • jumpserver 工单系统 二次开发工单管理并开源代码
    介绍JumpServer是广受欢迎的开源堡垒机,是符合4A规范的专业运维安全审计系统。JumpServer帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。 产品特色开源:零门槛,线上快速获取和安装;分布式:轻松支持大规模并发访问;无插......
  • e启学在线教育系统能否进行二次开发?探秘
    E启学在线教育系统支持二次开发,可以根据客户具体需求实现定制化改造和扩展,以更好地满足不同机构和个人在在线教育方面的特殊需要。这种灵活性为许多寻求高度定制和独特功能的企业和个人提供了有力的支持。图源www.tuzhi.ltd无论是增加新的功能、更改现有界面还是适应特定的教学流......
  • [RuoYi二次开发]数据分页
    目录一、前言 二、RuoYi中的数据分页案例三、源码分析  1、前端代码2、后端代码四、总结 一、前言数据分页是指将一批数据按照指定的大小分割成多个页面或数据块,每个页面或数据块包含一部分数据,用于分批显示和处理数据。数据分页通常用于网站、应用程序等需要处......
  • 超全致远OA整套视频学习教程及二次开发技转攻略(火)
    引言    致远OA作为国内领先的办公自动化系统,凭借其强大的功能和灵活的二次开发能力,成为众多企业数字化转型的首选平台。为了帮助广大开发者和企业用户更好地掌握致远OA的实施与二次开发技术,我精心准备了超全致远OA视频学习教程及二次开发技转攻略,全面覆盖应用实施、功......
  • AutoCAD2021二次开发——入门
    前言:本文是基于AutoCAD2021SDK 即ObjectARX_for_AutoCAD_2021_Win_64bit_dlm,实现AutoCAD二次开发,主要讲解如何基于SDK实现自己初步简单的命令开发。开发环境搭建下载安装如下软件以及SDKAutoCAD2021、VisiualStudio2019、ObjectARXWizard2021、ObjectARX_for_Aut......
  • 电动汽车制造执行系统(MES)软件:GE Digital EV二次开发_(10).系统集成:MES与其他制造系统
    系统集成:MES与其他制造系统的接口开发在电动汽车制造过程中,制造执行系统(MES)作为生产管理的核心系统,需要与多种其他制造系统进行高效的数据交换和业务协同。这些系统包括但不限于生产计划系统(APS)、企业资源规划系统(ERP)、供应链管理系统(SCM)、质量管理系统(QMS)以及自动化设备(......