摘要
迭代要素选择工具迭代要素类中的要素。
在此工作流中,您将创建一个模型以迭代按要素类(美国各州)中的区域分组的要素,并创建八个要素类(每个组或区域对应一个要素类)。 此外,用于分割要素类的字段值(区域)也被用作输出要素类的名称。 区域名称中包含空格。 例如,太平洋西部地区、中大西洋地区等等。 文件地理数据库中不接受将空格作为有效的文件名字符。 要移除不可接受的空格,将在计算值工具中将迭代器的输出参数值(区域名称)用作行内变量 (%Value%),以便对其进行更改。 最后,将计算值工具的输出用作复制要素工具的输出名称中的行内变量 (%Name%)。 复制要素工具的输出将连接到收集值工具,该工具将收集每次迭代的输出并输出单个多值输出。
先决条件
如果您不熟悉 ModelBuilder,请查看以下主题:
打开工程
下载工程以在此教程中使用。 该工程包括一个输入地理数据库、一个输出地理数据库和一个完成的模型。
- 打开使用迭代要素选择概览页面。
- 单击页面右侧的下载。
- 右键单击下载的 IterateFeatureSelection.zip 文件,然后将其提取到一个方便的位置,例如 C:\Temp
- 在提取的文件夹 IterateFeatureSelection 中,双击 ArcGIS Pro 工程文件 IterateFeatureSelection.aprx。
- 在目录窗格中浏览数据,并在必要时单击工程选项卡。 浏览至 Folders > IterateFeatureSelection。
ToolData.gdb 地理数据库中包含 States 要素类,该要素类将被用作模型的输入。
该模型的输出将被写入 ScratchStates.gdb 地理数据库。
添加工具
您将在 MyProjectTools 工具箱中创建一个模型。 要向模型添加工具,请完成以下步骤:
- 如有必要,在目录窗格中,单击工程选项卡。 浏览至 Folders > IterateFeatureSelection > MyProjectTools。
- 右键单击 MyProjectTools,然后单击新建。 选择模型以创建并打开模型。
- 添加迭代要素选择工具。
- 单击 ModelBuilder 选项卡。
- 在插入组中,单击迭代器 。
- 在迭代器列表中,单击迭代要素选择。
迭代要素选择迭代器随即会添加到模型中。 由于未提供任何参数值,因此迭代器不可用。
- 添加计算值工具。
- 单击 ModelBuilder 选项卡。
- 在插入组中,单击实用程序 。
- 在实用程序列表中,单击计算值。
计算值工具随即会添加到模型中。
- 如上一步中所述,在模型中添加收集值工具。
- 添加复制要素工具。
- 单击模型,然后输入复制要素以打开向模型添加工具对话框。
- 搜索复制要素工具。
- 双击复制要素工具并将其添加到模型。
指定工具参数并连接工具
将工具添加到模型后,您需要为每个工具指定参数。
- 双击迭代要素选择迭代器以打开迭代器的对话框。
- 对于在要素中参数,浏览至 <Your Project Location>\IterateFeatureSelection\ToolData.gdb 并选择 States 要素类。
- 将其余参数留空,然后单击确定。
输入要素类随即作为模型变量添加到模型(深蓝色椭圆)中并更改迭代器的颜色,指示已提供了所需参数且已做好运行准备。
- 右键单击要素选择迭代器,然后单击创建变量 > 从参数 > 按字段分组以将按字段分组参数显示为模型中的变量。
- 双击按字段分组模型变量,然后从下拉列表中选择 Region。
- 单击确定关闭对话框。
Region 字段值将用于为每次迭代选择要素。
- 双击计算值工具以打开该工具的对话框。 对于表达式参数,键入 "%Value%".replace(" ",""),然后将数据类型更改为字符串。
表达式分为以下部分:
- 行内变量替换 %Value%
- 用于替换名称中空格的 Python replace 方法
在运行时,迭代器输出参数(浅蓝色椭圆)的区域名称 %Value% 将被替换为变量的值,例如太平洋西部地区、中大西洋地区等。
- 单击确定关闭对话框。
- 模型构建器 中的各个工具支持等级,且仅在所连接上游工具先运行之后才会运行。 计算值工具将在其表达式中使用迭代器的输出值参数,但如果找不到区域名称,则该工具将不会与该参数连接且运行将会失败。 您希望迭代器在计算值工具运行之前运行,以便可以使用区域名称。 为此,您将在计算值工具上将值变量设置为前提条件。
将鼠标悬停在迭代要素选择工具的输出变量值(浅蓝色椭圆)上。 单击并拖动以绘制连接计算值工具的连接线。 松开鼠标后,单击弹出菜单中的前提条件。
- 右键单击 States 变量(深蓝色椭圆),然后单击重命名。 输入 Input Feature Class 作为新名称。 以类似的方式将迭代器 I_States(绿色椭圆)的输出重命名为 Selected Features,并将计算值工具的输出重命名为 Name。
- 将鼠标悬停在计算值工具输出变量名称(绿色椭圆)上方。 单击并拖动以绘制连接复制要素工具的连接线。 松开鼠标后,单击弹出菜单中的前提条件。
- 双击复制要素工具以打开该工具的对话框。
- 对于输入要素参数,从下拉列表中选择 Selected Features。
- 对于输出要素类参数,浏览至 <Your Project Location>\ScratchStates.gdb 并键入 %Name%。
保留其余的参数默认设置,然后单击确定以关闭复制要素工具对话框。
- 将鼠标悬停在复制要素工具输出变量(绿色椭圆)上方。 单击并拖动以绘制连接收集值工具的连接线。 松开鼠标后,单击弹出菜单中的输入值。
- 重命名所有模型变量,如完成的模型中所示。
- 要排列模型元素,请单击 ModelBuilder 选项卡上的自动布局按钮 ,然后单击适应窗口大小按钮 以将布局最大化到模型窗口的大小。
运行模型
- 右键单击收集值工具的输出,然后单击添加至显示。
输出随即添加到地图中。
- 单击 ModelBuilder 选项卡上的保存按钮 以保存模型。
- 单击 ModelBuilder 选项卡上的运行按钮 以运行模型。
该模型将对 8 组要素进行迭代,并在 ScratchStates.gdb 地理数据库中创建 8 个要素类。
- 关闭模型和 ArcGIS Pro。