Добавление подмодели в модель

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

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

Чтобы добавить подмодель в модель, выполните следующие шаги:

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

    Если у вас уже есть часть модели, который вы хотите превратить в подмодель, можно скопировать и вставить переменные и процессы модели в новую модель или сгруппировать их и использовать команду Сохранить группу как новую модель.

  2. Убедитесь, что вы сохранили модель, когда завершите приведенные выше шаги и будете готовы добавить эту модель в другую.
  3. Отредактируйте или создайте новую основную модель.
  4. Добавьте подмодель в основную модель, используя один из способов добавления инструмента в модель. Необходимо найти подмодель на панели Каталог и перетащить ее в основную модель, если только подмодель не находится в наборе инструментов проекта.

    Параметры входных и выходных данных подмодели в основной модели автоматически превращаются в переменные. Вы можете представить дополнительные параметры подмодели как переменные в модели, щелкнув подмодель правой клавишей и выбрав Создать переменную > Из параметра > <выберите параметр>.

Две основные причины использовать модель в модели следующие:

  • Для упрощения большой, сложной модели и превращения ее в в более мелкие и проще управляемые модели.
  • Для поддержки использования итераторов в пределах одной области более крупной модели.

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

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

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

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

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

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

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

Примечание:

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

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

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

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

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

  1. Создайте две модели: основную модель и подмодель, в которых подмодель добавлена в основную модель. Добавьте инструмент Слияние в основную модель, а итератор Итерировать классы объектов и инструмент Собрать значения – в подмодель.
  2. В подмодели настройте рабочую область, содержащую классы объектов, которые необходимо объединить, в качестве входных данных для итератора Итерировать классы объектов. Чтобы выполнить итерацию только в классах точечных объектов, задайте для параметра Тип объекта итератора Итерировать классы объектов значение ТОЧЕЧНЫЕ.
  3. Свяжите выходную переменную Итерировать классы объектов, Выходной класс объектов с инструментом Собрать значения, чтобы выполнять итерирование и сбор каждого класса точечных объектов в рабочей области.
  4. Сделайте переменную входной рабочей области и вывод инструмента Собрать значения параметрами модели. Задайте для переменной входной рабочей области Входные наборы данных подходящее и удобное для восприятия имя.
    Настройка подмодели
  5. Сохраните и закройте подмодель, а затем добавьте ее в качестве процесса в основную модель. Когда подмодель добавляется в основную модель, параметры подмодели автоматически добавляются в основную модель в качестве переменных.
    Добавление подмодели
  6. Соедините выходную переменную этой подмодели в качестве Входных наборов данных инструмента Слияние. Проверьте правильность пути вывода инструмента Слияние.