If-Else-Bedingungen (Spatial Analyst)

Mit der Spatial Analyst-Lizenz verfügbar.

Mit der Image Analyst-Lizenz verfügbar.

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

Abbildung: If-Else-Bedingungen
OutRas = Con(InRas1, 40, 30, "Value >= 2")

Verwendung

  • Wenn das true-Raster 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 das Eingabe-Bedingungs-Raster (in_conditional_raster in Python) ein Einzelband-Raster ist und Eingabe-Raster oder Eingabe-Wert wenn Bedingung WAHR (in_true_raster_or_constant in Python) oder Eingabe-Raster oder Eingabe-Wert wenn Bedingung FALSCH (optional) (in_false_raster_or_constant in Python) ein konstanter Wert ist, ist die Ausgabe ein Einzelband-Raster.

  • Wenn alle Eingaben Multiband-Raster sind, dann ist auch die Ausgabe ein Multiband-Raster. Das Ausgabe-Raster ist ebenfalls ein Multiband-Raster, wenn "Eingabe-Raster, wenn Bedingung WAHR" oder "Eingabe-Raster, wenn Bedingung FALSCH" (optional) ein konstanter Wert ist. Die Anzahl an Bändern in jeder Multiband-Eingabe muss identisch sein.

  • Das Werkzeug führt den Vorgang für jedes Band aus dem Bedingungs-Raster mit dem entsprechenden Band aus den anderen Eingaben durch. Wenn die Eingabe-Bedingung ein Multiband-Raster ist und "Eingabe-Raster, wenn Bedingung WAHR" bzw. "Eingabe-Raster, wenn Bedingung FALSCH" ein konstanter Wert ist, führt das Werkzeug den Vorgang für jedes Band in der Multiband-Eingabe mit dem konstanten Wert durch.

  • Wenn die Auswertung für den Ausdruck ungleich 0 ist, wird er als "true" behandelt.

  • Wenn für Eingabe-Raster oder Eingabe-Wert, wenn Bedingung FALSCH kein Raster bzw, kein konstanter Wert angegeben wurde, wird den Zellen, die auf Basis dieses Ausdrucks nicht "true" 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".

  • Der Ausdruck verwendet eine SQL-Abfrage. Weitere Informationen zum Erstellen von Abfragen finden Sie in den folgenden Themen:

  • Um eine "{where_clause}" in Python verwenden zu können, muss diese in Anführungszeichen eingeschlossen werden. Zum Beispiel "Value > 5000".

    In der Hilfe erhalten Sie weitere Informationen zum Festlegen einer Abfrage in Python.

  • In Python können Sie die Verwendung einer Where-Klausel ({where_clause}) zur Angabe des Value-Feldes vermeiden, indem Sie stattdessen einen Map Algebra-Ausdruck als in_conditional_raster verwenden.

    Beispielsweise kann der folgende Ausdruck:

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

    wie folgt neu geschrieben werden:

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

    Weitere Informationen finden Sie in den unten aufgeführten Codebeispielen oder unter Erstellen von komplexen Anweisungen in Map Algebra.

  • Die maximale Länge des logischen Ausdrucks ist 4.096 Zeichen.

  • Weitere Informationen zur Geoverarbeitung von Umgebungen mit diesem Werkzeug finden Sie unter Analyseumgebungen und Spatial Analyst.

Syntax

Con(in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
ParameterErklärungDatentyp
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. Ein Beispiel einer where_clause ist "VALUE > 100".

SQL Expression

Rückgabewert

NameErklärungDatentyp
out_raster

Das Ausgabe-Raster.

Raster

Codebeispiel

Con – Beispiel 1 (Python-Fenster)

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, andernfalls 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")
Con – Beispiel 2 (Python-Fenster)

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")
Con – Beispiel 3 (Python-Fenster)

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")
Con – Beispiel 4 (Python-Fenster)

Bei diesem Beispiel werden mehrere Con-Werkzeuge in einem Con verwendet.

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")
Con – Beispiel 5 (eigenständiges Skript)

In diesem Beispiel, ist der Ausgabewert 1, wenn der Wert des Eingabe-Bedingungs-Rasters größer oder gleich 1.500 ist, andernfalls 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"

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

Lizenzinformationen

  • Basic: Erfordert Spatial Analyst oder Image Analyst
  • Standard: Erfordert Spatial Analyst oder Image Analyst
  • Advanced: Erfordert Spatial Analyst oder Image Analyst

Verwandte Themen