操作方法

操作方法:在 ModelBuilder 中使用要素集时限制创建要素

Last Published: April 25, 2020

摘要

在某些情况下,使用要素集运行模型时,需要输入用户创建的交互式要素。 问题在于,模型的创建者通常希望限制用户的输入数量,使其不超出要求的最小或最大输入数量。

此解决方案不会通过错误弹出窗口或警告来阻止用户选择超出 要求的最小或最大输入数量,而是在没有输出的情况下运行模型。

过程

在示例场景中,用户在其模型中已拥有一个使用要素集的模型,该模型通过使用要素集(新学校位置)的交互功能添加位置来附加学校要素类(现有学校),模型创建者希望限制模型用户一次输入的点不能超过两个。

以下是 完成的模型 - 此处使用示例数据为例,仅需 获取计数 和 计算值 部分。

由于 要素集 (因为其为工具的输入)已经是要修改的模型的一部分:

  1. 插入 获取计数 工具作为“计算值” 工具的前提条件。
  2. 插入计算值 工具作为 要素集 在原始模型中将连接到的工具(在本例中为附加工具)的前提条件。
  3. 添加 获取计数 工具,将工具 要素集 作为输入,确保将输出变量重命名为 rowcount (该操作非常重要,因为此输出将用于 计算值 表达式/代码块)。
  4. 添加 计算值 工具(仅限于 ModelBuilder 工具),位于 ModelBuilder > 插入 > 仅模型工具 > 计算值。 设置获取计数输出作为计算值的前提条件,因为我们需要首先运行获取计数工具,以计算向内存表中添加的要素数量。
  5. 右键单击并打开计算值工具以修改表达式和代码块。 代码如下所示:

表达式:

countRows("%rowcount%")

代码块(可选):

def countRows(RowCount):
    import arcpy
    if %RowCount% == 2: # feature restriction number
        return "true"
else:
       return "false"

简言之,这段代码着眼于 获取计数 工具的输出(即添加到内存表的行;如果添加一个要素,则为 1 行;如果添加两个要素,则为 2 行,依此类推)。 对于当前情景, 我们使用值 2, 由此当模型用户单击两个 新的学校位置时,该工具将在内存表中创建两个要素。 (由于您的环境/模型参数/等可能具有不同的要求,因此上述情景可能会有所不同。 此模型使用了点要素,而您可能正在使用线要素。)

  1. 设置 计算值 工具的输出作为 当前模型的第一个工具(在此情景中,已连接 要素集作为附加工具的输入)的前提条件。

运行时,该工具 仅在您选择了两个点时正常工作。 否则,该工具 提供一条信息性消息,指示: “由于前提条件为 false,因此未执行进程。”
当未满足“计算值”工具的 IF 语句时,将创建错误前提条件,这意味着输入的选项并非 两个。

无论用户是否选择所需的输入量,该模型都会运行为 “已完成”, 因为“计算值”工具将输出一个布尔值,即 true 或 false。

文章 ID:000019731

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

发现关于本主题的更多内容