If-Else-Bedingungen (Spatial Analyst)
Zusammenfassung
Wertet die einzelnen Eingabezellen eines Eingabe-Rasters anhand von If-Else-Bedingungen aus.
Weitere Informationen zum Durchführen von Bedingungsauswertungen mit "If-Else-Bedingungen"
Bild
Verwendung
-
Wenn das true-Raster und/oder das optionale false-Raster den Typ "Gleitkomma" aufweist, werden auch für das Ausgabe-Raster Gleitkommazahlen verwendet. Wenn sowohl der true-Ausdruck als auch das optionale false-Raster ganzzahlig sind, ist das Ausgabe-Raster ganzzahlig.
-
Wenn die Auswertung für den Ausdruck ungleich 0 ist, wird er als "True" (wahr) behandelt.
-
Wenn kein Eingabe-Raster oder keine Konstante angegeben wird, wird den Zellen, die aus dem Ausdruck nicht "True" (wahr) ergeben, der Wert "NoData" zugewiesen.
-
Wenn "NoData" dem Ausdruck nicht genügt, erhält er nicht den Wert des false-Eingabe-Rasters; es bleibt bei "NoData".
In Python können Sie die Verwendung einer "{where_clause}" zur Angabe des Wertfeldes vermeiden, indem Sie stattdessen einen Map Algebra-Ausdruck als Eingabe-Bedingungs-Raster verwenden.
Beispielsweise kann der folgende Ausdruck:
- Con("elev", 0, 1, "value > 1000")
- Con(Raster("elev") > 1000, 0, 1)
Weitere Informationen finden Sie in den unten aufgeführten Codebeispielen oder unter Erstellen von komplexen Anweisungen.
Um eine "{where_clause}" in Python verwenden zu können, muss diese in Anführungszeichen eingeschlossen werden. Beispiel: "Population > 5000". In der Hilfe erhalten Sie weitere Informationen zum Festlegen einer Abfrage in Python.
-
Die maximale Länge des logischen Ausdrucks ist 4.096 Zeichen.
Syntax
Parameter | Erläuterung | Datentyp |
in_conditional_raster | Eingabe-Raster, das das wahre oder falsche Ergebnis der gewünschten Bedingung darstellt. Das Raster kann ein Ganzzahl- oder Gleitkomma-Raster sein. | Raster Layer |
in_true_raster_or_constant |
Die Eingabe, deren Werte als Ausgabezellenwerte verwendet werden, wenn die Bedingung wahr (true) ist. Das Raster kann ein Ganzzahl- oder Gleitkomma-Raster oder ein konstanter Wert sein. | Raster Layer | Constant |
in_false_raster_or_constant (optional) |
Die Eingabe, deren Werte als Ausgabezellenwerte verwendet werden, wenn die Bedingung falsch (false) ist. Das Raster kann ein Ganzzahl- oder Gleitkomma-Raster oder ein konstanter Wert sein. | Raster Layer | Constant |
where_clause (optional) | Ein logischer Ausdruck, der bestimmt, welche der Eingabezellen wahr (true) und welche falsch (false) sind. Der Ausdruck entspricht der allgemeinen Form eines SQL-Ausdrucks. Lesen Sie die Dokumentation, um weitere Informationen zur SQl-Referenz für in ArcGIS verwendete Abfrageausdrücke und zum Festlegen einer Abfrage in Python zu erhalten. | SQL Expression |
Rückgabewert
Name | Erläuterung | Datentyp |
out_raster |
Das Ausgabe-Raster. | Raster |
Codebeispiel
In diesem Beispiel wird der ursprüngliche Wert in der Ausgabe beibehalten, wenn das Eingabe-Bedingungs-Raster größer als der Wert 2.000 ist, anderenfalls wird der Wert "NoData" verwendet.
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")
In diesem Beispiel wird der ursprüngliche Wert in der Ausgabe beibehalten. Eine Ausnahme ist der NoData-Wert, der durch den Wert 0 ersetzt wird.
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")
In diesem Beispiel werden zwei unterschiedliche Raster verwendet, um das Bedingungs-Raster zu erstellen.
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")
Bei diesem Beispiel werden mehrere Con-Werkzeuge in einem Con verwendet.
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")
In diesem Beispiel, ist der Ausgabewert 1, wenn der Wert des Eingabe-Bedingungs-Rasters größer oder gleich 1.500 ist, anderenfalls wird der Ausgabe-Wert 0 verwendet.
# 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")