Пример использования итератора в модели
Чтобы продемонстрировать работу итератора, в примере берется итератор Итерировать классы объектов (Iterate Feature Classes) и при помощи него проецируются все классы пространственных объектов в рабочей области, динамически присваивается имя всем выходным данным инструмента Проецировать (Project) на основе имени входных данных с использованием подстановки встроенной переменной (inline variable substitution) и добавляется новое поле во все классы пространственных объектов.
- Для итератора Итерировать классы объектов (Iterate Feature Classes) указана рабочая область, т. е. область, все классы пространственных объектов в которой следует итерировать.
- Классы объектов для итерации ограничены указанием группового символа и типа объекта (обрабатываться будет только полигональный класс пространственных объектов с именем, начинающимся на I).
- Итерировать классы объектов (Iterate Feature Classes) производит выходные данные двух видов: обработанный класс пространственных объектов и имя класса объектов. Переменная класса пространственных объектов связана в качестве входных данных с инструментом Проецировать (Project), а переменная имени класса объектов используется для подстановки встроенной переменной, чтобы динамически присвоить имена всем выходным данным инструмента Проецировать (Project) с тем же именем входного класса объектов.
- В каждый класс пространственных объектов добавляется новое поле путем подсоединения инструмента Добавить поле (Add Field).
![Пример итератора Пример итератора](002w/GUID-CE224E21-AD90-4DD4-A37E-CFC41594E35A-web.png)
![Примечание Примечание](rsrc/note.png)
- Для каждой модели можно использовать только один итератор. Если в модели уже имеется итератор, опции для добавления еще одного итератора будут отключены.
- Если в модель добавлен итератор, все инструменты модели будут повторяться для каждого значения в итераторе. Если вы не хотите запускать каждый инструмент в модели для каждого значения итерации, создайте субмодель/модель в пределах модели/вложенной модели (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 с действительным уникальным именем, а не с именем переменной:
- Соедините выходные данные, которые вы хотите показывать, с инструментом Собрать значения (Collect Values).
- Щелкните правой кнопкой мыши по выходным данным инструмента Собрать значения (Collect Values) и отметьте опцию Добавить к изображению (Add to Display).
- Если модель запускается в диалоговом окне инструмента модели, сделайте выходное значение Собрать значение (Collect Value) параметром модели, так как только выходные параметры модели можно добавить для отображения.
Связанные темы
9/11/2013