Логика если-то-иначе – это принцип, позволяющий выполнять разные действия при различных условиях. Логику если-то-иначе можно объяснить следующим образом: если условие действительно, то выполните действие; иначе выполните другое действие.
В 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).
Выполнение условной оценки растра
Инструменты Условие или Калькулятор растра могут использоваться для условной оценки растра. В следующем примере, если значение ячейки больше 2000, в ней сохраняется исходное значение, в противном случае присваивается значение NoData. Если оставить для инструмента Условие параметр Входной растр значения "ложь" или константа пустым, то значения будут установлены как NoData. При необходимости, вы можете задать другой растр или постоянное значение для параметра Входной растр значения "ложь" или константа.
Извлечение ячеек из растра с помощью запроса
Инструменты Извлечь по атрибуту, Создать растровый слой и Выбрать в слое по атрибуту можно использовать для извлечения ячеек из растра. В следующем примере показаны методы создания растра или растрового слоя со значениями ячеек больше 2000.
Извлечение ячеек из растра с помощью запроса и установки в них значений NoData
Инструменты Установить Null, Переклассифицировать и Калькулятор растра можно использовать для извлечения ячеек из растра и установки в них значений NoData. Если значение ячейки больше 2000, ей будет присвоено значение NoData, в противном случае используется значение входных данных.
Извлечение ячеек NoData из растра с помощью запроса и их изменение
Инструменты Равно Null, Условие или Калькулятор растра можно использовать для извлечения ячеек NoData из растра и их изменения. В следующем примере ячейкам со значением NoData присваивается значение 0, в противном случае используется значение входных данных.
Запускайте модель только в том случае, если свойство растра соответствует определенному условию
Например, чтобы проверить, превышает ли среднее значение всех ячеек значение 100, можно использовать инструменты Извлечь свойства растра и Если значение равно.
Продолжить или остановить запуск инструмента в модели на основе условия
Инструменты Для и Остановить можно использовать для продолжения или остановки модели на основе условия.