在模型构建器中使用迭代器的示例

迭代器将启用批处理,有助于针对一组输入重复一个过程或一系列过程。

For 循环

For 工具按给定值从起始值迭代至终止值。

在下图中,For 迭代器从值 500 迭代至值 2000,以 500 增量增加。 For 的输出用作缓冲工具中缓冲距离的参数值,而输出名称则按照行内变量替换的形式。

在 ModelBuilder 中使用 For

While 循环

While 工具用于迭代直至条件变为真或条件变为假。

在下图中,模型将选择与感兴趣区域共享边界的所有区块组,计算其总人口并在人口小于阈值处创建图层,例如,某企业试图达到为特定区块组周围的优惠券发放设置人口值。 获取计数工具可用于检查是否存在与创建表视图工具中设置的条件相匹配的任何选择。 While 工具同时确保模型运行直到行计数不为零为止。

在 ModelBuilder 中使用 While

迭代要素选择

迭代要素选择工具迭代要素类中的要素。

在下图中,模型用于计算在五类一级飓风以 100 米宽席卷的行进路径上,“东海岸”有多少土地覆被图区域遭到破坏。 输入要素变量是一个包括周围 100 米宽的缓冲区在内的五类大西洋飓风行进路径的要素类。 输入栅格变量是土地覆被栅格。

迭代要素选择的使用方法

在本例中,飓风的名称被作为执行选择的分组字段,所选要素被作为以表格显示分区统计工具的输入,以便最终生成飓风登陆期间遭受破坏的土地覆被上相关统计数据的输出表。

迭代要素选择工具有两个输出:

  • 所选要素(作为输入与以表格显示分区统计工具连接)。
  • 变量,包含用作输出表变量输出名称中行内变量的要素(基于分组字段)名称。

迭代行选择

迭代行选择工具迭代表中的行。

在下图中,模型可为一天中不同时段(上午、下午、傍晚和夜间)发生的盗窃案件创建标准差椭圆,用以侦查犯罪的基本模式。

迭代行选择的使用方法

输入要素类变量是一个包含犯罪案件点的要素类。 其中包含字段 Crime_Peri(犯罪时段),该字段是指案件发生的时段(字符串 MorningAfternoonEveningNight)。 此字段用作进行选择的分组字段,所选行用于创建输出标准差椭圆。

该工具有两个输出:

  • 包含唯一犯罪时段的所选行的行选择变量。 这些行是方向分布(标准差椭圆)工具的输入。
  • 变量,包含分组字段(Morning、Afternoon、Evening 或 Night)的值。 此值被用作输出标准差椭圆变量的输出名称中的行内变量

迭代字段

迭代字段工具迭代表中的字段。

在下图中,模型使用计算字段工具将多个字段中的空值转换为零。

迭代字段的使用方法

事件要素图层变量具有唯一的字段,该字段按日期统计事件的数量。 一些具有缺失值的字段存储为空值。 在这种情况下,迭代字段工具用于基于通配符和已过滤字段列表的子集过滤日期。 然后每个字段将传递至按属性选择图层工具,然后所选记录将传递到计算字段工具。

该工具有两个输出:

  • 变量作为输入字段名称连接到按属性选择图层工具。
  • 计数变量保留要迭代的字段总数。

迭代字段值

迭代字段值工具迭代字段中的所有值。

在下图中,模型对每个县贫困线以下的人数使用聚类和异常值分析工具,以比较不同距离的结果。 这些距离以 Distance 字段的形式记录在输入表变量中。

迭代字段值的使用方法

请注意,默认情况下,迭代字段值对话框中的唯一值选项被选中,以迭代表中的所有唯一值。 取消选中唯一值选项将迭代字段中的所有值,如果在输入字段中存在重复值,则输出值也会出现重复。

迭代字段值有一个输出:包含字段的值的变量,被用作聚类和异常值分析工具的距离范围或距离阈值变量也可使用行内变量替换来构造输出聚类要素类变量的输出文件名。

迭代多值

迭代多值工具将对值列表进行迭代。

在下图中,模型更改了存储在不同驱动器和工作空间中的多个要素类的地图投影。 投影输出要素类被写入单个输出数据库。

迭代多值的使用方法

此工具有一个输出:值,它是作为输入与投影工具连接的要素类的字符串。

迭代数据集

迭代数据集工具迭代工作空间或要素数据集中的数据集。

在下面的图像中,模型将复制包含于输入数据集变量(工作空间变量)中的所有要素数据集。 已将迭代限制为仅可迭代 FEATURE 数据集类型。

迭代数据集的使用方法

该工具有两个输出:

  • 数据集(Land 和 Transportation)。
  • 名称,用作复制工具的输出中的行内变量 %Name%。

迭代要素类

迭代要素类工具用于对工作空间或要素数据集中的要素类进行迭代。

在下图中,模型将为输入要素类变量中的 BlocksParcels 要素类找到人口密度。

迭代要素类使用方法

已通过选择面要素类型对迭代进行了限制;因此,迭代器仅能对 BlocksParcels 面要素类进行迭代。

该工具有两个输出:

  • 作为输入与添加字段工具连接的输出要素类变量(Blocks 和 Parcels)。
  • 名称变量(在本例中为 Blocks 和 Parcels),可能在其他工具中被用作行内变量 %Name%。

迭代文件

迭代文件工具迭代文件夹中的文件。

在下图中,输入文件夹变量具有要转换为栅格的文本文件列表。 已使用通配符 f* 和文件扩展名 .txt 对迭代进行了限制,因此,它仅能迭代首字母为 f 或 F 的文本文件。

迭代文件的使用方法

该工具有两个输出:

  • 作为输入与 ASCII 转栅格工具连接的文件变量(focaldem1.txtfocaldem2.txtfocaldem3.txt)。
  • 包含文本文件名称的名称变量(focaldem1、focaldem2 或 focaldem3)。 此名称变量以行内变量 %Name% 的形式应用于下一个工具的输出中。

迭代图层

迭代图层工具迭代地图中的图层。

在下图中,输入地图变量显示要投影的图层列表。 迭代仅限于迭代地图中的点要素图层。 使用如果坐标系为工具针对定义的坐标系对迭代图层工具的输出进行测试。 如果图层的坐标系与定义的坐标系不匹配,则 False 变量的输出值会更改为 true,并运行连接的投影工具以将输入图层投影到指定的坐标系。

迭代图层的使用方法

迭代时间

迭代时间工具在日期字段中随时间迭代。

在下面的示例中,输入表包含 1981 年至 2020 年的降水数据,不包括干旱天数。 迭代时间工具使用 Date 字段将输入数据分成一个月的时间片。 从每个月的选定行中,使用汇总统计数据工具计算平均降水量和下雨天数。 计算字段工具用于使用行内变量替换将每次迭代的格式化开始时间值添加到汇总表中。 使用追加工具将每个月的汇总表追加回来生成一个表。

迭代时间的使用方法

迭代栅格数据

迭代栅格工具迭代工作空间中的栅格。

在下图中,模型对格网数据集重新采样并提取一个子集以进行进一步分析。

迭代栅格数据的使用方法

输入栅格变量是包含格网、图像和 .tiff 文件的文件夹。 在本例中,已使用通配符 A* 和栅格类型“格网”对迭代进行了限制,因此,其仅能迭代首字母为 a 或 A 的“格网”类型栅格。

该工具有两个输出:

  • 作为输入与重采样工具连接的输出栅格变量(Aland、Aparcel 和 Aroad)。
  • 名称变量,以行内变量 %Name% 的形式用于重采样提取子集工具的输出名称中。

迭代表

迭代表工具迭代工作空间中的表。

在下图中,模型用于使用土地覆被类型转置每个州的土地覆被表,并汇总每类土地覆被的统计数据(例如总面积)。

迭代表的使用方法

输入工作空间变量是包含表的文件夹。 已使用通配符 L* 和表类型 dBASE 对迭代进行了限制,因此,它仅能迭代首字母为 l 或 L 的 dBASE 表。

该工具有两个输出:

  • 作为输入与数据透视表工具连接的输出表变量(Landcover_Arizona、Landcover_California 和 Landcover_Nevada)。
  • 名称变量,以行内变量 %Name% 的形式用于数据透视表汇总统计数据工具的输出名称中。

迭代工作空间

迭代工作空间工具迭代文件夹中的工作空间。

在下图中,模型使用存储在名为 Arizona 的地理数据库中的栅格创建了镶嵌,该栅格存储在文件夹中。

迭代工作空间的使用方法

已使用通配符 Ar* 和文件地理数据库的工作空间类型对迭代进行了限制,因此,它仅能迭代名称首字母为 Ar 的文件地理数据库。

该工具有两个输出: