了解脚本工具中的验证

您可为脚本工具对话框提供自定义行为,如启用和禁用参数、提供默认值和更新字符串关键字等。通过添加 Python 代码,您可以进行以下操作:

  • 更新参数过滤器。您可以使用字段过滤器来创建 LONG 和 DOUBLE 等有效字段类型的列表。借助字符串过滤器,您可以设置有效关键字的列表。过滤器类型包括六种:值列表、范围、要素类、文件、字段和工作空间。
  • 提供参数的默认值,如栅格的像元大小。
  • 出现在该对话框上的自定义警告和错误消息。
  • 根据其他参数中包含的值来启用或禁用参数。
    注:

    禁用某参数时,它会从工具对话框的视图上消失,当重新启用时,该参数会重新显示。您可在多个系统地理处理工具中看到这一影响,例如添加字段工具,在该工具中,是否需要多个参数取决于字段类型。

  • 将参数放置在不同的类别中。类别是带有参数集合的可展开的窗口阴影。

    参数类别

  • 更新在模型构建器中使用的输出数据集的描述。更新描述后,将在运行任何工具之前在模型构建器的后续工具中显示需要处理的数据特征。

验证的工作原理

验证通过 Python 代码块执行,地理处理使用此代码块来控制工具对话框和 Python 窗口如何根据用户输入发生变化。系统工具(Esri 提供的工具)总是能够对用户输入作出响应,然后按照上述说明对工具对话框进行修改。

验证

验证是指检查所有工具参数是否正确,并在发现错误参数时提供有用的消息。验证由以下两部分组成:

  • 您可以通过添加代码完成的部分。
  • ArcGIS 自动为您实现的部分。此验证部分被称为内部验证(或基础验证),因为此部分是地理处理在 ArcGIS 内部实现的基本验证。

首先,了解一下内部验证的作用:

  • 如果某个参数为必填项,则检查该参数是否为空(尚未输入任何内容);如果该参数为空,则将“值必填”的消息提交到工具对话框。
  • 检查用户输入的值是否为正确类型(例如,输入栅格而非要素类,或输入字母字符而非数字)。
  • 检查过滤器成员资格;即,如果您具有包含 RED、ORANGE 和 YELLOW 等关键字的值列表过滤器,而输入为 BLUE,则您将收到一条错误消息,因为无法在值列表过滤器中找到 BLUE。
  • 检查输入数据集是否存在。
  • 生成输出数据集的默认目录路径。
  • 根据特殊对象、方案中包含的一组规则更新输出数据的描述。
  • 根据 overwriteOutput 环境设置检查输出数据集是否存在。如果数据集存在,且 overwriteOutput 为假,将生成一条错误;否则,将生成一条警告。
  • 如果参数属于“字段”数据类型,则检查该字段是否存在于关联表中。
  • 检查并确保输出数据集与输入数据集不相同(除非输出是派生值,如添加字段)。
  • 对于包含线性和面积单位数据类型的参数,通过在 ArcGIS Pro 中检查相应值来设置它们的默认值(如果在 ArcGIS Pro 中运行)。
  • 如果输出是 coverage、格网或 INFO 表,则检查这些数据集的 13 位字符文件名。

内部验证不执行以下操作(但您可以通过您自己的验证代码完成):

  • 根据与其他参数的交互作用更新过滤器。例如,如果您的用户在第一个参数中输入了一个点要素类,则您将需要工具对话框在第三个参数中显示 RED、ORANGE 和 YELLOW。如果输入了面要素类,则需要在第三个参数中显示 BLUE、INDIGO 和 VIOLET。
  • 启用/禁用参数。
  • 计算默认值。
  • 执行任何特定于工具的参数交互。

您所添加的代码按如下方式与内部验证配合工作:

  • 您可以提供一组供内部验证在更新输出数据集的描述时使用的规则。这些规则包含在方案对象中。
  • 您可在进行内部验证开始之前更新过滤器。根据以上示例,如果输入了一个点要素类,则您将更新过滤器以包含 RED、ORANGE 和 YELLOW。内部验证会根据在过滤器中找到的值对用户输入的值进行验证。

您可以通过验证代码来计算默认值、启用和禁用参数以及自定义消息。此类操作不会影响内部验证的结果,只会影响工具对话框的外观。

相关主题


在本主题中
  1. 验证的工作原理