使用迭代器迭代的快速浏览 -(循环)
迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在“模型构建器”中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。“模型构建器”中的迭代操作还具有灵活性,用户可以迭代整个模型,或只是重复执行单个工具或过程。
迭代器 |
描述 |
---|---|
迭代给定值的起始值和结束值。其工作原理与任何脚本/编程语言中 For 的工作原理完全相同,即从头到尾执行固定数量的项目。 | |
与任何脚本/编程语言中“while”的作用完全相同,“while”相应输入或一组输入的条件为 true 或 false 时执行。 | |
迭代要素类中的要素。 | |
迭代表中的行。 | |
迭代字段中的每个值。 | |
迭代值列表。 | |
迭代工作空间或要素数据集中的数据集。 | |
迭代工作空间或要素数据集中的要素类。 | |
迭代文件夹中的文件。 | |
迭代工作空间或栅格数据目录中的栅格数据。 | |
迭代工作空间中的表。 | |
可迭代文件夹中的工作空间。 |
了解迭代器
每种迭代器都有一组不同于其他迭代器的参数,但是所有迭代器工具的整体结构都非常相似。下面介绍一种常用的迭代器 Iterate Feature Classes。
Iterate Feature Classes 需要一个输入工作空间来存储所有需要迭代的要素类。两个附加参数,通配符和要素类型,可用来筛选工作空间中要执行迭代的要素类:
- 使用通配符限制要素类的名称。
- 使用要素类型限制要素类的要素类型:注记、弧、尺寸注记、边、交汇点、标注、线、结点、点、面、区域、路线或控制点。
递归参数用于控制工作空间的子文件夹中的要素类的迭代。
Iterate Feature Classes 有两个输出变量:输出要素类与要素类名称。输出要素类可以连接到下一个工具以执行处理,并且名称变量可以用于行内变量替换。例如,如果“缓冲区”工具被添加到模型上,并且要素类 变量连接到了工具上,那么工作空间中的每个要素类都将得到缓冲处理。
迭代输入与输出
下表列出了各种迭代器及其输入和输出。一些迭代器将“值”或“名称”作为第二个输出,这可用于行内变量替换。
迭代器 |
输入 |
输出 1 |
输出 2 |
---|---|---|---|
值 |
值 |
- | |
值 |
布尔 - True 值或 False 值 |
- | |
要素 |
要素 |
值 | |
表 |
记录 |
值 | |
表 |
字段值 |
- | |
值 |
值 |
- | |
工作空间或要素数据集 |
数据集 |
名称 | |
工作空间或要素数据集 |
要素类 |
名称 | |
文件夹 |
文件 |
名称 | |
工作空间或栅格目录 |
栅格数据集 |
名称 | |
工作空间 |
表 |
名称 | |
文件夹 |
工作空间 |
名称 |
- 每个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,则添加另一个迭代器的选项将不可用。
- 如果模型中已经添加了一个迭代器,那么模型中的所有工具会对迭代器中的每个值进行迭代。如果您不想为每个被迭代的值运行模型中的每个工具,请创建一个只包含迭代器的模型/嵌套模型内的子模型/模型并将其作为模型工具添加到主要模型中。
- 如果将含有迭代器的模型导出为 Python 脚本,则导出的脚本将不包括迭代逻辑。可以将 Python 列表逻辑添加到脚本以获得相似效果。
- 使用迭代器可将模型属性中“迭代选项”的默认值设置为 -1,该值用以表示模型运行的次数无限制,或者表示模型基于迭代器中的输入数而不是设定的次数运行。
- 连接到迭代器的任何工具的输出均可具有(如有必要)每次迭代的唯一名称,以免因
- 使用系统变量 %n%(例如,C:\Sctatch\scratch.gdb\output_%n%)而覆盖。
- 将模型中使用的迭代器的“名称”或“值”输出用作行内变量,例如,C:\Sctatch\scratch.gdb\output_%Name%、C:\Sctatch\scratch.gdb\output_%Value%。
- 将模型中的任何其他变量用作行内变量;例如,如果存在变量 XYZ,则输出的名称可以是 C:\Scratch\scratch.gdb\output_%XYZ%。(此变量不应使用常数值。)
- 在选中添加至显示选项的情况下,使用变量名称将工具输出添加到 ArcMap 的显示画面中。如果要使用实际的唯一输出名称(而不是变量名称)将所有迭代的输出添加到 ArcMap 的显示画面中,请将要显示的输出连接到收集值工具,然后右键单击收集值的输出以选中添加至显示选项。如果从模型工具对话框运行模型,则使收集值的输出成为模型参数,因为只会将输出模型参数添加到显示画面。
迭代器取代了 ArcGIS 10 以前版本的“模型属性”中的“系列”选项。