Интеграция одной модели в другую
Инструменты моделей полностью интегрированы в среду геообработки и могут использоваться аналогично всем инструментам системы или скриптов. Как и все другие инструменты геообработки, инструменты моделей можно запускать из диалогового окна, через скрипты Python, а также добавлять и запускать их в другой модели.
Идея добавления и запуска инструмента одной модели в другой модели иногда называется подмоделью, вложенной моделью или моделью внутри модели. Есть две основные причины для использования такого типа иерархии моделей: упрощение крупной, сложной модели и возможность расширенного использования итераторов модели.
Упрощение крупной, сложной модели
Внедрение инструмента модели в другую модель позволяет разбить крупную, сложную модель на более мелкие элементы, которые более просты в управлении и повторном использовании в других моделях и скриптах. Эти подмодели также можно изменять и заново запускать без необходимости в повторном прогоне всего процесса — если возникла ошибка в одной подмодели, нужно внести исправления только в эту модель, а затем перезапустить единственную модель, а не весь процесс.
Показанную выше крупную модель можно разбить на четыре подмодели и одну основную модель. Более мелкие подмодели можно добавить в основную модель и подключить к окончательному процессу. Когда подмодель добавляется в другую модель, окончательный вывод подмодели будет добавлен в качестве выходной переменной.
Расширенное использование итераторов модели
Внедрение инструмента модели в другую модель также обеспечивает возможность расширенного использования итераторов модели. Когда требуется итерирование модели, особые инструменты или процессы, которые необходимо запускать многократно, нужно отделить от инструментов и процессов, запускаемых один раз для каждого рабочего потока. В этой ситуации все инструменты, которые нужно запускать многократно, следует поместить в одну модель с итератором и использовать в качестве подмодели. Инструменты, которые нужно запускать однократно, следует поместить в основную модель, вызывающую подмодель итерации.
В приведенном ниже примере продемонстрирован автоматизированный рабочий поток, объединяющий набор входных данных из базы геоданных. Инструмент Слияние (Merge) допускает использование нескольких классов объектов в качестве входных данных для слияния, но нельзя автоматически добавить все классы объектов из определенной рабочей области. В этом случае итератор модели Итерировать классы объектов (Iterate Feature Classes) можно использовать в комбинации с инструментом Собрать значения (Collect Values) для считывания всех классов объектов в рабочей области и объединения их в одну переменную. Поскольку эти два процесса нужно выполнять многократно (с итерациями), они будут добавлены в подмодель, а инструмент Слияние (Merge), который запускается только один раз, будет добавлен в основную модель и связан с выводом подмодели Итерировать классы объектов (Iterate Feature Classes)/Собрать значения (Collect Values).
Ниже приведено пошаговое описание данного полного рабочего потока. Более подробно об используемых ниже терминах и приемах см. в разделе Словарь основных терминов ModelBuilder.
- Создайте две модели: основную модель и подмодель, вложенную в основную. Добавьте инструмент Слияние (Merge) в основную модель, а итератор Итерировать классы объектов (Iterate Feature Classes) и инструмент Собрать значения (Collect Values) — в подмодель.
-
В подмодели настройте рабочую область, содержащую классы объектов, которые необходимо объединить, в качестве входных данных для итератора Итерировать классы объектов (Iterate Feature Classes). Чтобы итерировать только классы точечных объектов, задайте для параметра Тип объектов (Feature Type) в итераторе Итерировать классы объектов (Iterate Feature Classes) значение ТОЧЕЧНЫЕ (POINT).
- Свяжите выходную переменную Выходной класс объектов (Output Feature Class) итератора Итерировать классы объектов (Iterate Feature Classes) с инструментом Собрать значения (Collect Values), чтобы выполнять итерирование и сбор каждого класса точечных объектов в рабочей области.
-
Сделайте переменную входной рабочей области и вывод инструмента Собрать значения (Collect Values) параметрами модели. Задайте для переменной входной рабочей области Входной набор данных (Input Dataset) подходящее и удобное для восприятия имя.
- Сохраните и закройте подмодель, а затем добавьте ее в качестве процесса в основную модель.
- Задайте выходные переменные подмодели как Входные наборы данных (Input Datasets) инструмента Слияние (Merge). Проверьте правильность пути вывода инструмента Слияние (Merge).
- Переименуйте входную переменную подмодели Входной набор данных (Input Dataset) и выходную переменную Результат слияния (Merge Output) инструмента Слияние (Merge). Задайте обе переменные Входной набор данных (Input Dataset) и Результат слияния (Merge Output) в качестве параметров модели.