Mit der Spatial Analyst-Lizenz verfügbar.
Mit der Image Analyst-Lizenz verfügbar.
Mit dem Werkzeug If-Else-Bedingungen können Sie den Ausgabewert für jede Zelle auf Grundlage dessen steuern, ob der Zellenwert in einer festgelegten Bedingungsanweisung als wahr (true) oder falsch (false) ausgewertet wird.
Wenn die Zelle als "true" ausgewertet wird, erhält sie einen Wert; wenn sie als "false" ausgewertet wird, erhält sie einen anderen Wert. Die Werte, die eine Zelle erhalten soll, wenn sie als "true" ausgewertet wird, werden im Feld Eingabe-Raster order Eingabe-Wert, wenn Bedingung WAHR festgelegt. Die Werte, die eine Zelle erhalten soll, wenn sie als "false" ausgewertet wird, werden im Feld Eingabe-Raster oder Eingabe-Wert, wenn Bedingung FALSCH festgelegt.
Im Grunde untersucht das Werkzeug If-Else-Bedingungen während der Ausführung jede Zellenposition und bestimmt auf Grundlage des Wertes der Zelle und der Bedingungsanweisung, ob die Zelle als "true" oder "false" ausgewertet wird. Wenn die Zelle als "true" ausgewertet wird, wird der Ausgabewert für diese Position in der true-Eingabe identifiziert. Wenn die Zelle als false ausgewertet wird, wird der Ausgabewert für diese Position in der false-Eingabe identifiziert.
In der Geoverarbeitungsumgebung gibt es zwei Möglichkeiten zu identifizieren, ob eine Zellenposition als "true" oder "false" ausgewertet wird: durch ein Eingabe-Raster oder ein Eingabe-Raster, auf das ein optionaler Eingabeausdruck angewendet wird. Wenn nur ein Eingabe-Raster verwendet wird, werden alle Nicht-Null-Werte im Eingabe-Raster als "true" und alle Null-Werte als "false" angesehen. Zellen, denen "NoData" zugewiesen wurde, erhalten "NoData" als Ausgabe. "NoData" ist nicht gleichzusetzen mit "false".
Mit einer Reihe von Spatial Analyst-Werkzeugen kann ein Eingabe-Bedingungs-Raster erstellt werden. Insbesondere die logischen Werkzeuge im Toolset "Mathematik" können verwendet werden, von denen das Werkzeug Test besonders nützlich ist.
Verwenden des Werkzeugs "If-Else-Bedingungen" in Map Algebra
Um eine Bedingungsauswertung eines Raster-Datasets in Map Algebra durchzuführen, geben Sie das Raster-Dataset als Bedingungs-Raster in das Werkzeug If-Else-Bedingungen ein. Geben Sie ein true-Raster ein, um zurückgegebene Werte zu erhalten, wenn die Bedingungsauswertung wahr ist. Geben Sie ein false-Raster ein, um zurückgegebene Werte zu erhalten, wenn die Bedingungsauswertung falsch ist. Der where-Klausel-Parameter definiert den Ausdruck, der gegen das Eingabe-Bedingungs-Raster ausgewertet werden soll.
Beispiel
Nehmen Sie beispielsweise an, dass die Zuweisung des Wertes 10 (angegeben als true-Konstante) bedeuten soll, dass der Bau möglich ist, und die Zuweisung von 1 (angegeben als false-Konstante), dass der Bau nicht möglich ist. Die Zuweisung basiert dabei auf der Neigung einer Zelle (durch das Eingabe-Bedingungs-Raster angegeben), wobei weniger als 15 Prozent Neigung als gut angesehen werden. Somit würden Sie den Ausdruck "value < 15" eingeben. Wenn eine Zelle weniger als 15 Prozent Neigung hat, erhält sie den Wert "true" (in diesem Fall, 10); andernfalls erhält sie den durch "false" identifizierten Wert (in diesem Fall, 1).
OutRas = Con(SlopeRas, 10, 1, "VALUE < 15")
Verwenden von komplexen Ausdrücken mit dem Werkzeug "If-Else-Bedingungen" in Map Algebra
In Map Algebra kann mit dem Ausdruck mehr Funktionalität als mit einer einfachen logischen Bedingung erzielt werden. Bei einem komplexen Ausdruck können Sie z. B. mehrere einzelne Ausdrücke ineinander verschachteln, mehrere Raster angeben oder andere Werkzeuge und Operatoren verwenden.
Jeder gültiger Map-Algebra-Ausdruck, der zu einem Raster führt, kann als Argument für jede der Eingabe-, Bedingungs-, true- oder false-Raster-Eingaben verwendet werden.
Beachten Sie, dass der Parameter <where_clause> ausgelassen werden sollte, wenn der Eingabe-Bedingungs-Raster-Ausdruck in einem komplexen Ausdruck verwendet wird. In diesem Fall hat die Syntax des Werkzeugs If-Else-Bedingungen die folgende verallgemeinerte Form:
Con(in_conditional_raster, true_raster, {false_raster})Der <where_clause>-Parameter wird in diesem Fall ausgelassen, da das Bedingungs-Raster vom Map Algebra-Ausdruck bereitgestellt wird, der ein Raster-Dataset zurückgibt, z. B. mit den Werten 0 und 1, wenn es sich um eine logische Operation handelt.
Beispiele
- Dies ist ein Beispiel der Verwendung eines komplexen Ausdrucks im Werkzeug If-Else-Bedingungen:
Im oben erwähnten Ausdruck wird dieser Zellenposition im Ausgabe-Raster 10 (true) zugewiesen, wenn der Wert einer Zelle in InRas kleiner als 15 ist. Wenn die Zellenwerte größer oder gleich 15 sind, wird im Ausgabe-Raster 1 (false) zugewiesen.OutRas = Con(InRas < 15, 10, 1)
- Wenn kein Wert oder Ausdruck für die false-Ausdrücke angegeben wird:
Die Ergebnisse entsprechen der obigen Ausgabe, mit der Ausnahme, dass den Zellen mit einem Wert größer oder gleich 15 "NoData" zugewiesen wird.OutRas = Con(InRas < 15, 10)
- Jeder gültige Ausdruck kann anstelle eines Wertes für die <true_expression>- und <false_expression>-Argumente verwendet werden.
Im oben aufgeführten Ausdruck werden der Sinus aller Werte größer als 5 und der Kosinus aller Werte gleich oder kleiner 5 berechnet, und die Ergebnisse werden an OutRas gesendet.OutRas = Con(InRas1 > 5, Sin(InRas1), Cos(InRas1))
- Innerhalb des Werkzeugs If-Else-Bedingungen können mehrere Bedingungsanweisungen verwendet werden, aber jede muss über einen Wert oder einen <true_expression>-Ausdruck verfügen, der verwendet werden kann, um den Ausgabezellen Werte zuzuweisen, wenn das Ergebnis der Auswertung für die Bedingung "true" ist. Der optionale Wert oder der Ausdruck {false_expression} kann angewendet werden, wenn keines der Ergebnisse der Auswertungen für die Bedingungen "true" ist.
Im oben aufgeführten Ausdruck wird der Sinus für jene Werte berechnet, die kleiner sind; der Kosinus wird für die Werte berechnet, die gleich oder größer 5 aber kleiner als 20 sind; die Werte, die 20 oder größer, aber kleiner gleich 50 sind, werden 0 zugewiesen, und die Werte größer als 50 werden 100 zugewiesen.OutRas = Con(InRas1 < 5, Sin(InRas1), Con(InRas1 < 20, Cos(InRas1), Con(InRas1 > 50, 100, 0)))
- In einem bedingten Ausdruck des Werkzeugs If-Else-Bedingungen können mehrere Bedingungen verwendet werden.
Im oben aufgeführten Ausdruck wird die Position 5 zugewiesen, wenn der Eingabewert von InRas1 größer als 5 und kleiner als 10 ist; andernfalls wird sie 100 zugewiesen.OutRas = Con((InRas1 > 5) & (InRas1 < 10), 5, 100)
- Werkzeuge und Operatoren können im Bedingungsausdruck auf die Eingabe-Raster angewendet und die Ergebnisse ausgewertet werden.
OutRas = Con(Sin(InRas1) > .5, 10, 100) OutRas2 = Con((InRas1 + InRas2) > 10, 100, 5) OutRas3 = Con(InRas1 > 5, Cos(InRas1), Sin(InRas1))
- Ein If-Else-Bedingungen-Werkzeug kann mit einem anderen If-Else-Bedingungen-Werkkzeug verschachtelt sein.
OutRas = Con(InRas1 > 23, 5, Con(InRas1 > 20, 12, Con((InRas1 > 2) & (InRas1 < 17), Sin(InRas1), 100)))
- Mehrere Raster können in der Bedingungsanweisung oder dem Ausdruck verwendet werden, der für die Zellen durchgeführt werden soll.
Die Eingabe mehrerer Raster ist möglich, da das Werkzeug If-Else-Bedingungen für jede XY-Zellenposition vor dem Übergang zur nächsten Zelle ausgewertet wird. Wenn mehrere Raster eingegeben werden, erfolgt die Verarbeitung des der angegebenen Operators oder des Werkzeugs auf Zellenbasis zwischen den Rastern.OutRas = Con(InRas1 + InRas2 > 7, Sin(InRas1), Cos(InRas2)) OutRas2 = Con(InRas1 < 9, InRas1 * InRas2 + Tan(InRas3), Cos(InRas1))