Условие (Spatial Analyst)

Краткая информация

Выполняет для каждой ячейки входного растра оценку по принципу условной выборки.

Более подробно о выполнении условной оценки с помощью инструмента Условие

Иллюстрация

Пример Условия
OutRas = Con(InRas1, 40, 30, "Value >= 2")

Использование

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

  • Если Входной растр, удовлетворяющий условиям (in_conditional_raster в Python) является одноканальным, а также либо Входной растр значения "истина" или константа (in_true_raster_or_constant в Python), либо дополнительный Входной растр значения "ложь" или константа (in_false_raster_or_constant в Python) - константой, выходным будет одноканальный растр.

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

  • Инструмент выполнит операцию для каждого канала растра условия, используя соответствующий канал другого входного растра. Если растр условия многоканальный, а входной растр значения "истина" или "ложь" - константа, инструмент выполнит операцию со значением константы для каждого канала многоканального растра.

  • Если оценка выражения отличается от нуля, она рассматривается как истина.

  • Если не задано никакого Входного растра значения "ложь" или константа, значение NoData будет присвоено тем ячейкам, которым в результате выполнения выражения не присвоено значение Истина.

  • Если ячейка со значением NoData не удовлетворяет выражению условия, она не получает значение входного ложного растра; сохраняется значение NoData.

  • Выражение использует SQL-запрос. Более подробно о создании запросов см. в следующих разделах:

  • Чтобы использовать в языке Python выражение условия {where_clause}, его следует заключить в кавычки. Например, "Value > 5000".

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

  • В Python можно не использовать выражение {where_clause}, которое определяет поле Value, а заменить его на выражение Алгебры карт, такое как in_conditional_raster.

    Например, такое выражение:

    • Con("elev", 0, 1, "value > 1000")

    можно переписать следующим образом:

    • Con(Raster("elev") > 1000, 0, 1)

    Для получения более подробной информации см. примеры кодов ниже или раздел Построить сложные выражения в Алгебре карт.

  • Максимальная длина логического выражения составляет 4096 знаков.

  • Если хотя бы один из входных данных представляет собой многомерные растровые данные с одинаковым количеством переменных, инструмент выполнит операцию для всех срезов с одинаковым значением измерения. Результатом будет многомерный растр в формате CRF. Переменные во входных данных должны иметь по крайней мере одно общее измерение и одно общее значение измерения для обработки этим инструментом, в противном случае произойдет ошибка.

    Если какие-либо два входных параметра являются многомерными растрами и используют одну переменную, но с разными именами, перед запуском инструмента снимите флажок Сопоставить многомерную переменную со средой геообработки (установите arcpy.env.matchMultidimensionalVariable = False в Python).

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

Параметры

ПодписьОписаниеТип данных
Входной растр, удовлетворяющий условиям

Входной растр, представляющий истинный или ложный результат заданного условия.

Может быть целочисленным или с плавающей точкой.

Raster Layer
Входной растр значения "истина" или константа

Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – true.

Это может быть целочисленный растр, растр с плавающей точкой или константное значение.

Raster Layer; Constant
Входной растр значения "ложь" или константа
(Дополнительный)

Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – false.

Это может быть целочисленный растр, растр с плавающей точкой или константное значение.

Raster Layer; Constant
Выражение
(Дополнительный)

Логическое выражение, которое определяет, какие из входных ячеек имеют значения true или false.

Условие Where следует общим правилам построения выражений SQL. Его можно ввести напрямую, например, VALUE> 100, если нажать кнопку перехода в режим Редактирование SQL SQL-запрос. Если вы находитесь в Режиме редактирования условия Редактировать условие, вы можете начать построение выражения, нажав кнопку Режим Добавить условие.

SQL Expression

Возвращаемое значение

ПодписьОписаниеТип данных
Выходной растр

Выходной растр.

Raster

Con(in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
ИмяОписаниеТип данных
in_conditional_raster

Входной растр, представляющий истинный или ложный результат заданного условия.

Может быть целочисленным или с плавающей точкой.

Raster Layer
in_true_raster_or_constant

Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – true.

Это может быть целочисленный растр, растр с плавающей точкой или константное значение.

Raster Layer; Constant
in_false_raster_or_constant
(Дополнительный)

Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – false.

Это может быть целочисленный растр, растр с плавающей точкой или константное значение.

Raster Layer; Constant
where_clause
(Дополнительный)

Логическое выражение, которое определяет, какие из входных ячеек имеют значения true или false.

Выражение следует общим правилам построения выражений SQL. Примером where_clause может быть "VALUE> 100".

SQL Expression

Возвращаемое значение

ИмяОписаниеТип данных
out_raster

Выходной растр.

Raster

Пример кода

Con, пример 1 (окно Python)

В этом примере исходное значение будет сохранено в выходных данных, если входное значение условного растра превышает 2000; значение будет NoData, если это условие не выполняется.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con("elevation", "elevation", "", "VALUE > 2000")
outCon.save("C:/sapyexamples/output/outcon.img")

# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(Raster("elevation") > 2000, "elevation")
outCon2.save("C:/sapyexamples/output/outcon2")
Con, пример 2 (окно Python)

В этом примере исходное значение будет сохранено в выходных данных, кроме значения NoData, которое будет заменено на 0.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con(IsNull("elevation"),0, "elevation")
outCon.save("C:/sapyexamples/output/outcon")
Con, пример 3 (окно Python)

В данном примере два разных растра используются для создания растра, удовлетворяющего условиям.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
inRaster1 = Raster("landuse")
inRaster2 = Raster("landuse2")
outCon = Con(((inRaster1 == 1) & (inRaster2 == 5)), inRaster1 + inRaster2, 99)
outCon.save("C:/sapyexamples/output/outcon")
Con, пример 4 (окно Python)

В этом примере несколько инструментов Условие используются внутри Условия.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
inRas1 = Raster("inRaster")
outCon = Con(inRas1 < 45,1, Con((inRas1 >= 45) & (inRas1 < 47),2, Con((inRas1 >= 47) & (inRas1 < 49),3, Con(inRas1 >= 49,4))))
outCon.save("C:/sapyexamples/output/outcon")
Con, пример 5 (автономный скрипт)

В этом примере, если значение входного условного растра больше или равно 1500, выходное значение будет 1, а если значение входного условного растра меньше 1500, выходное значение будет 0.

# Name: Con_Ex_02.py
# Description: Performs a conditional if/else evaluation 
#              on each cell of an input raster.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = Raster("elevation")
inTrueRaster = 1
inFalseConstant = 0
whereClause = "VALUE >= 1500"

# Execute Con
outCon = Con(inRaster, inTrueRaster, inFalseConstant, whereClause)

# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(inRaster >= 1500, inTrueRaster, inFalseConstant)

# Save the outputs 
outCon.save("C:/sapyexamples/output/outcon")
outCon2.save("C:/sapyexamples/output/outcon2")

Связанные разделы