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

相关推荐
甄心爱学习15 分钟前
【项目实训(个人11)】
python·个人开发
覆东流20 分钟前
Java开发环境搭建
java·开发语言·后端
阿洛学长23 分钟前
VMware安装虚拟机教程(超详细)
java·linux·开发语言
zhangfeng113323 分钟前
国家超算中心 htc 如果只有gpu资源 没有cpu资源 操作文件的时候会不会很卡呢
人工智能·pytorch·python·机器学习
rit843249924 分钟前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab
jiayong2324 分钟前
01 检查 Python 版本与环境
开发语言·python
阿哟阿哟34 分钟前
vna.3.1.9.cn.jar设置成中文界面
python·pycharm·jar
XZ-07000137 分钟前
MySQL-综合应用(Python+Html)
python·mysql·html
就叫_这个吧39 分钟前
Java普通类、抽象类、接口的应用和区别
java·开发语言
梅孔立42 分钟前
解决Nginx缓存不写入响应体问题:浏览器强制不缓存配置教程
java·开发语言·nginx·spring