Условие (Con) (Spatial Analyst)
Краткая информация
Выполняет для каждой ячейки входного растра оценку по принципу условной выборки.
Более подробно о выполнении условной оценки с помощью инструмента Условие (Con)
Рисунок
Использование
-
Если либо растр истинных значений, либо дополнительный ложный растр представлены значениями с плавающей точкой, выходной растр будет содержать значения с плавающей точкой. Если и истинное выражение, и дополнительный ложный растр являются целочисленными, выходной растр также будет целочисленным.
-
Если оценка выражения отличается от нуля, она рассматривается как Истина (True).
-
Если не задано никакого входного ложного растра или постоянного значения, значение NoData будет присвоено тем ячейкам, которым в результате выполнения выражения не присвоено значение Истина (True).
-
Если ячейка со значением NoData не удовлетворяет выражению условия, она не получает значение входного ложного растра; сохраняется значение NoData.
В языке Python можно не использовать условие Где ({where_clause}), которое определяет поле значений, а заменить его на выражение Алгебры карт (Map Algebra), такое как Входной растр, удовлетворяющий условиям (Input conditional raster).
Например, такое выражение:
- Con("elev", 0, 1, «Value > 1000»)
- Con(Raster("elev") > 1000, 0, 1)
Для получения более подробной информации см. примеры кодов ниже или Операторы построения комплексов (Building complex statements).
Чтобы использовать в языке Python выражение условия {where_clause} (Где), его следует заключить в кавычки. Например, "Население > 5000 ("Population > 5000"). Дополнительные сведения об указании запроса в Python см. в справке.
-
Максимальная длина логического выражения - 4096 символов.
Синтаксис
Параметр | Объяснение | Тип данных |
in_conditional_raster | Входной растр, представляющий истинный или ложный результат заданного условия. Он может быть целочисленным или с плавающей точкой. | Raster Layer |
in_true_raster_or_constant |
Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие - Истина. Это может быть целочисленный растр или растр с плавающей точкой или константное значение. | Raster Layer | Constant |
in_false_raster_or_constant (дополнительно) |
Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие - Ложь. Это может быть целочисленный растр или растр с плавающей точкой или константное значение. | Raster Layer | Constant |
where_clause (дополнительно) | Логическое выражение, которое определяет, какие из входных ячеек истинные, а какие ложные. Выражение следует за главной формой выражения SQL. Более подробно об основах SQL для выражений запроса, применяемых в ArcGIS и построении запроса в Python см. в документации соответствующих разделов. | SQL Expression |
Возвращено значение
Имя | Объяснение | Тип данных |
out_raster |
Выходной растр. | Raster |
Пример кода
В этом примере исходное значение будет сохранено в выходных данных, где входной условный растр больше значения 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")
В этом примере исходное значение будет сохранено в выходных данных, кроме значения «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")
В данном примере два разных растра используются для создания растра, удовлетворяющего условиям.
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 используются внутри Con.
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension = "Spatial"
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")
В этом примере, если значение входного условного растра больше или равно 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"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# 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")