Использование логики если-то-иначе (if-then-else) для создания ветвей

Логика если-то-иначе (if-then-else) – это простой, но мощный принцип, позволяющий выполнять различные действия в различных условиях. Логику если-то-иначе (if-then-else) можно объяснить следующим образом: ЕСЛИ условие действительно, выполнить действие; ИНАЧЕ условие недействительно, выполнить другое действие.

Использование логики если-то-иначе (if-then-else) в ModelBuilder

В ModelBuilder логику если-то-иначе (if-then-else) можно реализовать, создав инструмент скрипта, проверяющий наличие определенного условия, а затем выводящий две Булевы переменные, описывающие условия TRUE и FALSE, а также реализующий этот инструмент скрипта в модели. В качестве альтернативы созданию инструмента скрипта можно использовать инструмент Вычислить значение (Calculate Value) для проверки условия и вывода Булево значения.

В модели ниже реализуется инструмент скрипта с именем Проверить систему координат (Check Coordinate System) для использования логики ветвления. Инструмент скрипта выполняет оценку входного набора данных и сообщает, имеет ли набор данных систему координат проекции State Plane или неизвестную систему координат. В модели, если входной набор данных находится в системе координат проекции State Plane, ничего не происходит. Если во входном наборе данных обнаруживается неизвестная система координат, модель определяет систему проекции и проецирует входные данные. Один из ключевых шагов в использовании логики ветвления в ModelBuilder — это задание одного из условных выходных значений в качестве предварительного условия для дальнейшей обработки.

Пример логики если-то-иначе (if-then-else)

Примеры логики если-то-иначе (if-then-else)

В следующем примере кода показывается, как ветвление если-то-иначе (if-then-else) реализовано в инструменте скрипта Проверить систему координат (Check Coordinate System), упомянутом ранее. Скрипт выводит две переменные, одна из которых представляет условие если – IF (TRUE), а другая условие иначе – ELSE (FALSE).

Пример «Проверить систему координат (Check Coordinate System)».

В примере выполняется проверка наличия входных данных в StatePlane, проверка отсутствия файла привязки и наличия файла привязки, отличного от StatePlane.

# Import modules
import arcpy
import sys
import traceback

# Set local variables
prj = "" 
indata = "C:/ToolData/well.shp" 
dsc = arcpy.Describe(indata) 
sr = dsc.spatialReference 
prj = sr.name.lower()

try:
 
   # check if indata is in StatePlane, has no PRJ, or one other than StatePlane
   if prj.find("_stateplane_") > -1:
       # Set the Is Unknown parameter to FALSE, and the Is StatePlane parameter to TRUE
       arcpy.SetParameterAsText(1,"false") #The first parameter refers to the "Is Unknown" variable
       arcpy.SetParameterAsText(2,"true") #The second parameter refers to the "Is StatePlane" variable
       arcpy.AddMessage("Coordinate system is StatePlane") 

   elif prj == "unknown": 
       # Set the Is Unknown parameter to TRUE, and the Is StatePlane parameter to FALSE
       arcpy.SetParameterAsText(1,"true") 
       arcpy.SetParameterAsText(2,"false") 
       arcpy.AddMessage("To continue, first define a coordinate system!") 

   else:
       # Set the Is Unknown parameter to FALSE, and the Is StatePlane parameter to FALSE
       arcpy.SetParameterAsText(1,"false") 
       arcpy.SetParameterAsText(2,"false") 
       arcpy.AddMessage("Coordinate system is not StatePlane or Unknown") 

except Exception as e:
    AddPrintMessage(e[0], 2)

Смотри следующие примеры блогов по использованию логики если-то-иначе (if-then-else) в модели:

5/10/2014