在模型中使用模型

汇总

在模型或嵌套模型中创建模型。该模型将对多个要素类进行迭代和投影,然后将它们合并以创建单个要素类。

完成的模型

当模型的一部分不需要多次运行时,则需要使用嵌套模型。如果模型中添加了一个迭代器,那么系统将针对迭代器返回的每个值运行该模型中的所有工具。在此示例中,您将为每个要素类迭代投影工具;但是,多次运行合并工具没有意义,原因是该工具会将所有投影要素类聚在一起,且仅运行一次即可创建合并输出。因此,合并工具会被添加到运行一次的主模型中,并调用运行多次的子模型。

先决条件

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

打开工程

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

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

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

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

添加工具

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

  1. 目录窗格中,单击工程选项卡。浏览至 Folders > ModelWithinModel > MyProjectTools
  2. 右键单击 MyProjectTools,然后单击新建。选择模型以创建并打开模型。
  3. 单击功能区上的 ModelBuilder 选项卡。在模型组中,单击属性 多面体模型属性。在工具属性对话框上,为名称键入 ProjectMainModel,为标注键入 Project Main-Model
  4. 在功能区上 ModelBuilder 选项卡下的模型组中,单击保存按钮 保存 以保存您的更改。
  5. 创建另一个名称ProjectSubModel标注Project Sub-Model 的模型。
  6. 在 Project Sub-Model 模型中,添加迭代要素类工具。
    1. 单击功能区上的 ModelBuilder 选项卡。
    2. 插入组中,单击迭代器 迭代器
    3. 迭代器列表中,单击迭代要素类

    添加“迭代要素类”工具

    迭代要素类工具随即会添加到 Project Sub-Model 模型中。由于未提供任何参数值,因此迭代器不可用。

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

    添加“收集值”工具

    收集值工具随即会添加到 Project Sub-Model 模型中。

  8. 添加投影工具。
    1. 单击模型,然后直接在模型中键入 Project,以打开向模型添加工具对话框。
    2. 搜索投影工具。
    3. 双击投影工具并将其添加到模型。

指定工具参数并连接工具

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

  1. 双击迭代要素类工具以打开迭代器的对话框。
    1. 对于工作空间或要素数据集参数,浏览至 ToolData.gdb 地理数据库。
    2. 保留其余参数的默认值并单击确定

    “迭代要素类”工具对话框

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

  2. 右键单击迭代器的输出,然后单击重命名。键入 Feature Class 作为名称。
  3. 双击投影工具以打开工具的对话框。
    1. 对于输入数据集或要素类参数,请从下拉列表中选择要素类
    2. 对于输出数据集或要素类参数,浏览至 <Your Project Location>\ScratchCommon.gdb 并键入 %Name%_Projected
    3. 对于输出坐标系参数,请选择投影坐标系 > 美国国家平面 > NAD 1983(米) > NAD 1983 StatePlane Oregon North FIPS 3601(米)
    4. 保留其余参数的默认值,然后单击确定以关闭投影工具对话框。

    投影工具对话框

    警告:

    如果输入要素类具有不同的坐标系,则地理变换可能不适用于所有坐标系,并且可能出现数据投影错误。请注意您的输入坐标系以及适用于它们的地理变换方法。在这种情况下,请使用迭代器的通配符参数有选择地投影要素类。

  4. 将鼠标悬停在投影工具输出变量(绿色椭圆)上方。单击并拖动以绘制连接收集值工具的连接线。松开鼠标后,单击弹出菜单中的输入值

    收集值工具是用于将每次迭代的输出值收集到单个多值输出中的模型实用程序工具。

  5. 右键单击迭代器的输入变量,然后选中参数

    该操作会在变量旁边添加字母 P,以指示该变量是模型参数。

  6. 通过上述方式,根据收集值工具的输出创建模型参数。
  7. 要排列模型元素,请单击 ModelBuilder 选项卡上的自动布局按钮 自动布局,然后单击适应窗口大小按钮 适应窗口大小 以将布局最大化到模型窗口的大小。
  8. 单击 ModelBuilder 选项卡上的保存按钮 保存 以保存模型,然后关闭 Project Sub-Model 模型。
  9. 在 Project Main-Model 模型中,搜索合并工具并将其添加到模型。
  10. 目录窗格中,浏览至您刚刚创建的 Project Sub-Model 模型。将 Project Sub-Model 模型拖动到 Project Main-Model 模型中。

    该子模型随即会添加到主模型中。子模型参数将作为变量添加到主模型(ToolData.gdb 的深蓝色椭圆和输出值的绿色椭圆)中。

  11. 将鼠标悬停在工程子模型输出变量输出值(绿色椭圆)上方。单击并拖动以绘制连接合并工具的连接线。松开鼠标后,单击弹出菜单中的输入数据集

    该操作将在子模型输出和合并工具之间创建连接。

    设置“合并”工具的“输入数据集”参数

  12. 双击合并工具以打开工具的对话框。对于输出数据集参数,浏览至 <Your Project Location>\ScratchCommon.gdb 地理数据库,然后键入 ProjectedFC_Merge。保留字段映射参数的默认值,然后单击确定以关闭对话框。

    设置“合并”工具的“输出数据集”参数

    最好将输入和输出变量名称重命名为更有意义的名称,而非使用默认的变量名称。

  13. 合并工具输出重命名为 Merged Feature Class。重命名其他所有模型变量,如工作流的完成的模型中所示。

运行模型

您将验证并运行模型。您将检查 ScratchCommon.gdb 地理数据库中的输出,并确认投影后所有要素类均已合并。

  1. 右键单击合并工具的输出,然后单击添加至显示

    输出随即添加到地图中。

  2. 单击 ModelBuilder 选项卡上的保存按钮 保存 以保存模型。
  3. 单击 Project Main-Model 选项卡上的运行按钮 运行 以运行模型。

    该模型将运行子模型并对所有要素类进行迭代和投影,然后在 ScratchCommon.gdb 地理数据库中创建输出。收集值工具将收集子模型中的输出,并将数据集传递到合并工具的输入数据集参数。合并工具将运行一次并创建合并输出。

    模型中模型的输出
  4. 关闭模型和 ArcGIS Pro