Итераторы

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

Play Video

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

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

ИтераторОписание

Для

Выполняет итерации с начального до конечного значения данной переменной.

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

Выполняет итерации по разным типам наборов данных в рабочей области.

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

Выполняет итерации для классов пространственных объектов в рабочей области или в наборе классов объектов.

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

Выполняет итерации над объектами в классе пространственных объектов.

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

Выполняет итерации для каждого значения в поле.

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

Выполняет итерацию по полям в таблице.

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

Выполняет итерации над файлами в папке.

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

Выполняет итерации для списка значений.

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

Итерирует слои карты.

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

Выполняет итерации растров в рабочей области.

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

Выполняет итерации для строк в таблице.

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

Выполняет итерации для таблиц в рабочей области.

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

Выполняет итерации с рабочими областями в папке.

Пока

Выполняет итерации до тех пор, пока условие не станет истинным или ложным.

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

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

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

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

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

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

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

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

Тип объекта

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

Рекурсивный

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

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

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

Имя

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

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

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

Пример

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

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