了解脚本工具中的验证
您可以为脚本工具对话框提供自定义行为,如启用和禁用参数、提供默认值和更新字符串关键字等。通过添加 Python 代码,您可以进行以下操作:
- 根据其他参数中包含的值来启用或禁用参数。
- 更新参数过滤器。您可以使用字段过滤器来创建 LONG 和 DOUBLE 等有效字段类型的列表。借助字符串过滤器,您可以设置有效关键字的列表,如下所示。共有六种过滤器类型:值列表、范围、要素类、文件、字段和工作空间。
- 提供参数的默认值,如栅格的像元大小。
- 自定义出现在该对话框上的警告和错误消息。
- 将参数放置在不同的类别中。
- 更新在模型构建器中使用的输出数据集的描述。
验证的工作原理
验证通过 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