设置脚本工具参数

几乎所有工具都具有参数,可在地理处理窗格或脚本中设置参数值。 执行工具时,会将参数值发送到该工具的源代码。 您的工具将读取这些值并继续工作。

要了解有关参数的详细信息,请参阅了解脚本工具参数

脚本工具参数可以在创建脚本工具时进行设置。 还可通过工具的属性对话框添加、删除和修改脚本工具参数。 要访问脚本工具属性,请右键单击工具,单击属性,然后单击参数选项卡。

要添加参数,请单击标注列的第一个空单元格并输入该参数的名称。 这是将显示在地理处理窗格中的名称,可以包含空格。 在名称列下,将根据标注创建默认参数名称,并可在需要时更改名称。 此参数名称用于 Python 语法并将受到验证(包括空格移除)。

创建参数

输入参数的显示名称后,通过单击数据类型单元格为参数选择一种数据类型,如下所示。

定义参数的数据类型

如果需要创建可接受多个值的参数,请选中多值复选框。 如果需要创建复合数据类型(即可接受不同数据类型的参数),您可以选中多种数据类型。

还可以为每个参数设置其他属性,如之前所述及以下所示。

属性描述

类型

可以是必需可选派生。 “派生”表示工具的用户未输入参数值。 输出参数通常是“派生”类型。

方向

可以为输入输出。 如果参数类型派生,则方向始终为输出

类别

可将参数分组为不同类别。

过滤

如果希望仅为参数输入特定的数据集或值,可以指定过滤器。 过滤器类型有六种,您可以根据参数的数据类型来选择过滤器的类型。

依赖关系

此属性适用于派生的输出参数以及输入参数的数据类型。 对于派生的输出参数,依赖关系可以设置为包含输出定义的参数。 对于输入参数,依赖关系可以设置为包含输入所需信息的参数。

默认值

参数的默认值。 如果参数的数据类型是要素集或记录集,则默认将用于定义参数的方案。

环境

如果参数的默认值来自于环境设置,则此属性将包含环境设置的名称。

符号系统

此属性仅适用于输出参数。 值为图层文件 (.lyrx) 的位置,该文件中包含用于显示输出的符号系统。

参数属性

类型

类型设置为以下选项之一:

  • 必选 - 该参数必须具有要运行的工具的值。
  • 可选 - 不需要为参数提供值。
  • 派生 - 在以下情况下使用派生参数:
    • 输出与输入相同。 例如,计算字段工具可更新输入表中字段的值,但不会创建表或修改输入的方案。
    • 用于修改输入方案的工具。 例如,添加字段工具将向输入表中添加字段。
    • 该工具输出标量值,例如数字、字符串或布尔值。 例如,获取计数工具返回派生的整型值。
    • 该工具根据其他参数中的值创建输出。 例如,创建要素类工具返回从具有路径和名称值的其他参数构建的派生要素类路径。
    • 将在已知位置创建数据的工具。 例如,在您的脚本中,可能将在已知工作空间中创建要素类。 要素类和工作空间都不是参数选项。
注:

当工具更新数据集或图层时,该工具必须具有一个派生的输出参数,并已设置相对输入参数的参数相关性。 这样,ArcGIS Pro 中的多线程后台地理处理将了解在处理期间要断开哪些地图图层以防止数据锁定错误,并在处理后重新连接并使用更新属性(例如选择和连接)进行刷新。

注:

如果脚本工具包含派生的输出,则需要使用 SetParameterAsTextSetParameter 函数在脚本中设置派生输出参数的值。

输出值而非数据

上述示例展示了输出派生数据集。 但是,某些工具将输出值而非数据集,例如获取计数工具,它将输出包含表中行数的长整型数据。 输出值而非数据集是很常见的。 在您自己的脚本中,可能对多个相关数据集执行分析,并且只输出一些数字或通过/失败的布尔值。

包含值数据类型(例如长整型布尔型)的输出参数始终为派生类型而非必需类型。

方向

此属性定义参数是工具的输入还是工具的输出。

如果参数类型为派生,则参数方向将自动设置为输出

所有脚本工具都应具有输出参数,以便能够在 模型构建器 中使用。 模型构建器 的基本理念是将工具的输出连接到其他工具的输入。如果脚本工具没有输出参数,则不适用于 模型构建器。 输出可能是在参数值中输入的数据集、在脚本内部确定位置或名称的派生输出、也可能是经过计算或确定的派生值。 您至少可以输出一个布尔参数,如果工具成功完成,返回 true,否则返回 false。

类别

可以将参数分为不同的类别,从而最小化工具地理处理窗格的大小或将不常使用的相关参数分为一组。 如果为其他参数设置了类别,则可以输入新类别名称或从列表中进行选择。 多个 ArcGIS Network Analyst extension 工具使用了如下类别。

参数类别

类别始终显示在非类别化参数之后。 请勿将所需参数放入类别中,这会导致其在地理处理窗格的视图中处于隐藏状态。

多值

如果希望参数能够处理一组值而非单个值,可将多值属性设置为

多值控件的示例如下所示:

多值控件

当使用 arcpy.GetParameter 函数时可通过列表访问多值,并可通过使用 for 循环迭代多值。 此外,也可使用 arcpy.GetParameterAsText 函数通过以分号分隔的字符串访问多值。 要将以分号分隔的字符串分解开,可使用 Python split 方法,如下面的代码示例所示。

import arcpy
road_types = arcpy.GetParameterAsText(0)
road_list = road_types.split(";")

# Process each road type
for road_type in road_list:
  # road_type contains an individual road type string (ex: "Interstates")
  arcpy.AddMessage("Processing: {}".format(road_type))

默认值

打开脚本工具时,默认值将是参数的内容。 如果在脚本中为参数输入 #,则也是将要使用的值。 如果没有为默认值属性指定任何值,则在工具打开时参数值将为空。 如果为该属性指定了值,则环境属性将不可用。 要启用环境属性,请清除默认属性。

方案

当输入参数的数据类型为要素集记录集时,必须指定方案的位置,该方案用于定义要输入的要素的字段和几何类型。 方案可以是要素类、表或图层文件 (.lyrx)。

要素集记录集数据类型允许交互输入数据。 要素集允许脚本的用户通过单击地图以交互方式创建要素。 记录集允许用户在表格中以交互方式创建行。

环境

可以将参数的默认值设置为环境设置的值,方法是右键单击环境下的对应单元格,然后选择环境设置的名称。

过滤

如果希望仅为参数输入特定的值或数据集类型,可以指定过滤器。 单击过滤器下的对应单元格,并从下拉列表中选择合适的过滤器类型。 随即显示一个对话框,可通过此对话框为过滤器指定值。 过滤器类型有六种,您可以根据参数的数据类型来选择过滤器的类型。

通常,只可以选择一种过滤器类型。 仅长整型双精度有两种选择:值列表范围

还可以通过自定义脚本工具的 ToolValidator 类,使用 Python 以编程方式设置过滤器。

面积单位

面积单位过滤器用于定义允许的单位类型:平方英寸平方英尺平方码英亩平方英里平方毫米平方厘米平方分米平方米公亩公顷平方千米未知

要素类型

对于此过滤器,可以选择一个或多个过滤器值。 将根据过滤器值检查输入要素类。 例如,如果只将选择为过滤器值,则用户只能将点要素类作为参数值进行输入。

要素类型过滤器用于定义允许的要素类类型:多点折线注记尺寸注记。 可以向过滤器提供多个值。

字段

字段过滤器用于定义允许的字段类型:短整型长整型浮点型双精度文本日期OID几何Blob栅格GUIDGlobalIDXML。 可以向过滤器提供多个值。

文件

文件过滤器包含文件可具有的文件后缀的列表,如 txt(简单文本文件)和 csv(逗号分隔值)。 您可以提供任何后缀的文本,不必是 ArcGIS 可识别的后缀。 后缀可为任意长度,且不包含句点。 用分号分隔符分隔多个后缀。

线性单位

线性单位过滤器用于定义允许的单位类型:英寸英尺英里海里毫米厘米千米十进制度分米未知。 可以向过滤器提供多个值。

范围

长整型双精度参数可具有范围过滤器。 范围过滤器有两个值:最小值和最大值。 包括范围边界值,这表示最小值和最大值也是有效数据。

时间单位

时间单位过滤器用于定义允许的单位类型:毫秒分钟小时十年百年未知。 可以向过滤器提供多个值。

出行模式单位类型

此过滤器可用于基于出行模式的阻抗属性单位来设置允许的出行模式类型。 有效选项为时间距离其他。 默认设置为允许所有三个类型。

值列表

值列表过滤器对提供一组关键字非常有利。 许多工具都具有一组预定义的关键字,例如添加字段中的字段类型参数,或者叠加分析工具集中众多工具的 JoinAttributes 参数。

值列表过滤器可用于长整型双精度数据类型。 对于这些类型,需输入允许的数值。

如果希望用户能够选择多个值,请将多值属性设置为

值列表还可用于布尔数据类型。 对于布尔数据类型,值列表将包含两个值:true 和 false。 值 true 始终是列表中的最初值。 这些值用在命令行中指定值。 相关示例,可参阅添加字段和用于 IsNullable 属性的 {NULLABLE | NON_NULLABLE} 关键字。

工作空间

工作空间过滤器用于指定允许的输入工作空间的类型。 三个值如下所示:

  • 文件系统 - 系统文件夹,用于存储 shapefile、coverage、INFO 表和格网
  • 本地数据库 - 个人地理数据库或文件地理数据库
  • 远程数据库 - 企业级数据库连接

可以提供多个值。

依赖关系

依赖关系属性有两种用途:

  • 对于派生的输出参数,可将依赖关系设置为将通过工具修改的输入参数。 有关派生数据和依赖关系的详细信息,请参阅上文中类型属性的介绍。
  • 对于输入参数,依赖关系包含数据类型所使用的其他参数的名称。 例如,对于输入字段数据类型,可将依赖关系设置为包含字段的表参数的名称。

只能为特定输入参数设置依赖关系属性,如下表中所示。

输入数据类型获取自数据类型描述

字段SQL 表达式

表格

含有字段的表

INFO 项目INFO 表达式

INFO 表

包含项目的 INFO 表

Coverage 要素类Coverage

包含要素的 coverage

面积单位线性单位

地理数据集

用于确定默认单位的地理数据集

坐标系工作空间

用于确定默认坐标系的工作空间

Network Analyst 等级设置网络数据集

包含等级信息的网络数据集

地统计值表地统计图层

包含表的分析图层

网络出行模式

网络数据源网络数据集网络数据集图层

出行模式列表

依赖关系数据类型

符号系统

如果工具输出的是要素集、栅格、TIN 或图层,则可以在符号系统属性中指定图层文件 (.lyrx) 的位置。 运行工具并将输出添加到显示中时,将使用符号系统图层文件中定义的符号系统进行绘制。

警告:

每次运行工具时都会读取图层文件。 如果未找到图层文件(因为被移动或删除),将使用默认符号系统。

相关主题