ArcGis Pro Python工具箱教程 03 工具箱中工具自定义

ArcGis Pro Python工具箱教程 03 工具箱中工具自定义

用于定义工作工具类的方法

工具方法 必选或可选 描述
__ init __ 必需项 right-aligned 初始化工具类。
getParameterInfo 可选 定义工具的参数。
isLicensed 可选 返回工具是否获得执行许可。
updateParameters 可选 在用户每次在工具对话框中更改参数时调用。 从 updateParameters 返回后,地理处理将调用它的内部验证例程。
updateMessages 可选 在从内部验证例程返回后调用。 可以检查根据内部验证创建的消息,并根据需要对其进行更改
execute 必需项 工具的源代码。
postExecute 可选 当 execute 方法完成,然后处理输出并将其添加到显示后调用。

可在工具的 init 方法中设置以下属性:

属性 描述
category 工具所在的工具集的名称。 可通过工具集组织工具箱内的工具。
description 工具的描述。
label 标注是工具的显示名称,如地理处理窗格中所示。
python 复制代码
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。
python 复制代码
    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 设置为 Output

        param1 = 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 属性设置为 True

        param4 = 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类型比较多和复杂,后续会单独讲解。

相关推荐
apcipot_rain4 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A5 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持5 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang6 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰7 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc8 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
蜗牛一步步往上爬9 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
羲云网络11 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
张张123y11 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶14 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划