Циклы с обратной связью

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

Создание цикла обратной связи

Цикл обратной связи можно создать, соединив выходные данные переменной одного процесса со входной переменной того же самого процесса. Чтобы создать такое соединение, щелкните и задержите левую кнопку на выходной переменной, переместите курсов ко входной переменной, а затем отпустите левую кнопку, когда курсор находится над входной переменной. Модель поймет, что если выходные данные соединены со входными, то это обратная связь, и автоматически создаст пунктирную линию соединителя обратной связи. На каждой итерации выходная переменная будет использована в качестве входной для следующей итерации.

Поскольку модель создает на каждой итерации один выходной набор данных, необходимо, чтобы выходные имена были уникальными: в этом случае выходные данные предыдущей итерации не будут перезаписаны. Чтобы присвоить уникальные имена выходным наборам данных, получаемым на каждой итерации, можно добавить к выходному пути подстановку встроенной переменной, как показано в приведенном ниже примере.

Пример:

В приведенном ниже примере показан инструмент Буфер с обратной связью, позволяющий итерациями создавать несколько колец буферов.

Использование цикла обратной связи
Инструмент Буфер с обратной связью
  1. Чтобы запустить цикл с обратной связью определенное число раз, используйте итератор Для (For). Введите подходящие числа От значения (From Value), До значения (To Value) и По значению (By Value). Например, чтобы выполнить 4 цикла итераций модели установите для параметра От значения (From Value) значение 1, для параметра До значения (To Value) значение 4 и значение интервала равное 1 для параметра По значению (By Value).
  2. Задайте выходное значение инструмента Для (For) как предварительное условие для следующего инструмента. Благодаря этому количество итераций для следующего инструмента уже будет задано.
  3. Во избежание перезаписи выходного значения после каждой итерации добавьте после выходного имени встроенную переменную %Value%. При выполнении модели вместо переменной %Value% подставится число, которое берется из выходного значения параметра Значение (Value) в итераторе Для (For).
  4. Соедините выходные данные инструмента Буфер и переменную Входные данные (Input) в качестве обратной связи так, чтобы предыдущий буфер использовался в качестве входных данных на следующей итерации.
  5. Соедините выходные данные инструмента Буфер с инструментом Собрать значения.
  6. Если вы хотите запустить модель с обратной связью на панели Геообработка, последние выходные данные необходимо соединить с инструментом Собрать значения. Сделайте выходные данные инструмента Собрать значения параметром модели, чтобы выходные данные обратной связи добавились на карту.
  7. Запустите модель.