Con (ArcGIS Spatial Analyst)

Synthèse

Exécute une évaluation conditionnelle if/else sur chacune des cellules en entrée d'un raster en entrée.

Pour en savoir plus sur une évaluation conditionnelle à l'aide de l'outil Con

Illustration

Illustration de l’outil Con
OutRas = Con(InRas1, 40, 30, "Value >= 2")

Utilisation

  • Si le raster vrai ou le raster faux en option est à virgule flottante, le raster en sortie l’est également. Si l’expression vraie et le raster faux en option sont des entiers, le raster en sortie est un entier.

  • Si le raster de condition en entrée (in_conditional_raster dans Python) est un raster monocanal et que soit le raster vrai ou la valeur constante en entrée (in_true_raster_or_constant dans Python) soit le raster faux ou la valeur constante en entrée en option (in_false_raster_or_constant dans Python) est une constante, la sortie est un raster monocanal.

  • Si toutes les entrées sont des rasters multicanaux, la sortie est un raster multicanal. Le raster en sortie est également multicanal si l’entrée vraie ou l’entrée fausse facultative est une constante. Le nombre de canaux dans chaque entrée multi-canaux doit être identique.

  • L’outil exécute l’opération sur chaque canal du raster de condition, en utilisant le canal correspondant des autres entrées. Si l’entrée conditionnelle est un raster multicanal et que le raster vrai ou faux en entrée est une constante, l’outil exécute l’opération en utilisant la valeur constante de chaque canal de l’entrée multicanal.

  • Si l’évaluation de l’expression est différente de zéro, elle est traitée en tant que true (vraie).

  • Si aucune valeur de raster faux ou valeur constante en entrée n’est indiquée, la valeur NoData est attribuée aux cellules pour lesquelles l’expression ne produit pas la valeur true (vraie).

  • Si cette valeur NoData n'est pas conforme à l'expression, vous n'obtenez pas la valeur du raster false en entrée. Vous devez donc conserver la valeur NoData.

  • L'expression utilise une requête SQL. Reportez-vous aux rubriques suivantes pour en savoir plus sur la création de requêtes :

  • Pour utiliser une clause {where_clause} dans Python, celle-ci doit être placée entre guillemets. Par exemple, "Value > 5000".

    Vous pouvez consulter l’aide pour obtenir plus d’informations sur la spécification d’une requête dans Python.

  • Dans Python, vous pouvez éviter d’utiliser une clause {where_clause} spécifiant le champ Value en utilisant une expression d’algèbre spatiale comme in_conditional_raster à la place.

    Par exemple, l'expression suivante :

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

    peut être réécrite comme suit :

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

    Pour plus d’informations, reportez-vous aux exemples de code répertoriés ci-dessous ou consultez la rubrique Création d’instructions complexes en algèbre spatiale.

  • La longueur maximale de l'expression logique est de 4 096 octets.

  • Si au moins l'une des entrées correspond à des données raster multidimensionnelles avec le même nombre de variables, l'outil effectue l'opération pour toutes les tranches qui possèdent la même valeur de dimension. La sortie est un raster multidimensionnel au format CRF. Les variables des entrées doivent posséder au moins une dimension en commun et une valeur dimensionnelle en commun à traiter par cet outil ; sinon, une erreur est générée.

    Si deux entrées quelconques sont des rasters multidimensionnels et partagent une variable, mais avec des noms différents, désélectionnez l'environnement de géotraitement Match Multidimensional Variable (Apparier la variable multidimensionnelle) (définissez arcpy.env.matchMultidimensionalVariable = False en Python) avant d'exécuter l'outil.

    Si la valeur Input conditional raster (Raster de condition en entrée) correspond à un raster multidimensionnel et que les paramètres Input true raster or constant value (Raster vrai ou valeur constante en entrée) et Input false raster or constant value (Raster de valeurs fausses ou valeur constante en entrée) sont définis sur des valeurs constantes, l'outil effectue l'opération pour toutes les tranches de toutes les variables à l'aide des valeurs constantes et la sortie correspond à un raster multidimensionnel.

Paramètres

ÉtiquetteExplicationType de données
Raster de condition en entrée

Raster en entrée représentant le résultat vrai ou faux de la condition souhaitée.

Il peut être de type entier ou à virgule flottante.

Raster Layer
Raster vrai ou valeur constante en entrée

Entrée dont les valeurs seront utilisées en tant que valeurs de cellule en sortie si la condition est vraie.

Il peut s’agir d’un raster de type entier ou à virgule flottante ou d’une valeur constante.

Raster Layer; Constant
Raster de valeurs fausses ou valeur constante en entrée
(Facultatif)

Entrée dont les valeurs seront utilisées en tant que valeurs de cellule en sortie si la condition est fausse.

Il peut s’agir d’un raster de type entier ou à virgule flottante ou d’une valeur constante.

Raster Layer; Constant
Expression
(Facultatif)

Expression logique qui détermine lesquelles des cellules en entrée sont vraies ou fausses.

La clause Where suit la forme générale d’une expression SQL. Elle peut être saisie directement, par exemple, VALUE > 100, en cliquant sur le bouton du mode Édition SQL Requête SQL. Si vous êtes en mode Modifier la clause Modifier la clause, vous pouvez commencer à créer l’expression en cliquant sur le bouton Ajouter une clause.

SQL Expression

Valeur renvoyée

ÉtiquetteExplicationType de données
Raster en sortie

Raster en sortie.

Raster

Con(in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
NomExplicationType de données
in_conditional_raster

Raster en entrée représentant le résultat vrai ou faux de la condition souhaitée.

Il peut être de type entier ou à virgule flottante.

Raster Layer
in_true_raster_or_constant

Entrée dont les valeurs seront utilisées en tant que valeurs de cellule en sortie si la condition est vraie.

Il peut s’agir d’un raster de type entier ou à virgule flottante ou d’une valeur constante.

Raster Layer; Constant
in_false_raster_or_constant
(Facultatif)

Entrée dont les valeurs seront utilisées en tant que valeurs de cellule en sortie si la condition est fausse.

Il peut s’agir d’un raster de type entier ou à virgule flottante ou d’une valeur constante.

Raster Layer; Constant
where_clause
(Facultatif)

Expression logique qui détermine lesquelles des cellules en entrée sont vraies ou fausses.

L’expression suit la forme générale d’une expression SQL. Un exemple de where_clause est "VALUE > 100".

SQL Expression

Valeur renvoyée

NomExplicationType de données
out_raster

Raster en sortie.

Raster

Exemple de code

Premier exemple d'utilisation de l'outil Con (fenêtre Python)

Dans cet exemple, la valeur initiale est conservée dans la sortie lorsque la valeur du raster de condition en entrée est supérieure à 2 000. Lorsque ce n’est pas le cas, la valeur NoData s’applique.

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")
Exemple 2 d'utilisation de l'outil Con (fenêtre Python)

Dans cet exemple, la valeur d’origine est conservée dans la sortie à l’exception de la valeur NoData, qui est remplacée par 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")
Exemple 3 d'utilisation de l'outil Con (fenêtre Python)

Dans cet exemple, deux rasters différents sont utilisés pour créer le raster de condition.

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")
Exemple 4 d'utilisation de l'outil Con (fenêtre Python)

Dans cet exemple, plusieurs outils Con sont utilisés dans une condition Con.

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")
Exemple 5 d'utilisation de l'outil Con (script autonome)

Dans cet exemple, lorsque la valeur du raster de condition en entrée est supérieure ou égale à 1 500, la valeur en sortie est 1. Lorsque la valeur est inférieure à 1 500, la valeur en sortie est 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")