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 = 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")