您可为脚本工具对话框提供自定义行为,如启用和禁用参数、提供默认值和更新字符串关键字等。通过添加 Python 代码,您可以进行以下操作:
- 根据其他参数中包含的值来启用或禁用参数。
- 更新参数过滤器。您可以使用字段过滤器来创建 Long 和 Double 等有效字段类型列表。借助字符串过滤器,您可以设置有效关键字的列表,如下所示。共有六种过滤器类型:值列表、范围、要素类、文件、字段和工作空间。
- 提供参数的默认值,如栅格的像元大小。
- 出现在该对话框上的自定义警告和错误消息。
- 将参数放置在不同的类别中。
- 更新在模型构建器中使用的输出数据集的描述。
验证的工作原理
验证通过 Python 代码块执行,地理处理使用此代码块来控制工具对话框和 Python 窗口如何根据用户输入发生变化。系统工具(Esri 提供的工具)能够对用户输入作出响应,然后按照上述说明对工具对话框进行修改。
验证
验证是指检查所有工具参数是否正确,并在发现错误参数时提供有用的消息。验证由以下两部分组成:
- 用户添加的代码。
- 由 ArcGIS 中的地理处理功能执行的自动内部验证(或基本验证)。
内部验证执行以下操作:
- 对于必填参数,检查该参数是否为空(未输入任何内容);如果为空,则在工具对话框上指示需要该值(使用绿色点而非红色 X)。
- 检查用户输入的值的类型是否正确(例如,栅格而非要素类,或字母字符而非数字)。
- 检查过滤器成员资格。即,如果您具有包含 RED、ORANGE 和 YELLOW 等关键字的值列表过滤器,但输入的是 BLUE,则您将收到一条错误消息,因为 BLUE 不在值列表过滤器中。
- 检查输入数据集是否存在。
- 生成输出数据集的默认目录路径。
- 根据特殊对象、方案中包含的一组规则更新输出数据的描述。
- 使用覆盖输出地理处理选项检查输出数据集是否存在。如果数据集存在,且该选项为 false,将出现一条错误;否则,将显示一条警告。
- 如果参数的数据类型为“字段”,则确认该字段是否存在于关联表中。
- 检查并确保输出数据集与输入数据集不同(除非输出是派生值,如添加字段)。
- 对于包含线性和面积单位数据类型的参数,通过在 ArcMap 中检查相应值来设置它们的默认值(如果在 ArcMap 中运行)。
- 如果输出是 coverage、格网或 INFO 表,则检查这些数据集的文件名长度是否超过 13 个字符。
内部验证不执行以下操作(但您可以通过您自己的验证代码完成):
- 根据与其他参数的交互作用更新过滤器。例如,如果您的用户在第一个参数中输入了一个点要素类,则您将需要工具对话框在第三个参数中显示 RED、ORANGE 和 YELLOW。如果输入了面要素类,则需要在第三个参数中显示 BLUE、INDIGO 和 VIOLET。
- 启用或禁用参数。
- 计算默认值。
- 执行任何特定于工具的参数交互。
您所添加的代码按如下方式与内部验证配合工作:
- 您可以提供一组规则,以供内部验证用于更新输出数据集的描述。这些规则包含在方案对象中。
- 您可在进行内部验证开始之前更新过滤器。根据上述示例,如果输入了点要素类,则更新过滤器以包含 RED、ORANGE 和 YELLOW。内部验证会根据过滤器中的值对输入的值进行检查。
如前文所述,您可以通过验证代码来计算默认值、启用和禁用参数以及自定义消息。此类操作不会影响内部验证的结果,只会影响工具对话框的外观。