包含一个或多个值的变量称为列表变量。您可以将模型中的一个或多个变量声明为列表变量。要将变量设为列表变量,请执行以下操作:
- 右键单击变量。
- 单击属性。
将弹出输入属性对话框。
- 在常规选项卡的此变量包含下,单击值列表。
打开列表变量时将显示批处理格网,可在其中输入变量值。将列表变量连接到某个工具后,该工具和所有下游流程(依赖于该工具的输出的流程)将针对列表中的每个值分别执行一次。使用列表变量与使用批处理类似,只是您不必为模型中的其他单个值变量提供值。使用列表变量要求您能够熟练使用批处理格网。
示例
本示例将通过简单的裁剪和缓冲区模型来说明列表处理过程,如下所示。
在该示例中,Input Feature 变量已设为列表变量。将 Input Feature 设为列表变量后,Output Clipped Feature 和 Output Buffer Feature 变量自动成为列表变量,因为它们都依赖于 Input Feature 变量。在下面的示例中,已打开裁剪工具且已添加三个输入裁剪要素类。裁剪要素和 XY 容差参数对于第一个像元之外的所有像元均不可用。这是因为 Study Area Clip 变量不是列表变量且 XY 容差参数不具有变量。第一个像元的值将用于所有这三个输入。
模型现在即已准备就绪,可以在 ModelBuilder 中运行。模型将针对包含在输入要素类列表变量中的每个输入分别执行。
对列表使用行内变量替换和填充选项
在模型中创建输出列表变量后,可使用 %i% 在输出名称中进行行内变量替换。使用 %i% 在输出名称的末尾追加列表编号。如果存在许多输入,则为批处理格网中的每个输出定义唯一输出名称将十分繁琐。作为一种解决办法方法,您可以将填充选项与行内变量替换结合使用,如下图所示:
- 双击打开裁剪工具对话框。
- 填入输入要素和裁剪要素参数。
- 在输出要素类中,单击第一个像元,定义输出路径,并在名称中使用 %i%,如上图所示。
- 定义第一个像元的路径和名称后,在像元中单击右键,然后单击填充,如图中编号 2 所示。
这将为所有像元填入相同的路径位置和文件名称,如上图编号 3 所示。将系统变量 %i% 用作行内变量将在输出名称的末尾追加数据在变量中的列表编号,从而确保每个输出都具有唯一名称。输出将命名为 Out0、Out1、Out2,依此类推。