了解脚本工具中的验证

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

验证的工作原理

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

验证

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

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

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

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

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

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

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

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

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

相关主题

9/15/2013