Доступно с лицензией Spatial Analyst.
Краткая информация
Выполняет для каждой ячейки входного растра оценку по принципу условной выборки.
Более подробно о выполнении условной оценки с помощью инструмента Условие
Иллюстрация
Использование
Если либо растр истинных значений, либо дополнительный ложный растр представлены значениями с плавающей точкой, выходной растр будет содержать значения с плавающей точкой. Если и истинное выражение, и дополнительный ложный растр являются целочисленными, выходной растр также будет целочисленным.
Если оценка выражения отличается от нуля, она рассматривается как Истина.
Если не задано никакого входного ложного растра или постоянного значения, значение 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 символов.
См. раздел Параметры среды анализа и Spatial Analyst для получения дополнительной информации о среде геообработки данного инструмента.
Синтаксис
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 | Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – Истина. Это может быть целочисленный растр или растр с плавающей точкой или константное значение. | Raster Layer; Constant |
in_false_raster_or_constant (Дополнительный) | Входные данные, значения которых будут использоваться в качестве выходных значений ячеек, если условие – Ложь. Это может быть целочисленный растр или растр с плавающей точкой или константное значение. | Raster Layer; Constant |
where_clause (Дополнительный) | Логическое выражение, которое определяет, какие из входных ячеек истинные, а какие ложные. Выражение следует за главной формой выражения 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)
В этом примере несколько инструментов 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")
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"
# 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")
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Требует Spatial Analyst
- ArcGIS Desktop Standard: Требует Spatial Analyst
- ArcGIS Desktop Advanced: Требует Spatial Analyst