Skip To Content

迭代器

迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环或批处理。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在“模型构建器”中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。“模型构建器”中的迭代操作还具有灵活性,用户可以迭代整个模型,或重复执行单个工具或过程。

注:
  • 每个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,那么用于添加迭代器的按钮将不可用。
  • 如果模型中添加了一个迭代器,那么模型中的所有工具会对迭代器中的每个值进行迭代。如果您不想对每个被迭代的值运行模型中的每个工具,请另外创建一个模型,使其仅包含迭代器和您想要多次运行的进程,保存模型,并以模型工具的形式将其添加至主模型中。
  • 要为连接到迭代器的任何工具确定唯一的名称,请使用行内变量替换

在“模型构建器”中有十二个迭代器可供您针对不同的值、数据集和工作空间迭代使用。

迭代器说明
For 循环

按指定次数迭代。

While 循环

进行迭代直至特定变量或者条件为 TrueFalse

迭代要素选择

迭代要素类中的每个要素或具有相同属性的一组要素。

迭代行选择

迭代表中的每一条记录或具有相同属性的一组记录。

迭代字段值

迭代字段中的所有值。

迭代多值

迭代输入值列表中的每个值。

迭代数据集

迭代工作空间中的每个数据集。

迭代要素类

迭代工作空间中的每个要素类。

迭代文件

迭代文件夹中的每个文件。

迭代栅格数据

迭代工作空间中的每个栅格。

迭代表

迭代工作空间中的每个表。

迭代工作空间

迭代文件夹中的每个工作空间,如地理数据库。

添加并使用迭代器

要向模型添加迭代器,请单击模型构建器>插入>迭代器,然后从迭代器列表中进行选择。每个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,那么用于添加迭代器的选项将不可用。

双击迭代器元素以查看和更改其设置。十二个迭代器彼此类似,只是各个迭代器的设置可能有所不同。下面介绍一种常用的迭代器 Iterate Feature Classes

迭代要素类

元素说明
工作空间

输入工作空间(如地理数据库)或要素数据集。

通配符

* 与有助于限制结果的字符的组合。例如,A* 意味着仅包括以 A 开头的要素类。此操作是可选的。

要素类型

要素类型过滤器有助于限制结果。最常见的为 PointLinePolygon。此操作是可选的。

递归

确定迭代器是否会进入工作空间的子文件夹。此操作是可选的。

输出要素类

包含要素类路径的输出变量。此变量可用作所有可接受要素图层或要素类的地理处理工具的输入。

名称

包含要素类名称的输出变量。这称为字符串。

迭代要素类需要一个输入工作空间(在上图中,变量名称为输入要素类),在此可存储要迭代的所有要素类。通配符要素类型递归这三个附加设置被用来限制在工作空间中迭代的要素类和控制工作中间中子文件夹的迭代。

Iterate Feature Classes 有两个输出变量:要素类与要素类名称。要素类变量可以连接到下一个工具以执行处理,并且名称变量可用于行内变量替换

示例

下面的示例使用迭代要素类迭代器来将工作空间中的每个要素类投影到新地图投影。由投影工具创建的每个新要素类的名称是利用行内变量替换在输入 Name 的基础上进行命名的。另外,会向每个输出要素类添加一个新字段。向“模型构建器”添加迭代要素类迭代器后,请执行以下常规步骤:

  1. 指定一个输入工作空间,如地理数据库,以迭代该工作空间中的每个要素类。
  2. 指定通配符和要素类型(在示例中,仅包括名称以字母 I 开头的面要素类)。
  3. 迭代要素类生成两项输出:要素类(Output Feature Class)和要素类名称(Name)。将输出要素类变量连接至投影工具以将其用作输入,并使用名称变量和行内变量替换从投影工具中为每个输出命名,使其名称与输入要素类的名称相同。投影工具输出已被写入其他地理数据库。
  4. 投影工具输出连接至添加字段工具来添加一个新字段。
迭代器示例