Mit der Spatial 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".
Eine Reihe von Spatial Analyst-Werkzeugen kann verwendet werden, um ein Bedingungs-Eingabe-Raster zu erstellen. 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
Wenn Sie zum Beispiel einer Zelle den Wert 10 (identifiziert als true-Konstante) zuweisen möchten, was bedeutet, dass eine Konstruktion möglich ist, und 1 (identifiziert als false-Konstante), was bedeutet, dass eine Konstruktion nicht möglich ist, und dies auf Grundlage der Neigung einer Zelle erfolgen soll (durch das Eingabe-Bedingungs-Raster identifiziert), wobei weniger als 15 Prozent Neigung als gut angesehen werden, 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ückgeben würde, 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 würde dieser Zellenposition (true) im Ausgabe-Raster 10 zugewiesen, wenn der Wert einer Zelle in InRas kleiner als 15 ist; andernfalls, 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 oben aufgeführten Ausgabe, mit der Ausnahme, dass die Zellen, deren Wert höher als 15 ist, "NoData" zugewiesen werden.
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))