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

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

Расширенное использование итераторов модели
Внедрение инструмента модели в другую модель также обеспечивает возможность расширенного использования итераторов модели. Когда требуется итерирование модели, особые инструменты или процессы, которые необходимо запускать многократно, нужно отделить от инструментов и процессов, запускаемых один раз для каждого рабочего потока. В этой ситуации все инструменты, которые нужно запускать многократно, следует поместить в одну модель с итератором и использовать в качестве подмодели. Инструменты, которые нужно запускать однократно, следует поместить в основную модель, вызывающую подмодель итерации.
В приведенном ниже примере продемонстрирован автоматизированный рабочий поток, объединяющий набор входных данных из базы геоданных. Инструмент Слияние допускает использование нескольких классов объектов в качестве входных данных для слияния, но нельзя автоматически добавить все классы объектов из определенной рабочей области. В этом случае итератор модели Итерировать классы объектов можно использовать в комбинации с инструментом Собрать значения для считывания всех классов объектов в рабочей области и объединения их в одну переменную. Поскольку эти два процесса нужно выполнять многократно (с итерациями), они будут добавлены в подмодель, а инструмент Слияние, который запускается только один раз, будет добавлен в основную модель и связан с выводом подмодели Итерировать классы объектов/Собрать значения.
Ниже приведено пошаговое описание данного полного рабочего потока. Более подробно об используемых ниже терминах и приемах см. в разделе Словарь основных терминов ModelBuilder.
- Создайте две модели: основную модель и подмодель, вложенную в основную. Добавьте инструмент Слияние в основную модель, а итератор Итерировать классы объектов и инструмент Собрать значения – в подмодель.
- В подмодели настройте рабочую область, содержащую классы объектов, которые необходимо объединить, в качестве входных данных для итератора Итерировать классы объектов. Чтобы итерировать только классы точечных объектов, задайте для параметра Тип объектов в Итерировать классы объектов значение POINT.
- Свяжите выходную переменную Выходной класс объектов итератора Итерировать классы объектов с инструментом Собрать значения, чтобы выполнять итерирование и сбор каждого класса точечных объектов в рабочей области.
- Сделайте переменную входной рабочей области и вывод инструмента Собрать значения параметрами модели. Задайте для переменной входной рабочей области Входной набор данных подходящее и удобное для восприятия имя.
- Сохраните и закройте подмодель, а затем добавьте ее в качестве процесса в основную модель.
- Задайте выходные переменные подмодели как Входные наборы данных для инструмента Слияние. Проверьте правильность пути вывода инструмента Слияние.
- Переименуйте входную переменную подмодели Входной набор данных и выходную переменную Результат слияния для инструмента Слияние. Задайте обе переменные Входной набор данных и Результат слияния в качестве параметров модели.
