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

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

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

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

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

УтилитаОписание

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

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

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

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

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

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

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

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

Если тип данных соответствует

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

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

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

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

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

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

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

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

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

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

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

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

Инструмент Слияние ветвей объединяет две или более логические ветви модели в одну.

Остановить

Останавливает итерации после того, когда все входные значения оценены по условиям 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, можно использовать инструменты Извлечь свойства растра и Если значение равно.

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

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