If-Else-Bedingungen (Image 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

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

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 das Eingabe-Bedingungs-Raster (in_conditional_raster in Python) ein Einzelband-Raster ist und das Raster in Eingabe-Raster oder Eingabe-Wert, wenn Bedingung WAHR (in_true_raster_or_constant in Python) oder das optionale Raster in Eingabe-Raster oder Eingabe-Wert, wenn Bedingung FALSCH (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. 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.

  • Wenn beide Eingaben multidimensionale Raster-Daten mit derselben Anzahl an Variablen sind, führt das Werkzeug den Vorgang für alle Ausschnitte mit demselben Dimensionswert durch. Die Ausgabe ist ein multidimensionales Raster im CRF-Format. Die Variablen in den Eingaben müssen mindestens eine gemeinsame Dimension und einen gemeinsamen Dimensionswert enthalten, die von diesem Werkzeug verarbeitet werden sollen. Andernfalls tritt ein Fehler auf.

    Wenn zwei Eingaben multidimensionale Raster mit einer gemeinsamen Variablen, aber unterschiedlichen Namen sind, deaktivieren Sie vor dem Ausführen des Werkzeugs die Einstellung Multidimensionale Variable abgleichen für die Geoverarbeitungsumgebung (durch Festlegen von arcpy.env.matchMultidimensionalVariable = False in Python).

    Wenn der Wert des Eingabe-Bedingungs-Rasters ein multidimensionales Raster ist und die Parameter Eingabe-Raster oder Eingabe-Wert, wenn Bedingung WAHR und Eingabe-Raster oder Eingabe-Wert, wenn Bedingung FALSCH auf konstante Werte festgelegt sind, führt das Werkzeug den Vorgang für alle Ausschnitte und alle Variablen mit den konstanten Werten durch, und die Ausgabe ist ein multidimensionales Raster.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Bedingungs-Raster

Das Eingabe-Raster, das das Ergebnis der gewünschten Bedingung als wahr (true) oder falsch (false) darstellt.

Das Raster kann ein Ganzzahl- oder Gleitkomma-Raster sein.

Raster Layer
Eingabe-Raster oder Eingabe-Wert, wenn Bedingung WAHR

Die Eingabe, deren Werte als Ausgabezellenwerte verwendet werden, wenn die Bedingung wahr (true) ist.

Das Raster kann ein Integer- oder Gleitkomma-Raster oder ein konstanter Wert sein.

Raster Layer; Constant
Eingabe-Raster oder Eingabe-Wert, wenn Bedingung FALSCH
(optional)

Die Eingabe, deren Werte als Ausgabezellenwerte verwendet werden, wenn die Bedingung falsch (false) ist.

Das Raster kann ein Integer- oder Gleitkomma-Raster oder ein konstanter Wert sein.

Raster Layer; Constant
Ausdruck
(optional)

Ein logischer Ausdruck, der bestimmt, welche der Eingabezellen wahr (true) oder falsch (false) sind.

Die Where-Klausel entspricht der allgemeinen Form eines SQL-Ausdrucks. Er kann direkt eingegeben werden, z. B. VALUE > 100, indem Sie auf die Schaltfläche SQL-Bearbeitungsmodus SQL-Abfrage klicken. Im Modus "Klausel bearbeiten" Klausel bearbeiten können Sie mit dem Erstellen des Ausdrucks beginnen, indem Sie auf die Schaltfläche Modus "Klausel hinzufügen" klicken.

SQL Expression

Rückgabewert

BeschriftungErläuterungDatentyp
Ausgabe-Raster

Das Ausgabe-Raster.

Raster

Con(in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
NameErläuterungDatentyp
in_conditional_raster

Das Eingabe-Raster, das das Ergebnis der gewünschten Bedingung als wahr (true) oder falsch (false) 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 Integer- 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 Integer- oder Gleitkomma-Raster oder ein konstanter Wert sein.

Raster Layer; Constant
where_clause
(optional)

Ein logischer Ausdruck, der bestimmt, welche der Eingabezellen wahr (true) oder falsch (false) sind.

Der Ausdruck entspricht der allgemeinen Form eines SQL-Ausdrucks. Ein Beispiel einer where_clause ist "VALUE > 100".

SQL Expression

Rückgabewert

NameErläuterungDatentyp
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 der Wert des Eingabe-Bedingungs-Rasters 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")
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 Werkzeuge If-Else-Bedingungen in einer If-Else-Bedingung 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, 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"

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

Verwandte Themen