几乎所有工具都具有参数,可在地理处理窗格或脚本中设置参数值。 运行工具时,会将参数值发送到该工具的源代码。 该工具将读取这些值并相应地对其进行处理。
要了解有关参数的详细信息,请参阅了解脚本工具参数。
脚本工具参数可以在创建脚本工具时进行设置。 还可通过工具的属性对话框添加、删除和修改脚本工具参数。 要访问脚本工具属性,请右键单击工具,单击属性,然后单击参数选项卡。
要添加参数,请单击标注列中的第一个空单元格并输入该参数的名称。 这是将显示在地理处理窗格中的名称,可以包含空格。 在名称列中,将根据标注值创建默认参数名称,但可以对其进行更改。 此参数名称是 Python 语法所必需的,并且将对其进行验证(包括移除空格)。
提供参数的显示名称后,通过单击数据类型单元格为参数选择一种数据类型,如下所示。
要创建可接受多个值的参数,请选中多值复选框。 要创建复合数据类型(即可接受不同数据类型的参数),您可以选中多种数据类型。
还可以为每个参数设置其他属性,如之前所述及以上所示。
属性 | 描述 |
---|---|
选项为必需、可选或派生。 “派生”表示工具的用户未输入参数值。 输出参数通常是“派生”类型。 | |
选项为输入或输出。 如果类型属性设置为派生,则方向始终为输出。 | |
可将参数分组为不同类别。 | |
如果希望仅为参数输入特定的数据集或值,可以指定过滤器。 过滤器有六种类型,可用类型取决于参数的数据类型。 | |
此属性适用于派生的输出参数以及输入参数的数据类型。 对于派生的输出参数,此属性可以设置为包含输出定义的参数。 对于输入参数,可将其设置为包含输入所需信息的参数。 | |
参数的默认值。 如果参数的数据类型是要素集或记录集,则此属性将用于定义参数的方案。 | |
如果参数的默认值来自于环境设置,则此属性将包含环境设置的名称。 | |
此属性仅适用于输出参数。 值为图层文件 (.lyrx) 的位置,该文件中包含用于显示输出的符号系统。 |
类型
将类型属性设置为以下选项之一:
- 必需 - 该参数必须具有要运行的工具的值。
- 可选 - 不需要为参数提供值。
- 派生 - 在以下情况下使用派生参数:
注:
当工具更新数据集或图层时,该工具必须具有一个派生的输出参数,并已设置相对输入参数的参数相关性。 这样,ArcGIS Pro 中的多线程后台地理处理将标识在处理期间要断开哪些地图图层以防止数据锁定错误,并在处理后重新连接并使用更新属性(例如选择和连接)进行刷新。
注:
如果脚本工具包含派生的输出,则需要使用 SetParameterAsText 或 SetParameter 函数在脚本中设置派生输出参数的值。
输出值而非数据
上述示例展示了输出派生数据集。 但是,某些工具将输出值而非数据集,例如获取计数工具,它将输出包含表中行数的长整型数据。 输出值而非数据集是很常见的。 在您的脚本中,将对多个相关数据集执行分析,并且仅输出一些数字或通过/失败的布尔值。
包含值数据类型(例如长整型或布尔型)的输出参数将始终使用派生选项,而非必需选项。
方向
此属性定义参数是工具的输入还是工具的输出。
如果参数类型为派生,则参数方向将自动设置为输出。
所有脚本工具都应具有输出参数,以便能够在 模型构建器 中使用。 模型构建器 的基本理念是将工具的输出连接到其他工具的输入,如果脚本工具没有输出参数,则其不适用于 模型构建器。 输出可能是为参数值提供的数据集、在脚本中确定位置或名称的派生输出,也可能是经过计算或确定的派生值。 您至少可以输出一个布尔参数,如果工具成功完成,返回 true,否则返回 false。
类别
可以将参数分为不同的类别,从而最小化工具地理处理窗格的大小或将不常使用的相关参数分为一组。 如果为其他参数设置了类别,则可以提供新类别名称或从列表中进行选择。 一些 ArcGIS Network Analyst 扩展 工具将使用类别,如下图所示。
类别显示在非类别化参数之后。 请勿将所需参数放入类别中,这会导致其在地理处理窗格的视图中处于隐藏状态。
多值
如果希望参数处理一组值,而非单个值,请将多值属性设置为是。
多值控件的示例如下所示:
当使用 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)。 指定图层文件后,图层文件的路径将内部化,如果属性对话框已重新打开,则单元格中会显示一个 ... 已嵌入 ... 标注。
环境
可以将参数的默认值设置为环境设置的值,方法是右键单击环境下的对应单元格,然后选择环境设置的名称。
过滤器
如果希望仅为参数输入特定的值或数据集类型,可以指定过滤器。 单击过滤器下的对应单元格,并从下拉列表中选择合适的过滤器类型。 随即显示一个对话框,可在此对话框中为过滤器指定值。 过滤器有 10 种类型,如下所述,可用的过滤器类型取决于参数的数据类型。
通常,仅存在一种可用的过滤器类型。 仅长整型和双精度有两种选择:值列表和范围。
还可以通过自定义脚本工具的 ToolValidator 类,使用 Python 以编程方式设置过滤器。
面积单位
面积单位过滤器用于定义允许的单位类型:平方英寸、平方英尺、平方码、英亩、平方英里、平方毫米、平方厘米、平方分米、平方米、公亩、公顷、平方千米和未知。
要素类型
要素类型过滤器用于定义允许的要素类类型:点、多点、面、折线、注记和尺寸注记。 可以提供多个值。
对于此过滤器,可以选择一个或多个过滤器值。 将根据过滤器值检查输入要素类。 例如,如果仅指定点作为过滤器值,则用户只能将点要素类作为参数值进行输入。
字段
字段过滤器用于定义允许的字段类型:短整型、长整型、浮点型、长整型(64 位整数)、双精度、文本、日期、OID、仅时间、仅日期、带偏移的时间戳、几何、Blob、栅格、GUID、GlobalID 和 XML。 可以提供多个值。
文件
文件过滤器包含文件可具有的文件后缀的列表,如 txt(简单文本文件)和 csv(逗号分隔值)。 您可以提供任何后缀的文本,不必是 ArcGIS 可识别的后缀。 后缀可为任意长度,且不包含句点。 用分号分隔符分隔多个后缀。
线性单位
线性单位过滤器用于定义允许的单位类型:英寸、磅、英尺、码、英里、海里、毫米、厘米、米、千米、十进制度、分米、度和未知。 可以提供多个值。
范围
范围过滤器具有两个值:最小值和最大值。 包括范围边界值,这表示最小值和最大值也是有效数据。 长整型或双精度参数可以使用此过滤器。
时间单位
时间单位过滤器用于定义允许的单位类型:毫秒、秒、分钟、小时、日、周、月、年、十年、百年和未知。 可以提供多个值。
出行模式单位类型
此过滤器可用于基于出行模式的阻抗属性单位来设置允许的出行模式类型。 选项为时间、距离和其他。 默认设置为允许所有三个类型。
值列表
该过滤器可用于提供一组关键字。 许多工具都具有一组预定义的关键字,如添加字段工具中的字段类型参数,或叠加分析工具集中多个工具的连接属性参数。
值列表过滤器可用于长整型和双精度数据类型。 对于这些类型,需输入允许的数值。
如果希望用户能够选择多个值,请将多值属性设置为是。
值列表过滤器可用于布尔数据类型。 对于布尔数据类型,值列表过滤器将包含两个值:true 和 false。 值 true 是列表中的第一个值。 这些值用在命令行中指定值。 相关示例,请参阅添加字段和用于 field_is_nullable 参数的 {NULLABLE | NON_NULLABLE} 关键字。
工作空间
工作空间过滤器用于指定允许的输入工作空间的类型。 三个值如下所示:
- 文件系统 - 系统文件夹,用于存储 shapefile、coverage、INFO 表和格网
- 本地数据库 - 个人地理数据库或文件地理数据库
- 远程数据库 - 企业级数据库连接
可以提供多个值。
依赖关系
依赖关系属性有两种用途:
- 对于派生的输出参数,可将依赖关系设置为将通过工具修改的输入参数。 有关派生数据和依赖关系过滤器的详细信息,请参阅以上“类型属性”部分。
- 对于输入参数,依赖关系包含数据类型所使用的其他参数的名称。 例如,对于输入字段数据类型,可将依赖关系设置为包含字段的表参数的名称。
只能为特定输入参数设置依赖关系过滤器,如下表中所示。
输入数据类型 | 获取自数据类型 | 描述 |
---|---|---|
字段或 SQL 表达式 | 表 | 含有字段的表 |
INFO 项目或 INFO 表达式 | INFO 表 | 包含项目的 INFO 表 |
Coverage 要素类 | Coverage | 包含要素的 coverage |
面积单位或线性单位 | 地理数据集 | 用于确定默认单位的地理数据集 |
坐标系 | 工作空间 | 用于确定默认坐标系的工作空间 |
网络分析等级设置 | 网络数据集 | 包含等级信息的网络数据集 |
地统计值表 | 地统计图层 | 包含表的分析图层 |
网络出行模式 | 网络数据源、网络数据集或网络数据集图层 | 出行模式列表 |
对于值表参数,字段列对值表中的第一个数据列具有隐式依赖。 任何后续字段列的参数下拉列表将自动包含数据中的任何可用字段。
符号系统
如果工具的输出为要素集、栅格、TIN 或图层,则可以在符号系统属性中指定图层文件 (.lyrx) 的位置。 当该工具运行并将输出添加至显示时,将使用符号系统图层文件中定义的符号系统进行绘制。
警告:
每次运行工具时都会读取图层文件。 如果未找到图层文件(因为被移动或删除),将使用默认符号系统。