ArcGis Pro Python工具箱教程 03 工具箱中工具自定义
ArcGis Pro Python工具箱教程 03 工具箱中工具自定义
用于定义工作工具类的方法
| 工具方法 | 必选或可选 | 描述 |
|---|---|---|
| __ init __ | 必需项 | right-aligned 初始化工具类。 |
| getParameterInfo | 可选 | 定义工具的参数。 |
| isLicensed | 可选 | 返回工具是否获得执行许可。 |
| updateParameters | 可选 | 在用户每次在工具对话框中更改参数时调用。 从 updateParameters 返回后,地理处理将调用它的内部验证例程。 |
| updateMessages | 可选 | 在从内部验证例程返回后调用。 可以检查根据内部验证创建的消息,并根据需要对其进行更改 |
| execute | 必需项 | 工具的源代码。 |
| postExecute | 可选 | 当 execute 方法完成,然后处理输出并将其添加到显示后调用。 |
可在工具的 init 方法中设置以下属性:
| 属性 | 描述 |
|---|---|
| category | 工具所在的工具集的名称。 可通过工具集组织工具箱内的工具。 |
| description | 工具的描述。 |
| label | 标注是工具的显示名称,如地理处理窗格中所示。 |
class DaoMingyuan_GIS: # 工具名称由类本身的名称确定def __init__(self):# 定义工具 self.label = "公众号:明遠GIS DaoMingyuan_GIS"# 工具的显示名称self.description = "关注作者公众号,了解更多资讯"# 工具的描述self.category = "00-工具简介"# 工具集的名称
getParameterInfo 定义工具的参数
几乎所有工具都具有参数,可在工具对话框或脚本中设置参数值。 运行工具时,会将参数值发送到该工具的源代码。 该工具将读取这些值并相应地对其进行处理。
在 Python 工具箱 (.pyt) 中,通过创建 Parameter 对象并设置其属性在工具类的 getParameterInfo 方法中定义工具参数。
| 属性 | 描述 |
|---|---|
| displayName | 地理处理窗格中显示的参数名称。 |
| name | 在 Python 的工具语法中显示的参数名称。 |
| datatype | 每个 Python 工具箱的工具参数都有关联的数据类型。 打开地理处理窗格后,将使用该数据类型来检查参数值。 数据类型也可用于浏览数据 - 仅与参数数据类型匹配的数据才会显示在浏览对话框中。 要获取参数数据类型的列表,请参阅 Python 工具箱中的参数数据类型。 |
| parameterType | 以下为 parameterType 的选项: Required - 在提供值之前,该工具无法运行。 Optional - 无需为参数提供值。 Derived - 该参数仅适用于输出参数(请参阅以下 direction 属性)。 派生的输出参数不会显示在工具对话框中。 |
| direction | 此属性定义参数是工具的输入还是工具的输出。 选项为输入和输出。 如果 parameterType 设置为 Derived,请将 direction 设置为 Output。 |
def getParameterInfo(self):# 定义工具参数param0 = arcpy.Parameter(# 第一个工具category = "单一工具",# 工具类别 用于分类脚本里面的用途displayName="添加要素图层",# 地理处理窗格中显示的参数名称name="in_GPFeatureLayer",# 在 Python 的工具语法中显示的参数名称datatype="GPFeatureLayer",# 对要素类的引用,包括符号系统和渲染属性 每个 Python 工具箱的工具参数都有关联的数据类型 打开地理处理窗格后 将使用该数据类型来检查参数值 请参阅 Python 工具箱中的参数数据类型parameterType="Required",# Required - 在提供值之前,该工具无法运行 Optional - 无需为参数提供值 Derived - 该参数仅适用于输出参数(请参阅以下 direction 属性)派生的输出参数不会显示在工具对话框中direction="Input")#此属性定义参数是工具的输入还是工具的输出 选项为输入和输出 如果 parameterType 设置为 Derived,请将 direction 设置为 Outputparam1 = arcpy.Parameter(category = "单一工具",# 工具类别 用于分类脚本里面的用途displayName="添加字段",name="in_Field",datatype="Field",#表中的列 用于存储单个属性的值parameterType="Required",direction="Input")param2 = arcpy.Parameter(category = "单一工具",# 工具类别 用于分类脚本里面的用途displayName="复合数据类型,输入栅格数据集或栅格目录",name="Input Raster Dataset",datatype=["DERasterDataset", "DERasterCatalog"],# 根据一个或多个栅格构建的单个数据集 以表形式定义的栅格数据集的集合 每个表记录定义目录中的一个单独栅格数据集parameterType="Required",direction="Input")param3 = arcpy.Parameter(category = "单一工具",# 工具类别 用于分类脚本里面的用途displayName="输入多个图层",name="in_features",datatype="GPFeatureLayer",parameterType="Required",direction="Input",multiValue=True)# 如果希望参数处理一组值,而非仅处理单个值,请将 multiValue 属性设置为 Trueparam4 = arcpy.Parameter(displayName="定义输入要素数据类型",name="in_feature_set",datatype="GPFeatureRecordSetLayer",parameterType="Required",direction="Input")param4.value = os.path.join(os.path.dirname(__file__),'Fire_Station.lyrx')# 使用__file__属性查找.lyr文件(假设.pyt和.lyr存在于同一文件夹中)params = [param0,param1,param2,param3,param4]# 需将工具添加到列表当中,并返回,否则不显示添加的工具return params
上述代演示了如何添加工具参数,在python 工具箱里,我们主要通过getParameterInfo来定义工具箱的参数,用来进行参数传递,让工具进行运行。
在 Python 工具箱中,datatype类型比较多和复杂,后续会单独讲解。
相关文章:
ArcGis Pro Python工具箱教程 03 工具箱中工具自定义
ArcGis Pro Python工具箱教程 03 工具箱中工具自定义 用于定义工作工具类的方法 工具方法必选或可选描述__ init __必需项right-aligned 初始化工具类。getParameterInfo可选定义工具的参数。isLicensed可选返回工具是否获得执行许可。updateParameters可选在用户每次在工具对…...
【C++初阶】之类和对象(中)
【C初阶】之类和对象(中) ✍ 类的六个默认成员函数✍ 构造函数🏄 为什么需要构造函数🏄 默认构造函数🏄 为什么编译器能自动调用默认构造函数🏄 自己写的构造函数🏄 构造函数的特性 ✍ 拷贝构造…...
Vue2(十一):脚手架配置代理、github案例、插槽
一、脚手架配置代理 1.回顾常用的ajax发送方式: (1)xhr 比较麻烦,不常用 (2)jQuery 核心是封装dom操作,所以也不常用 (3)axios 优势:体积小、是promis…...
在宝塔面板中,为自己的云服务器安装SSL证书,为所搭建的网站启用https(主要部分攻略)
前提条件 My HTTP website is running Nginx on Debian 10(或者11) 时间:2024-3-28 16:25:52 你的网站部署在Debain 10(或者11)的 Nginx上 安装单域名证书(默认)(非泛域名…...
学习JavaEE的日子 Day32 线程池
Day32 线程池 1.引入 一个线程完成一项任务所需时间为: 创建线程时间 - Time1线程中执行任务的时间 - Time2销毁线程时间 - Time3 2.为什么需要线程池(重要) 线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time…...
@Transactional 注解使用的注意事项
事务管理 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好的事务管理机制,主要分为编程式事务和声明式事务两种。 编程式事务: 是指在代码中手动的管理事务的提交、回滚等操作,代码侵入比较强。 声明式事务ÿ…...
电商系列之库存
> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…...
Apache HBase(二)
目录 一、Apache HBase 1、HBase Shell操作 1.1、DDL创建修改表格 1、创建命名空间和表格 2、查看表格 3、修改表 4、删除表 1.2、DML写入读取数据 1、写入数据 2、读取数据 3、删除数据 2、大数据软件启动 一、Apache HBase 1、HBase Shell操作 先启动HBase。再…...
【设计模式】原型模式详解
概述 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象 结构 抽象原型类:规定了具体原型对象必须实现的clone()方法具体原型类:实现抽象原型类的clone()方法,它是可以被复制的对象。访问类&…...
企微侧边栏开发(内部应用内嵌H5)
一、背景 公司的业务需要用企业微信和客户进行沟通,而客户的个人信息基本都存储在内部CRM系统中,对于销售来说需要一边看企微,一边去内部CRM系统查询,比较麻烦,希望能在企微增加一个侧边栏展示客户的详细信息…...
如何确定最优的石油管道位置
如何确定最优的石油管道位置 一、前言二、问题概述三、理解问题的几何性质四、转化为数学问题五、寻找最优解六、算法设计6.1伪代码6.2 C代码七算法效率和实际应用7.1时间效率分析7.2 空间效率分析结论一、前言 当我们面对建设大型输油管道的复杂任务时,确保效率和成本效益是…...
FPGA 图像边缘检测(Canny算子)
1 顶层代码 timescale 1ns / 1ps //边缘检测二阶微分算子:canny算子module image_canny_edge_detect (input clk,input reset, //复位高电平有效input [10:0] img_width,input [ 9:0] img_height,input [ 7:0] low_threshold,input [ 7:0] high_threshold,input va…...
2024.3.28学习笔记
今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p286-p294 继承 继承可以解决代码复用,让我们的编程更加靠近人类思维,当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义这些…...
33.HarmonyOS App(JAVA)鸿蒙系统app数据库增删改查
33.HarmonyOS App(JAVA)鸿蒙系统app数据库增删改查 关系数据库 关系对象数据库(ORM) 应用偏好数据库 分布式数据库 关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。HarmonyOS关系型…...
寄主机显示器被快递搞坏了怎么办?怎么破?
大家好,我是平泽裕也。 最近,我在社区里看到很多关于开学后弟弟寄来的电脑显示器被快递损坏的帖子。 看到它真的让我感到难过。 如果有人的数码产品被快递损坏了,我会伤心很久。 那么今天就跟大家聊聊寄快递的一些小技巧。 作为一名曾经的…...
python爬虫-bs4
python爬虫-bs4 目录 python爬虫-bs4说明安装导入 基础用法解析对象获取文本Tag对象获取HTML中的标签内容find参数获取标签属性获取所有标签获取标签名嵌套获取子节点和父节点 说明 BeautifulSoup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数…...
SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)
本篇是接上一篇Windows版本,需要Windows版本的请看上一篇,这里我们继续把Elasticsearch简称为ES,以下都是这样。 一、下载 登录Elasticsearch官网,地址是:Download Elasticsearch | Elastic 进入以后,网页会自动识别系统给你提示Mac版本的下载链接按钮 二、安装 下载…...
OC对象 - Block解决循环引用
文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用…...
Java设计模式之装饰器模式
装饰器模式是一种结构型设计模式,它允许动态地将责任附加到对象上。装饰器模式是通过创建一个包装对象,也就是装饰器,来包裹真实对象,从而实现对真实对象的功能增强。装饰器模式可以在不修改原有对象的情况下,动态地添…...
Java基础知识总结(25)
代理模式 什么是代理模式? 代理模式是指,为其他对象提供一种代理以控制这个对象的访问。一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户和目标对象之间起到中介的作用。换句话说,代理模式,是在不修…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
