使用迭代要素选择

汇总

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

用于迭代要素选择的完成的模型

在此工作流中,您将创建一个模型以迭代按要素类(美国各州)中的区域分组的要素,并创建八个要素类(每个组或区域对应一个要素类)。此外,用于分割要素类的字段值(区域)也被用作输出要素类的名称。区域名称中包含空格。例如,太平洋西部地区、中大西洋地区等等。文件地理数据库中不接受将空格作为有效的文件名字符。要移除不可接受的空格,请在计算值工具中将迭代器的输出参数值(区域名称)用作行内变量 (%Value%),以便对其进行更改。最后,将计算值工具的输出用作复制要素工具的输出名称中的行内变量 (%Name%)。复制要素工具的输出将连接到收集值工具,该工具将收集每次迭代的输出并输出单个多值输出。

先决条件

如果您不熟悉 ModelBuilder,请查看以下主题:

打开工程

下载工程以在此教程中使用。该工程包括一个输入地理数据库、一个输出地理数据库和一个完成的模型。

  1. 打开使用迭代要素选择概览页面。
  2. 单击页面右侧的下载
  3. 右键单击下载的 IterateFeatureSelection.zip 文件,然后将其提取到一个方便的位置,例如 C:\Temp
  4. 在提取的文件夹 IterateFeatureSelection 中,双击 ArcGIS Pro 工程文件 IterateFeatureSelection.aprx
  5. 目录窗格中浏览数据,并在必要时单击工程选项卡。浏览至 Folders > IterateFeatureSelection

    ToolData.gdb 地理数据库中包含 States 要素类,该要素类将被用作模型的输入。

    该模型的输出将被写入 ScratchStates.gdb 地理数据库。

添加工具

您将在 MyProjectTools 工具箱中创建一个模型。要向模型添加工具,请完成以下步骤:

  1. 如有必要,在目录窗格中,单击工程选项卡。浏览至 Folders > IterateFeatureSelection > MyProjectTools
  2. 右键单击 MyProjectTools,然后单击新建。选择模型以创建并打开模型。
  3. 添加迭代要素选择工具。
    1. 单击功能区上的 ModelBuilder 选项卡。
    2. 插入组中,单击迭代器 迭代器
    3. 迭代器列表中,单击迭代要素选择

    添加“迭代要素选择”工具

    迭代要素选择迭代器随即会添加到模型中。由于未提供任何参数值,因此迭代器不可用。

  4. 添加计算值工具。
    1. 单击功能区上的 ModelBuilder 选项卡。
    2. 插入组中,单击实用程序 实用程序
    3. 实用程序列表中,单击计算值

    添加“计算值”工具

    计算值工具随即会添加到模型中。

  5. 如上一步中所述,在模型中添加收集值工具。
  6. 添加复制要素工具。
    1. 单击模型,然后输入复制要素以打开向模型添加工具对话框。
    2. 搜索复制要素工具。
    3. 双击复制要素工具并将其添加到模型。

指定工具参数并连接工具

将工具添加到模型后,您需要为每个工具指定参数。

  1. 双击迭代要素选择迭代器以打开迭代器的对话框。
    1. 对于在要素中参数,浏览至 <Your Project Location>\IterateFeatureSelection\ToolData.gdb 并选择 States 要素类。
    2. 将其余参数留空,然后单击确定

    “迭代要素选择”工具对话框

    输入要素类随即作为模型变量添加到模型(深蓝色椭圆)中并更改迭代器的颜色,指示已提供了所需参数且已做好运行准备。

  2. 右键单击要素选择迭代器,然后单击创建变量 > 从参数 > 按字段分组以将按字段分组参数显示为模型中的变量。
    1. 双击按字段分组模型变量,然后从下拉列表中选择 Region
    2. 单击确定关闭对话框。

    “迭代要素选择”工具“按字段分组”设置

    Region 字段值将用于为每次迭代选择要素。

  3. 双击计算值工具以打开该工具的对话框。对于表达式参数,键入 "%Value%".replace(" ",""),然后将数据类型更改为字符串。

    表达式分为以下部分:

    “计算值”工具对话框

    在运行时,迭代器输出参数(浅蓝色椭圆)的区域名称 %Value% 将被替换为变量的值,例如太平洋西部地区、中大西洋地区等。

  4. 单击确定关闭对话框。
  5. ModelBuilder 中的各个工具支持等级,且仅在所连接上游工具先运行之后才会运行。计算值工具将在其表达式中使用迭代器的输出参数,但如果找不到区域名称,则该工具将不会与该参数连接且运行将会失败。您希望迭代器在计算值工具运行之前运行,以便可以使用区域名称。为此,您将在计算值工具上将变量设置为前提条件。

    将鼠标悬停在迭代要素选择工具的输出变量(浅蓝色椭圆)上。单击并拖动以绘制连接计算值工具的连接线。松开鼠标后,单击弹出菜单中的前提条件

    设置“计算值”工具前提条件

  6. 右键单击 States 变量(深蓝色椭圆),然后单击重命名。输入 Input Feature Class 作为新名称。以类似的方式将迭代器 I_States(绿色椭圆)的输出重命名为 Selected Features,并将计算值工具的输出重命名为 Name
  7. 将鼠标悬停在计算值工具输出变量名称(绿色椭圆)上方。单击并拖动以绘制连接复制要素工具的连接线。松开鼠标后,单击弹出菜单中的前提条件
  8. 双击复制要素工具以打开该工具的对话框。
    1. 对于输入要素,从下拉列表中选择所选要素
    2. 对于输出要素类参数,浏览至 <Your Project Location>\ScratchStates.gdb 并键入 %Name%

    “复制要素”工具对话框

    保留其余的参数默认设置,然后单击确定以关闭复制要素工具对话框。

  9. 将鼠标悬停在复制要素工具输出变量(绿色椭圆)上方。单击并拖动以绘制连接收集值工具的连接线。松开鼠标后,单击弹出菜单中的输入值
  10. 重命名所有模型变量,如完成的模型中所示。
  11. 要排列模型元素,请单击 ModelBuilder 选项卡上的自动布局按钮 自动布局,然后单击适应窗口大小按钮 适应窗口大小 以将布局最大化到模型窗口的大小。

运行模型

  1. 右键单击收集值工具的输出,然后单击添加至显示

    输出随即添加到地图中。

  2. 单击 ModelBuilder 选项卡上的保存按钮 保存 以保存模型。
  3. 单击 ModelBuilder 选项卡上的运行按钮 运行 以运行模型。
    “迭代要素选择”模型的输出

    该模型将对 8 组要素进行迭代,并在 ScratchStates.gdb 地理数据库中创建 8 个要素类。

  4. 关闭模型和 ArcGIS Pro