Краткий обзор использования итераторов

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

Итератор

Описание

For (Для)

Выполняет итерации с начального до конечного значения данной переменной. Он работает так же, как и оператор For в любом языке программирования/написания скриптов, выполняя итерацию заданное число раз.

While (Пока)

Работает точно так же, как While в любом другом языке программирования/написания скриптов и выполняется, пока условие является истинным.

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

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

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

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

Iterate Field Values (Итерировать значения поля)

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

Iterate Multivalue (Итерировать многозначные)

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

Iterate Datasets (Итерировать наборы данных)

Выполняет итерации для каждого набора данных в Рабочей области (Workspace) или в Наборе классов объектов (Feature Dataset).

Iterate Feature Classes (Итерировать классы объектов)

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

Iterate Files (Итерировать файлы)

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

Iterate Rasters (Итерировать растры)

Выполняет итерации для растров в Рабочей области (Workspace) или в Каталоге растров (Raster Catalog).

Iterate Tables (Итерировать таблицы)

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

Iterate Workspaces (Итерировать рабочие области)

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

Работа с итераторами

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

Работа с итераторами

Для итератора Iterate Feature Classes (Итерировать классы объектов) требуется Входная рабочая область (Input Workspace), в которой хранятся все классы объектов, подлежащие итерации. Для наложения ограничений на то, какие классы объектов в рабочем пространстве подлежат применению итераций, используются два дополнительных параметра, Групповой символ (Wildcard) и Тип Объекта (Feature Type):

Параметр Рекурсивный (Recursive) используется для управления итерацией по классам объектов в пределах вложенных папок в рабочем пространстве.

Iterate Feature Classes (Итерировать классы объектов) имеет две выходные переменные: выходной класс пространственных объектов и имя класса объектов. Выходной класс объектов может быть подключен к следующему инструменту для обработки, а переменная Имя (Name) может использоваться для подстановки встроенной переменной. Например, если бы инструмент Буфер (Buffer) был добавлен к модели, а переменная Класс объектов (Feature Class) была подключена к инструменту, то произошла бы буферизация каждого класса пространственных объектов в рабочем пространстве.

Вход и выход итератора

Ниже приведен список итераторов и показаны их входные и выходные данные. Ряд итераторов имеет в качестве второго выхода «Значение (Value)» или «Имя (Name)», что может использоваться для подстановки встроенной переменной.

Итератор

Входные данные

Результат 1

Результат 2

For (Для)

Значения

Значение

-

While (Пока)

Значения

Булевы значения True или False

-

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

Пространственные объекты

Пространственный объект

Значение

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

Таблица

Запись

Значение

Iterate Field Values (Итерировать значения поля)

Таблица

Значение поля

-

Iterate Multivalue (Итерировать многозначные)

Значения

Значение

-

Iterate Datasets (Итерировать наборы данных)

Рабочая область или Набор классов объектов

Набор данных

Имя

Iterate Feature Classes (Итерировать классы объектов)

Рабочая область или Набор классов объектов

Класс объектов

Имя

Iterate Files (Итерировать файлы)

Папка

Файл

Имя

Iterate Rasters (Итерировать растры)

Рабочая область или каталог растров

Набор растровых данных

Имя

Iterate Tables (Итерировать таблицы)

Рабочая область

Таблица

Имя

Iterate Workspaces (Итерировать рабочие области)

Папка

Рабочая область

Имя

ПримечаниеПримечание:

  • Для каждой модели можно использовать только один итератор. Если в модели уже имеется итератор, опции для добавления еще одного итератора будут отключены.
  • Если в модель добавлен итератор, все инструменты модели будут повторяться для каждого значения в итераторе. Если вы не хотите запускать каждый инструмент в модели для каждого значения итерации, создайте субмодель/модель в пределах модели/вложенной модели (sub-model/model within a model/nested model), которая содержит только итератор, и добавьте ее как инструмент модели в основную модель.
  • Если модель, содержащая итератор, экспортируется в скрипт Python, логика циклов не передается. Логику списков Python (Python listing logic) можно добавить в скрипт для достижения подобного эффекта.
  • Использование итератора устанавливает по умолчанию значение -1 в разделе Опции Итератора (Iteration Options) меню Свойства модели (Model Properties), что означает, что модель будет запускаться или неограниченное количество раз или столько раз, сколько задано входных объектов в итераторе, а не какое-то определенное количество раз.
  • Выходные данные любого из инструментов, связанных с итератором, могут иметь (если нужно) уникальное имя для каждой итерации, что предотвращает перезапись на
    • Использование системной переменной %n%, например C:\Scratch\scratch.gdb\output_%n%.
    • Использование выходного Имени (Name) или Значения (Value) итератора, используемого в модели в качестве встроенной переменной, например C:\Scratch\scratch.gdb\output_%Name%, C:\Scratch\scratch.gdb\output_%Value%.
    • Использование любой другой переменной в модели в качестве встроенной переменной; например, если имеется переменная XYZ, имя выходных данных может выглядеть следующим образом: C:\Scratch\scratch.gdb\output_%XYZ%. Эта переменная не должна содержать постоянное значение, это значение должно меняться для каждой итерации; в противном случае файл будет перезаписываться при каждой итерации.
  • Выходные значения инструмента с отмеченной опцией Добавить в отображение добавляются в отображение ArcMap с использованием имени переменной. Если вы хотите добавить выходные данные каждой итерации, чтобы они показывались в ArcMap с действительным уникальным именем, а не с именем переменной:
    1. Соедините выходные данные, которые вы хотите показывать, с инструментом Собрать значения (Collect Values).
    2. Щелкните правой кнопкой мыши по выходным данным инструмента Собрать значения (Collect Values) и отметьте опцию Добавить к изображению (Add to Display).
    3. Если модель запускается в диалоговом окне инструмента модели, сделайте выходное значение Собрать значение (Collect Value) параметром модели, так как только выходные параметры модели можно добавить для отображения.

Прежние версииПрежние версии:

Итераторы заменяют параметр ряда в свойствах модели, которые были доступны до выхода версии ArcGIS 10.

Подробнее

Связанные темы

5/10/2014