Итераторы

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

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

В ModelBuilder есть ряд итераторов, которые можно применять для итерирования различных значений, наборов данных и рабочих областей.

ИтераторОписание
Для (For)

Итерирует определенное число раз.

Пока

Итерирует, до тех пор пока переменная или условие равны True или False.

Итерировать выборку объектов

Итерирует все объекты класса объектов или группы объектов, имеющих одинаковые атрибуты.

Итерировать выборку строк

Итерирует все записи таблицы или группы записей, имеющих одинаковые атрибуты

Итерировать значения поля

Итерирует все значения в поле.

Итерировать многозначные

Итерирует все значения в списке входных значений.

Итерировать наборы данных

Итерирует все наборы данных рабочей области.

Итерировать классы объектов

Итерирует все классы объектов рабочей области.

Итерировать файлы

Повторяется в каждом файле папки.

Итерировать растры

Итерирует все растры в рабочей области.

Итерировать таблицы

Итерирует все таблицы в рабочей области.

Итерировать рабочие области

Итерирует все рабочие области, такие как база геоданных, в папке.

Добавить и применить итератор

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

Дважды щелкните элемент итератора для просмотра и изменения его свойств. Все итераторы схожи, однако у некоторых итераторов имеются свойства, отличные от других. Ниже описан широко применяемый итератор Iterate Feature Classes (Итерировать классы объектов).

Итерировать классы объектов

ЭлементОписание
Рабочая область

Входная рабочая область (например, база геоданных) либо набор пространственных данных.

Групповой символ

Комбинация символа * и символов поможет вам ограничить результаты. К примеру, A* означает, что будут включены только классы объектов, имеющие названия, начинающиеся с символа A. Этот пункт является необязательным.

Тип объекта

Фильтр типа объектов, помогающий ограничить результаты. Чаще всего это Point, Line и Polygon. Этот пункт является необязательным.

Рекурсивный

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

Выходной класс пространственных объектов

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

Имя

Выходная переменная, содержащая имя выходного класса объектов. Это строка.

Итерировать классы объектов требует Входной рабочей области (переменная Входные классы объектов (Input Feature Classes) на представленном выше изображении), в которой будут итерированы все хранящиеся там классы объектов. Три дополнительных настройки – Групповой символ, Тип объекта и Рекурсивный – используются для определения, какие классы рабочих областей будут итерированы, а также задают итерирование в подпапках рабочей области.

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

Пример

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

  1. Укажите входную рабочую область, например, базу геоданных, для итерирования всех классов объектов этой области.
  2. Задайте групповой символ и тип объекта (в этом примере будут включены только классы полигональных объектов, имеющие имя, начинающееся с буквы I).
  3. Итератор Итерировать классы объектов создает два типа выходных данных: класс объектов (Выходной класс объектов (Output Feature Class)) и имя класса объектов (Имя (Name)). Соедините переменную Выходной класс объектов (Output Feature Class) с инструментом Проецировать для использования ее в качестве входной и примените переменную Имя (Name) и замену встроенной переменной для получения имени каждого выходного класса инструмента Проецировать, совпадающего с именем входного класса. Выходные данные инструмента Проецировать записываются в другую базу геоданных.
  4. Соедините выходные данные инструмента Проецировать с инструментом Добавить поле, чтобы добавить новое поле.
Пример итератора