Интеграция одной модели в другую

Инструменты моделей полностью интегрированы в среду геообработки и могут использоваться аналогично всем инструментам системы или скриптов. Как и все другие инструменты геообработки, инструменты моделей можно запускать из диалогового окна, через скрипты Python, а также добавлять и запускать их в другой модели.

Идея добавления и запуска инструмента одной модели в другой модели иногда называется подмоделью, вложенной моделью или моделью внутри модели. Есть две основные причины для использования такого типа иерархии моделей: упрощение крупной, сложной модели и возможность расширенного использования итераторов модели.

Упрощение крупной, сложной модели

Внедрение инструмента модели в другую модель позволяет разбить крупную, сложную модель на более мелкие элементы, которые более просты в управлении и повторном использовании в других моделях и скриптах. Эти подмодели также можно изменять и заново запускать без необходимости в повторном прогоне всего процесса — если возникла ошибка в одной подмодели, нужно внести исправления только в эту модель, а затем перезапустить единственную модель, а не весь процесс.

Разбиение крупной модели на более мелкие подмодели
Одна крупная модель, которую можно разбить на четыре подмодели и одну основную модель

Показанную выше крупную модель можно разбить на четыре подмодели и одну основную модель. Более мелкие подмодели можно добавить в основную модель и подключить к окончательному процессу. Когда подмодель добавляется в другую модель, окончательный вывод подмодели будет добавлен в качестве выходной переменной.

Добавление подмоделей в основную модель

Расширенное использование итераторов модели

Внедрение инструмента модели в другую модель также обеспечивает возможность расширенного использования итераторов модели. Когда требуется итерирование модели, особые инструменты или процессы, которые необходимо запускать многократно, нужно отделить от инструментов и процессов, запускаемых один раз для каждого рабочего потока. В этой ситуации все инструменты, которые нужно запускать многократно, следует поместить в одну модель с итератором и использовать в качестве подмодели. Инструменты, которые нужно запускать однократно, следует поместить в основную модель, вызывающую подмодель итерации.

В приведенном ниже примере продемонстрирован автоматизированный рабочий поток, объединяющий набор входных данных из базы геоданных. Инструмент Слияние (Merge) допускает использование нескольких классов объектов в качестве входных данных для слияния, но нельзя автоматически добавить все классы объектов из определенной рабочей области. В этом случае итератор модели Итерировать классы объектов (Iterate Feature Classes) можно использовать в комбинации с инструментом Собрать значения (Collect Values) для считывания всех классов объектов в рабочей области и объединения их в одну переменную. Поскольку эти два процесса нужно выполнять многократно (с итерациями), они будут добавлены в подмодель, а инструмент Слияние (Merge), который запускается только один раз, будет добавлен в основную модель и связан с выводом подмодели Итерировать классы объектов (Iterate Feature Classes)/Собрать значения (Collect Values).

Основная модель и подмодель

Ниже приведено пошаговое описание данного полного рабочего потока. Более подробно об используемых ниже терминах и приемах см. в разделе Словарь основных терминов ModelBuilder.

Шаги:
  1. Создайте две модели: основную модель и подмодель, вложенную в основную. Добавьте инструмент Слияние (Merge) в основную модель, а итератор Итерировать классы объектов (Iterate Feature Classes) и инструмент Собрать значения (Collect Values) — в подмодель.
  2. В подмодели настройте рабочую область, содержащую классы объектов, которые необходимо объединить, в качестве входных данных для итератора Итерировать классы объектов (Iterate Feature Classes). Чтобы итерировать только классы точечных объектов, задайте для параметра Тип объектов (Feature Type) в итераторе Итерировать классы объектов (Iterate Feature Classes) значение ТОЧЕЧНЫЕ (POINT).
    Настройка итератора
  3. Свяжите выходную переменную Выходной класс объектов (Output Feature Class) итератора Итерировать классы объектов (Iterate Feature Classes) с инструментом Собрать значения (Collect Values), чтобы выполнять итерирование и сбор каждого класса точечных объектов в рабочей области.
  4. Сделайте переменную входной рабочей области и вывод инструмента Собрать значения (Collect Values) параметрами модели. Задайте для переменной входной рабочей области Входной набор данных (Input Dataset) подходящее и удобное для восприятия имя.
    Настройка подмодели
  5. Сохраните и закройте подмодель, а затем добавьте ее в качестве процесса в основную модель.
  6. Когда подмодель добавляется в основную модель, параметры подмодели автоматически добавляются в основную модель в качестве переменных.
    Добавление подмодели
  7. Задайте выходные переменные подмодели как Входные наборы данных (Input Datasets) инструмента Слияние (Merge). Проверьте правильность пути вывода инструмента Слияние (Merge).
  8. Переименуйте входную переменную подмодели Входной набор данных (Input Dataset) и выходную переменную Результат слияния (Merge Output) инструмента Слияние (Merge). Задайте обе переменные Входной набор данных (Input Dataset) и Результат слияния (Merge Output) в качестве параметров модели.
    Вложенная модель
5/10/2014