arcgis二次开发

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中选择的蓝色高亮重合

posted @ 2024-12-13 18:29  嘻嘻不xixi  阅读(8)  评论(0编辑  收藏  举报