Итерирование, также называемое циклами и пакетной обработкой, означает повторение процесса вновь и вновь – то есть некоторую автоматизацию работы. Итерация очень важна, поскольку автоматизация повторяющихся задач способствует уменьшению времени и усилий, необходимых для выполнения задач. Итерация в ModelBuilder позволяет выполнять процесс снова и снова, используя в каждой итерации другие параметры или данные. ModelBuilder также обеспечивает гибкость итерирования, так как модель целиком или единичный инструмент или процесс могут быть выполнены несколько раз.
Примечание:
- Для каждой модели можно использовать только один итератор. Кнопка добавления другого итератора неактивна, если в модели уже есть итератор.
- Если в модель добавлен итератор, все инструменты модели будут повторяться для каждого значения в итераторе. Если вам требуется запустить каждый инструмент модели с итерированными значениями, создайте новую модель и добавьте только итератор и процессы, которые вы собираетесь многократно повторять, сохраните ее и добавьте как инструмент-модель в главную модель. Более подробно о добавлении подмодели в модель.
- Чтобы дать уникальное имя выходным данным инструмента, подключенного к итератору, используйте замену встроенной переменной.
В ModelBuilder есть ряд итераторов, которые можно применять для итерирования различных значений, наборов данных и рабочих областей.
Итератор | Описание |
---|---|
Для (For) | Итерирует определенное число раз. |
Пока | Итерирует, до тех пор пока переменная или условие равны True или False. |
Итерировать выборку объектов | Итерирует все объекты класса объектов или группы объектов, имеющих одинаковые атрибуты. |
Итерировать выборку строк | Итерирует все записи таблицы или группы записей, имеющих одинаковые атрибуты |
Итерировать значения поля | Итерирует все значения в поле. |
Итерировать многозначные | Итерирует все значения в списке входных значений. |
Итерировать наборы данных | Итерирует все наборы данных рабочей области. |
Итерировать классы объектов | Итерирует все классы объектов рабочей области. |
Итерировать файлы | Повторяется в каждом файле папки. |
Итерировать растры | Итерирует все растры в рабочей области. |
Итерировать таблицы | Итерирует все таблицы в рабочей области. |
Итерировать рабочие области | Итерирует все рабочие области, такие как база геоданных, в папке. |
Добавить и применить итератор
Чтобы добавить итератор в модель, щелкните ModelBuilder > Вставка > Итератор и выберите из списка итераторов. Для каждой модели можно использовать только один итератор. Если в модели уже имеется итератор, опции для добавления еще одного итератора будут отключены.
Дважды щелкните элемент итератора для просмотра и изменения его свойств. Все итераторы схожи, однако у некоторых итераторов имеются свойства, отличные от других. Ниже описан широко применяемый итератор Iterate Feature Classes (Итерировать классы объектов).
Элемент | Описание |
---|---|
Рабочая область | Входная рабочая область (например, база геоданных) либо набор пространственных данных. |
Групповой символ | Комбинация символа * и символов поможет вам ограничить результаты. К примеру, A* означает, что будут включены только классы объектов, имеющие названия, начинающиеся с символа A. Этот пункт является необязательным. |
Тип объекта | Фильтр типа объектов, помогающий ограничить результаты. Чаще всего это Point, Line и Polygon. Этот пункт является необязательным. |
Рекурсивный | Определяет, будет ли оператор заходить в подпапки рабочей области. Этот пункт является необязательным. |
Выходной класс пространственных объектов | Выходная переменная, содержащая путь к классу объектов. Эта переменная может быть использована в качестве входной для всех инструментов геообработки, поддерживающих векторные слои или классы объектов. |
Имя | Выходная переменная, содержащая имя выходного класса объектов. Это строка. |
Итерировать классы объектов требует Входной рабочей области (переменная Входные классы объектов (Input Feature Classes) на представленном выше изображении), в которой будут итерированы все хранящиеся там классы объектов. Три дополнительных настройки – Групповой символ, Тип объекта и Рекурсивный – используются для определения, какие классы рабочих областей будут итерированы, а также задают итерирование в подпапках рабочей области.
Итерировать классы объектов имеет две переменные: класс объектов и имя класса объектов. Переменную класса объектов можно подключить к следующему инструменту обработки, а переменную Имя использовать для замены встроенной переменной.
Пример
Ниже представлен пример использования итератора Итерировать классов объектов для проецирования каждого класса пространственных объектов рабочей области в свою проекцию. Имя каждого нового класса объектов, созданного инструментом Проецировать, определяется исходя из входного Имени с использованием замены встроенной переменной. Кроме того, к каждому классу объектов добавляется новое поле. После добавления итератора Итерировать классы объектов в ModelBuilder выполните следующие действия:
- Укажите входную рабочую область, например, базу геоданных, для итерирования всех классов объектов этой области.
- Задайте групповой символ и тип объекта (в этом примере будут включены только классы полигональных объектов, имеющие имя, начинающееся с буквы I).
- Итератор Итерировать классы объектов создает два типа выходных данных: класс объектов (Выходной класс объектов (Output Feature Class)) и имя класса объектов (Имя (Name)). Соедините переменную Выходной класс объектов (Output Feature Class) с инструментом Проецировать для использования ее в качестве входной и примените переменную Имя (Name) и замену встроенной переменной для получения имени каждого выходного класса инструмента Проецировать, совпадающего с именем входного класса. Выходные данные инструмента Проецировать записываются в другую базу геоданных.
- Соедините выходные данные инструмента Проецировать с инструментом Добавить поле, чтобы добавить новое поле.