在ArcMap中通过Python编写自定义工具(Python Toolbox)实现点转线工具

文章目录

    • 一、需求
    • 二、实现过程
      • 2.1、创建Python工具箱(.pyt)
      • 2.2、使用catalog测试代码
      • 2.3、在ArcMap中使用工具
    • 三、测试

一、需求

通过插件的形式将点转线功能嵌入ArcMap界面,如何从零开始创建一个插件,包括按钮的添加、工具的实现以及用户界面的设计等。此外,如何处理输入参数,比如选择点要素、设置分组字段和排序字段,以及保存输出结果。

二、实现过程

在ArcMap中开发插件实现点转线功能,可以通过Python编写自定义工具(Python Toolbox)或使用Add-In插件。以下是一个完整的开发实例,基于 Python Toolbox 实现点转线工具,包含参数设置、工具逻辑和界面交互。

2.1、创建Python工具箱(.pyt)

创建一个名为 PointToLineTool.pyt 的文件,代码如下:

import arcpy
import pythonaddinsclass Toolbox(object):def __init__(self):self.label = "PointToLineTool"self.alias = "CustomTools"self.tools = [PointsToLineTool]class PointsToLineTool(object):def __init__(self):self.label = "PointToLineTool"self.description = "PointToLine group_field"self.canRunInBackground = Falsedef getParameterInfo(self):param_input = arcpy.Parameter(name="input_points",displayName="pls input pointsfeature",datatype="DEFeatureClass",parameterType="Required",direction="Input")param_input.filter.list = ["Point"]param_group_field = arcpy.Parameter(name="group_field",displayName="group_field",datatype="Field",parameterType="Required",direction="Input")param_group_field.parameterDependencies = [param_input.name]param_sort_field = arcpy.Parameter(name="sort_field",displayName="sort field",datatype="Field",parameterType="Optional",direction="Input")param_sort_field.parameterDependencies = [param_input.name]param_output = arcpy.Parameter(name="output_lines",displayName="output line_feature folder",datatype="DEFeatureClass",parameterType="Required",direction="Output")return [param_input, param_group_field, param_sort_field, param_output]#def isLicensed(self):#return arcpy.CheckProduct("ArcInfo") == "Available"def updateParameters(self, parameters):if parameters[1].value:parameters[2].enabled = Trueelse:parameters[2].enabled = Falsereturndef updateMessages(self, parameters):if parameters[1].value:field = parameters[1].valueAsTextdesc = arcpy.Describe(parameters[0].valueAsText)fields = desc.fieldsfor f in fields:if f.name == field:if f.type not in ["String", "Integer", "SmallInteger"]:parameters[1].setErrorMessage("group_field format error")returndef execute(self, parameters, messages):input_points = parameters[0].valueAsTextgroup_field = parameters[1].valueAsTextsort_field = parameters[2].valueAsText if parameters[2].value else Noneoutput_lines = parameters[3].valueAsTexttry:arcpy.PointsToLine_management(input_points,output_lines,group_field,sort_field)arcpy.AddMessage("successfully convert: {}".format(output_lines))except arcpy.ExecuteError as e:arcpy.AddError(arcpy.GetMessages(2))except Exception as e:arcpy.AddError("error: {}".format(str(e)))

2.2、使用catalog测试代码

pyt文件,鼠标右键选择check syntax
在这里插入图片描述

在这里插入图片描述

如果出现No Syntax Errors,说明pyt代码没问题,可以添加到arctools工具箱了。
在这里插入图片描述

2.3、在ArcMap中使用工具

  • 加载工具箱

打开ArcMap,右键点击目录窗口中的 工具箱 -> 添加工具箱 -> 选择PointToLineTool.pyt。

在这里插入图片描述
在这里插入图片描述

三、测试

工具将出现在工具箱列表中,双击运行。

在这里插入图片描述

界面操作:
在这里插入图片描述

输入点要素(必须是点图层)。

选择分组字段(例如每个线对应一个ID字段)。

可选排序字段(如时间或序号字段)。

指定输出线要素路径(如.shp或地理数据库中的要素类)。

在这里插入图片描述

在这里插入图片描述


坚持某种意义上也是一种能力…


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30097.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cursor 使用经验,一个需求开发全流程

软件开发中 Cursor 的使用经验成为关注焦点,尤其是处理大型数据集的需求。用户提到“Cursor 使用经验,一个需求开发全流程”,但“Cursor”可能指数据库游标,涉及逐行处理数据。本文将详细探讨开发一个需求的完整流程,包…

selenium库

一、什么是selenium库? selenim是一个用于Web应用程序自动化测试工具,selenium测试直接运行在浏览器中 像真正的用户在操作一样,驱动浏览器执行特定的动作,如点击,下拉等操作 二、selenium在爬虫中的应用 获取动态…

[密码学实战]Java实现国密TLSv1.3单向认证

一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…

## DeepSeek写水果记忆配对手机小游戏

DeepSeek写水果记忆配对手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端水果记忆配对小游戏H5文件: 要求 可以重新开始游戏 可以暂停游戏 卡片里的水果…

【愚公系列】《Python网络爬虫从入门到精通》045-Charles的SSL证书的安装

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

夸父工具箱(安卓版) 手机超强工具箱

如今,人们的互联网活动日益频繁,导致手机内存即便频繁清理,也会莫名其妙地迅速填满,许多无用的垃圾信息悄然占据空间。那么,如何有效应对这一难题呢?答案就是今天新推出的这款工具软件,它能从根…

探秘Transformer系列之(11)--- 掩码

探秘Transformer系列之(11)— 掩码 文章目录 探秘Transformer系列之(11)--- 掩码0x00 概述0x01 需求1.1 避免偏差实际情况问题所在解决方案 1.2 防止偷看实际情况问题所在解决方案 0x02 Padding Mask2.1 逻辑掩码矩阵计算注意力步…

使用MPU6050产生中断,唤醒休眠中的STM32

本篇文章源码:STM32L431_RT_Thread_PM_mpu6050_wakeup: 使用MPU6050产生中断,唤醒休眠中的STM32L4 书接上回【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗-CSDN博客 上一篇文章使用PA0外接一个按键实…

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器,可以让用户愉快的从繁琐的工作中解放出来,其本质是对键盘和菜单的操作序列的录制,并不会识别文件的内容,属于无差别无脑执行。 特别是对一些有规律的重复按键动作,…

ubuntu22.04安装P104-100一些经验(非教程)

一、版本: 系统:ubuntu-22.04.5-desktop-amd64.iso Nvidia 驱动:NVIDIA-Linux-x86_64-570.124.04.run。官网下载即可 二、经验 1、通用教程⭐ 直接关键词搜“ubuntu p104”会有一些教程,比如禁用nouveau等 安装参考&#xff1a…

后智能体时代的LLM和Agent

文章目录 1. 关于AI重塑的哲学体系2. 关于AI大模型体系的认知3. 关于AI大模型体系的畅想4. 关于人和AI大模型体系的共处5. 写在最后 随着OpenAI、Deepseek、Manus等等智能体的爆火,人们茶前饭后、插科打诨的话题都离不开这些智能体,现状也正如《人民日报…

Denoising Diffusion Probabilistic Models

这篇文章就是所谓的DDPM 前向扩散过程之和前一步有关,是一阶马尔可夫链,是图像和标准高斯噪声I的加权,认为方差全部来自I,并且多步可以通过连乘合并为一步: 反向的过程也是类似的形式: 并且由贝叶斯公式&am…

【DeepSeek】5分钟快速实现本地化部署教程

一、快捷部署 (1)下载ds大模型安装助手,下载后直接点击快速安装即可。 https://file-cdn-deepseek.fanqiesoft.cn/deepseek/deepseek_28348_st.exe (2)打开软件,点击立即激活 (3)选…

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了,只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址:https://git…

GCC RISCV 后端 -- GCC Passes 注释

在前面文章提到,当GCC 前端完成对C源代码解析完成后,就会使用 处理过程(Passes)机制,通过一系列的处理过程,将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示: 此…

OSPF的各种LSA类型,多区域及特殊区域

一、OSPF的LSA类型 OSPF(开放最短路径优先)协议使用多种LSA(链路状态通告)类型来交换网络拓扑信息。以下是主要LSA类型的详细分类及其作用: 1. Type 1 LSA(路由器LSA) 生成者:每个…

UV,纹理,材质,对象

先上代码: Shader "Unlit/MyFirstShder" {Properties{_MainTex ("Texture", 2D) "white" {}}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex …

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发,无espidf框架,因此无法直接烧录程序,配置开发板参数如下: 在platformio.ini文件中,配置使用esp32-s3-devkitc-1开发…

JavaSE-5 类和对象

一、什么是面向对象,什么是面向过程 面向过程 面向过程是一种以过程为中心的编程思想,它将一个复杂的问题分解为一系列的步骤,每个步骤用一个函数(或过程)来实现,然后按照一定的顺序依次调用这些函数&…

Redis|Springboot集成Redis

文章目录 总体概述本地Java连接Redis常见问题集成Jedis集成lettuce集成RedisTemplate——推荐使用连接单机连接集群 总体概述 jedis-lettuce-RedisTemplate三者的联系 jedis第一代lettuce承上启下redistemplate着重使用 本地Java连接Redis常见问题 bind配置请注释掉保护模式…