Логические инструменты ветвления если-то-иначе

Логика если-то-иначе – это принцип, позволяющий выполнять разные действия при различных условиях. Логику если-то-иначе можно объяснить следующим образом: если условие действительно, то выполните действие; иначе выполните другое действие.

В ModelBuilder логику если-то-иначе можно добавить с использованием набора встроенных логических инструментов или с помощью пользовательских функций Python или инструментов-скриптов.

Логические инструменты

Логические инструменты контролируют потоки процессов в модели и активируют логику - если-то-иначе.

Логические инструментыОписание

Если система координат

Определяет, имеют ли входные данные указанную систему координат.

Если данные существуют

Определяет наличие указанных данных.

Если тип данных

Определяет, соответствуют ли входные данные указанному типу.

Если выражение

Оценивает, является ли заданное выражение Python True или False.

Если тип объекта

Определяет, соответствуют ли класс объектов заданному типу объектов.

Если поле существует

Определяет, есть ли во входных данных указанное поле.

Если значение поля равно

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

Если число строк равно

Определяет, соответствует ли число строк и проверок во входных данных заданному значению.

Если выборка существует

Проверяет, включают ли входные данные выборку и выбрано ли определенное количество записей.

Если пространственное отношение

Определяет, есть ли во входных данных заданное пространственное отношение.

Если значение является

Сравнивает входное значение с одним значением, списком или диапазоном значений, используя определенный оператор сравнения.

Слияние ветвей

Выполнить слияние двух или более логических ветвей в одну выходную.

Остановка

Выходит из цикла итерации модели, если для входных значений задано значение true или false. Для набора входных значений итерация продолжается, если все входные значения равны True, и останавливается, если одно из входных значений равно False. Функционально похож на инструмент Пока, но полезен для остановки модели в том случае, если в модели есть один итератор Пока и нельзя добавить дополнительные итераторы.

Более подробно об использовании логических инструментов в ModelBuilder

Python

В дополнение к встроенным логическим инструментам в ModelBuilder вы можете написать ваши собственные функции и инструменты для выполнения ветвления логики если-то-иначе с помощью пользовательских функций Python и инструмента Вычислить значение. Эти функции проверяют условия с помощью разнообразных возможностей Python и выдают результат в виде булевых переменных true или false. Точно также вы можете написать скрипт Python который проверяет условия и выдает результат в виде булевых значений true или false, создать из скрипта инструмент-скрипт геообработки и добавить его в модель.

Понимание условий

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

Запускайте модель только в том случае, если файл существует

В следующем примере используется инструмент Если данные существуют, чтобы проверить наличие данных в определенной рабочей области, и если данные существуют, продолжить выполнение модели запуском следующего инструмента Добавить поле. Если данные не существуют, перед добавлением поля класс пространственных объектов будет скопирован из резервной копии.

Если данные существуют, пример

Запускайте модель только в том случае, если входные данные имеют определенную систему координат

В следующем примере используется инструмент Если система координат соответствует, чтобы проверить, является ли Система координат входного класса пространственных объектов GCS_WGS_1984. Если логический ответ False, модель будет использовать инструмент Проецировать для проецирования входного класса пространственных объектов в GCS_WGS_1984.

Если система координат соответствует, пример

Запускайте модель только в том случае, если входной класс пространственных объектов имеет определенный тип геометрии

В следующем примере используется инструмент Если тип объекта, который проверяет, является ли типом объекта входных данных тип Точка. Если логический ответ True, запускается следующий инструмент Добавить местоположения. Если логический ответ False, будет осуществлена конвертация Объектов в точку и после этого запущен инструмент Добавить местоположение. Инструмент Слияние ветвей объединяет ветви True и False, чтобы инструмент Расчет запускался и для одной, и для другой ветви.

Если тип объекта соответствует, пример

Изменение значений полей на основе условия

В следующем примере используется инструмент Если значение поля равно, чтобы проверить, есть ли во входном классе объектов какие-либо записи со значением поля Type, равным A. Если логический ответ True, объекты типа A выбираются при помощи инструмента Выбрать в слое по атрибуту и затем в поле Description при помощи инструмента Вычислить поле изменяются значения.

Если значение поля равно, пример

Запускайте модель только в том случае, если в результате SQL-запроса будут выбраны какие-либо объекты

В следующем примере используется инструмент Если выборка существует, чтобы проверить, есть ли во входном классе объектов выбранные объекты. Если логический ответ True, необходимо использовать инструмент Вычислить поле для вычисления значений поля Description. Если логический ответ False, необходимо использовать инструмент Выбрать в слое по атрибуту, чтобы сделать выборку и изменить значения поля.

Если выборка существует, пример

Запускайте модель только в том случае, если входные данные относятся к определенному типу данных

В следующем примере используется инструмент Анализировать путь, чтобы получить информацию о расширении файла. Инструмент Если значение равно проверяет, соответствует ли расширение параметру Значения. Модель копирует только растровые данные с расширением .tif.

Если значение равно, пример

Выполнение логической оценки растра

Инструменты Тест, Условие, Больше чем и Калькулятор растра могут использоваться для выполнения логической оценки растра. В следующем примере, ячейкам со значениями больше 2000, присваивается значение 1 (True), в противном случае 0 (False).

Оценка растра True или False

Выполнение условной оценки растра

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

Условная оценка растра if...else

Извлечение ячеек из растра с помощью запроса

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

Извлечение растра на основе запроса

Извлечение ячеек из растра с помощью запроса и установки в них значений NoData

Инструменты Установить Null, Переклассифицировать и Калькулятор растра можно использовать для извлечения ячеек из растра и установки в них значений NoData. Если значение ячейки больше 2000, ей будет присвоено значение NoData, в противном случае используется значение входных данных.

Растр устанавливает значения ячеек как NoData.

Извлечение ячеек NoData из растра с помощью запроса и их изменение

Инструменты Равно Null, Условие или Калькулятор растра можно использовать для извлечения ячеек NoData из растра и их изменения. В следующем примере ячейкам со значением NoData присваивается значение 0, в противном случае используется значение входных данных.

Изменение значений ячеек растра NoData.

Запускайте модель только в том случае, если свойство растра соответствует определенному условию

Например, чтобы проверить, превышает ли среднее значение всех ячеек значение 100, можно использовать инструменты Извлечь свойства растра и Если значение равно.

Продолжить или остановить запуск инструмента в модели на основе условия

Инструменты Для и Остановить можно использовать для продолжения или остановки модели на основе условия.