迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环或批处理。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在“模型构建器”中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。模型构建器中的迭代操作还具有灵活性,用户可以迭代整个模型,或重复执行单个工具或过程。
注:
- 每个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,那么用于添加迭代器的按钮将不可用。
- 如果模型中添加了一个迭代器,那么模型中的所有工具会对迭代器中的每个值进行迭代。如果您不想对每个被迭代的值运行模型中的每个工具,请另外创建一个模型,使其仅包含迭代器和您想要多次运行的进程,保存模型,并以模型工具的形式将其添加至主模型中。了解有关将子模型添加到模型的信息。
- 要为连接到迭代器的任何工具确定唯一的名称,请使用行内变量替换。
ModelBuilder 中有多个迭代器,可供您针对不同的值、数据集和工作空间进行迭代。
迭代器 | 说明 |
---|---|
For 循环 | 迭代特定次数。 |
While 循环 | 进行迭代直至特定变量或者条件为 True 或 False。 |
迭代要素选择 | 遍历要素类中的每个要素或为具有公共属性的一组要素执行迭代。 |
迭代行选择 | 遍历表中的每个记录或为具有公共属性的一组记录执行迭代。 |
迭代字段值 | 遍历字段中的所有值。 |
迭代多值 | 遍历输入值列表中的所有值。 |
迭代数据集 | 遍历工作空间中的所有数据集。 |
迭代要素类 | 遍历工作空间中的所有要素类。 |
迭代文件 | 遍历文件夹中的所有文件。 |
迭代栅格 | 遍历工作空间中的所有栅格。 |
迭代表 | 遍历工作空间中的所有表。 |
迭代工作空间 | 遍历文件夹中的所有工作空间(例如,地理数据库)。 |
添加并使用迭代器
要向模型添加迭代器,请单击 ModelBuilder > 插入 > 迭代器,然后从迭代器列表中进行选择。每个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,那么用于添加迭代器的选项将不可用。
双击迭代器元素以查看和更改其设置。所有迭代器彼此类似,只是各个迭代器的设置可能有所不同。下面介绍一种常用的迭代器 Iterate Feature Classes。
元素 | 说明 |
---|---|
工作空间 | 输入工作空间(如地理数据库)或要素数据集。 |
通配符 | * 与有助于限制结果的字符的组合。例如,A* 意味着仅包括以 A 开头的要素类。此操作是可选的。 |
要素类型 | 有助于限制结果的要素类型过滤器。最常见的为 Point、Line 和 Polygon。此操作是可选的。 |
递归 | 确定迭代器是否将进入工作空间的子文件夹。此操作是可选的。 |
输出要素类 | 包含要素类路径的输出变量。可将此变量用作接受要素图层或要素类的所有地理处理工具的输入。 |
名称 | 包含要素类名称的输出变量。这是一个字符串。 |
迭代要素类需要一个输入工作空间(在上图中,变量名称为输入要素类),在此可存储要迭代的所有要素类。通配符、要素类型和递归这三个附加设置被用来限制在工作空间中迭代的要素类和控制工作中间中子文件夹的迭代。
迭代要素类具有两个输出变量:要素类和要素类的名称。要素类变量可以连接到下一个工具以执行处理,并且名称变量可用于行内变量替换。
示例
下面的示例使用迭代要素类迭代器来将工作空间中的每个要素类投影到新地图投影。由投影工具创建的每个新要素类的名称是利用行内变量替换在输入 Name 的基础上进行命名的。此外,还会向每个输出要素类添加一个新字段。向“模型构建器”添加迭代要素类迭代器后,请执行以下常规步骤: