在模型构建器中,一个流程的输出可以用作先前流程的输入。这种现象称为反馈,因为输出将反馈给先前流程作为输入。
共有两种设置反馈循环的方法:
- 通过变量属性
- 使用连接工具
在下面的示例模型中,在每次模型进行迭代时,缓冲区的输出将反馈回缓冲区作为输入。
通过变量属性
- 选择并右键单击输入变量。
- 在常规选项卡上,从反馈变量下拉列表中选择要用作反馈的变量。
将创建一条从输出变量指向输入变量的蓝色虚线,即反馈连接线。每次工具进行迭代时,输出变量将用作下次迭代的输入。
使用连接工具
- 在模型构建器中单击“连接”工具 。
- 单击要用作反馈的输出并单击输入。
模型即会知道输出正与输入进行连接并将自动创建一条蓝色虚线样式的反馈连接线。每次工具进行迭代时,输出变量将用作下次迭代的输入。
由于每次迭代时模型都生成一个输出数据集,因此确保每次迭代所生成的输出名称唯一十分重要,这样才能避免将之前的迭代输出覆盖。如下例所示,可通过在输出路径后追加行内变量替换来为每次迭代输出指定唯一名称。
限制模型迭代次数
必须设置模型的迭代次数,否则模型将进入一个永不停止的反馈循环。请参见以下示例。
- 要限制模型的迭代次数,请使用 For 迭代器。
- 要多次运行反馈循环,输入合适的起始值、终止值以及步长值。例如,要让模型迭代 4 次,可将起始的起始值设置为 1,结束的终止值设置为 4,而间隔的步长值设置为 1。
- 将 For 工具的输出设置为下一工具的前提条件。这可确保在执行下一工具前迭代次数即已可用。了解有关设置前提条件的详细信息
- 要避免覆盖每次迭代的输出,在输出名称后追加 %Value% 行内变量。运行模型时,%Value% 会替换为来自 For 迭代器的输出参数 Value 的 1、2、3、4 等数字。
- 连接工具输出作为输入反馈,如下例所示,Buffer 的输出连接到 Input 变量作为反馈。
- 此外,将工具输出(示例中的 Output)连接到收集值工具。
- 运行模型。
将 For 的输出设置为其他任何工具的前提条件时,起始值应大于零。如果使用默认值零,则在首次迭代后 For 的输出将设置为零,下游工具将无法运行并显示错误消息:过程未执行,因为前提条件为 false。这是因为零值在模型中解释为 false 前提条件。
如果通过模型工具对话框运行带有反馈循环和行内变量替换的模型,则将模型最终输出连接到收集值仅模型工具,并将收集值工具的输出设置为模型参数。收集值工具不生成任何新输出。相反,它将传递输入作为输出;因此输出在以模型参数方式公开时,并不显示在工具对话框上。如果已在 ArcMap 地理处理 > 地理处理选项下拉菜单中选中将地理处理操作的结果添加到显示中选项,将输出设置为模型参数可确保将结果添加到 ArcMap 显示中。