在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.pswp.cn/news/897296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897296.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897296.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++之序列容器(vector,list,dueqe)

1.大體對比 在軟件開發的漫長歷程中,數據結構與算法始終占據著核心地位,猶如大廈的基石,穩固支撐著整個程序的運行。在眾多編程語言中,數據的存儲與管理方式各有千秋,而 C 憑借其豐富且強大的工具集脫穎而出&#xff…

【學習筆記】【DeepSeek AI 醫生】2-2 AI家庭醫生課程內容介紹

【DeepSeek AI 醫生】2-4 項目詳細分析及DeepSeek適用場景 一、Ollama部署二、可視化UI三、構建項目環境四、搭建項目架構五、Spring Al六、SSE服務端推送事件七、數據持久化八、線上部署 一、Ollama部署 Mac部署windows 部署ollama腳本、常用命令DeepSeek 提示詞、角色、適用…

STM32 I2C驅動開發全解析:從理論到實戰 | 零基礎入門STM32第五十步

主題內容教學目的/擴展視頻I2C總線電路原理,跳線設置,I2C協議分析。驅動程序與調用。熟悉I2C總線協議,熟練調用。 師從洋桃電子,杜洋老師 📑文章目錄 引言一、I2C驅動分層架構二、I2C總線驅動代碼精析2.1 初始化配置&a…

Vercel Serverless

1. 引言 現代應用程序是為適應當前技術環境需求而設計的軟件,采用現代開發工具和實踐,針對云部署和可擴展性優化。它們由多個模塊化小組件組成,便于集成和縮放,具有高度的敏捷性和適應性,能快速響應用戶或業務需求變化…

國產操作系統之系統分區及分區的作用

國產操作系統之系統分區及分區的作用和掛載 Linux的系統分區跟Windows有著本質區別,在windows中大家知道c盤一般為系統盤,除c盤系統盤外,我們再分為D、E等文件存儲盤,而在Linux中雖然是以文件目錄著稱的系統,但思路也一樣的,比如針對系統分區中 /home、/var 和 /opt 等文…

字節碼是由什么組成的?

Java字節碼是Java程序編譯后的中間產物,它是一種二進制格式的代碼,可以在Java虛擬機(JVM)上運行。理解字節碼的組成有助于我們更好地理解Java程序的運行機制。 1. Java字節碼是什么? 定義 Java字節碼是Java源代碼經過…

微前端框架 Qiankun 的應用及問題分析

一、Qiankun 的核心應用場景與優勢 多技術棧共存與靈活集成 Qiankun 支持主應用與子應用使用不同技術棧(如 Vue、React、Angular 等),通過 HTML Entry 方式接入子應用,無需深度改造子應用即可實現集成,降低了技術遷移成…

function uuid_generate_v4()不存在(二)

說明:之前代碼里用到了postgresql內嵌函數uid_generate_v4()生成記錄的主鍵,提示該函數不存在,寫了下面這篇博客記錄了一下,今天又發現了新的問題,于是補充了這篇博客。 function uuid_generate_v4()不存在&#xff0…

6. 機器人實現遠程遙控(具身智能機器人套件)

1. 啟動控制腳本 遠程作到 Raspberry Pi 中,并運行以下腳本: conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot登錄筆記本電腦上,同時運行以下腳本: conda ac…

【簡單的C++圍棋游戲開發示例】

C圍棋游戲開發簡單示例&#xff08;控制臺版&#xff09; ?核心代碼實現? #include <iostream> #include <vector> #include <queue> using namespace std;const int SIZE 9; // 簡化棋盤為9x9?:ml-citation{ref"1" data"citationList&…

RK3568平臺(音頻篇)audio_policy_volumes_drc.xml解析

audio_policy_volumes_drc.xml 是 Android 系統中用于配置音頻策略和音量的 XML 文件。它定義了音頻流的音量曲線、動態范圍控制(DRC)參數以及音頻設備的音量設置。該文件通常位于 /vendor/etc/ 或 /system/etc/ 目錄下,是 Android 音頻框架的重要組成部分。 以下是對 audi…

如何下載安裝 PyCharm?

李升偉 整理 一、下載 PyCharm 訪問官網 打開 PyCharm 官網&#xff0c;點擊 "Download" 按鈕25。 版本選擇&#xff1a; 社區版&#xff08;Community&#xff09;&#xff1a;免費使用&#xff0c;適合個人學習和基礎開發。 專業版&#xff08;Professional&#…

leetcode day27 455+376

455 分發餅干 假設你是一位很棒的家長&#xff0c;想要給你的孩子們一些小餅干。但是&#xff0c;每個孩子最多只能給一塊餅干。 對每個孩子 i&#xff0c;都有一個胃口值 g[i]&#xff0c;這是能讓孩子們滿足胃口的餅干的最小尺寸&#xff1b;并且每塊餅干 j&#xff0c;都有…

HPC超算系列2——新手指南1

一&#xff0c;平臺簡介&#xff1a; 主要是官方手冊指南、B站視頻&#xff08;培訓視頻、軟件視頻&#xff09; 1&#xff0c;超算平臺架構&#xff1a; 和普通的家用電腦的架構不同&#xff0c; 主要區別在于&#xff1a;層次化的結構 &#xff08;1&#xff09;超算是有…

K8S單機部署

主線 :部署簡單的單節點k8s - sowler - 博客園 學習網址&#xff1a;為什么我不能獲取到鏡像&#xff0c;ImagePullBackoff | Kuboard docker鏡像源&#xff1a;https://chuxia.blog.csdn.net/article/details/145090710?spm1001.2101.3001.6650.3&utm_mediumdistribute…

web3區塊鏈

Web3 是指下一代互聯網&#xff0c;也被稱為“去中心化互聯網”或“區塊鏈互聯網”。它是基于區塊鏈技術構建的&#xff0c;旨在創建一個更加開放、透明和用戶主導的網絡生態系統。以下是關于 Web3 的一些關鍵點&#xff1a; ### 1. **核心概念** - **去中心化**&#xff1…

SQL Server核心知識總結

SQL Server核心知識總結 &#x1f3af; 本文總結了SQL Server核心知識點,每個主題都提供實際可運行的示例代碼。 一、SQL Server基礎精要 1. 數據庫核心操作 -- 1. 創建數據庫&#xff08;核心配置&#xff09; CREATE DATABASE 學生管理系統 ON PRIMARY (NAME 學生管理系統…

android 支持自定義布局、線程安全、避免內存泄漏的 Toast 工具類

支持自定義布局&#xff1a;可以靈活地顯示自定義樣式的 Toast。 線程安全&#xff1a;確保在主線程中顯示 Toast&#xff0c;避免崩潰。 避免內存泄漏&#xff1a;使用 ApplicationContext 和取消機制&#xff0c;防止內存泄漏問題。 工具類&#xff1a;作為一個通用的工具…

嵌入式人工智能應用-第6章 人臉檢測

嵌入式人工智能應用 人臉檢測 嵌入式人工智能應用1 人臉檢測1.1 CNN 介紹1.2 人臉檢測原理1.3 MTCNN介紹1.4 NCNN介紹2 系統安裝2.1 安裝依賴庫NCNN2.2 運行對應的庫3 總結1 人臉檢測 1.1 CNN 介紹 卷積神經網絡。卷積是什么意思呢?從數學上說,卷積是一種運算。它是我們學習…

RocketMQ提供了哪些過濾機制?

前言 本篇文章比較簡單&#xff0c;分別介紹RocketMQ支持幾種過濾機制&#xff0c;其原理和使用。 RocketMQ 提供了多種消息過濾機制&#xff0c;幫根據業務需求高效篩選消息&#xff0c;可以減少不必要的消息傳輸和處理。以下是其核心過濾機制及使用場景&#xff1a; 1. Tag…