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