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

发布于:2024-03-29 ⋅ 阅读:(13) ⋅ 点赞:(0)

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

本文含有隐藏内容,请 开通VIP 后查看