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"
Abbildung
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")