Arbeiten mit Operatoren in Map Algebra

Mit der Spatial Analyst-Lizenz verfügbar.

Mit der Image Analyst-Lizenz verfügbar.

In Map Algebra werden von Operatoren mathematische Operationen auf Eingabe-Raster und Zahlen angewandt.

Operatoren werden im Allgemeinen zwischen zwei Eingaben (Operanden) platziert, um eine mathematische Operation (z. B. outVar = 3 + 7) auszuführen. In Map Algebra können Operanden Raster oder Zahlen sein. Um einen Operator mit einem Raster zu verwenden, muss es sich bei dem Raster um ein Raster object handeln.

Die Tabelle unten enthält eine Kurzübersicht darüber, wie aktuelle Map Algebra-Operatoren in Bezug auf Python-Operatoren implementiert worden sind.

OperationPython-OperatorMap Algebra-OperatorGeoverarbeitungswerkzeug

Arithmetic

Addition

+

+

Plus

Division

/

/

Divide

Ganzzahldivision

//

//

N.z.

Modulo

%

%

Mod

Multiplikation

*

*

Times

Potenz

**

**

Power

Subtraktion

-

-

Minus

Unäres Minus

-

-

Negate

Unäres Plus

+

+

N.z.

Boolesch

Boolesches And

N.z.

&

Boolean And

Boolesches Komplement

N.z.

~

Boolean Not

Boolesches Exclusive Or

N.z.

^

Boolean XOr

Boolesches Or

N.z.

|

Boolean Or

Relational

Gleich

==

==

Equal To

Größer als

>

>

Greater Than

Größer gleich

>=

>=

Greater Than Equal

Kleiner als

<

<

Less Than

Kleiner gleich

<=

<=

Less Than Equal

Ungleich

!=

!=

Not Equal

Bitweise

Bitwise And

&

N.z.

Bitwise And

Bitweises Komplement

~

N.z.

Bitwise Not

Bitwise Exclusive Or

^

N.z.

Bitwise XOr

Bitwise Left Shift

<<

<<

Bitwise Left Shift

Bitwise Or

|

N.z.

Bitwise Or

Bitwise Right Shift

>>

>>

Bitwise Right Shift

Operatorregeln

  • Wenn nur Zahlen mit Operatoren verwendet werden, ist das Ergebnis eine Zahl.
    # outVar will be assigned 10
    outVar = 3 + 7
  • Wenn Operatoren mit Rastern verwendet werden, muss das Raster ein Raster-Objekt sein.
    outRas = Raster("inraster1") + Raster("inraster2")
  • Wenn ein Raster-Operand verwendet wird, ist das Ergebnis ein Raster-Objekt.
    # In the following statement, 4 is added to each cell value in inraster1
    outRas = Raster("inraster1") + 4
    outRas2 = Raster("inraster") + math.pi

    In der Anweisung oben wird pi aus dem Python-Modul math verwendet. Das Modul math umfasst auch die Basis des natürlichen Logarithmus, math.e, die auch in einer Map Algebra-Anweisung verwendet werden kann.

  • Einige Operatoren können einem Raster-Objekt oder einer Zahl vorangestellt sein.
    outRas = -Raster("inraster")
  • Die booleschen Operatoren (~, &, ^, ||) führen eine boolesche Operation aus, wenn eine oder mehrere Eingaben (Operanden) Raster sind. Wenn beide Eingaben (Operanden) Zahlen sind, führen diese Operatoren bitweise Operationen aus.

Tipp:

Leerzeichen sind zwischen Operatoren nicht erforderlich, werden jedoch zur besseren Lesbarkeit empfohlen.

Werkzeuge und Operatoren können geschachtelt werden, um komplexe Anweisungen zu erstellen.

Operatorregeln für multidimensionale Raster

  • Ein mit einem multidimensionalen Raster und einer Zahl verwendeter Operator ergibt ein multidimensionales Raster-Objekt mit denselben Variablen und derselben Dimensionalität wie die Eingabe.
    # In the following statement, 100 is added to each cell in 
    # each slice of in_multidem_raster
    out_multidem_raster = in_multidem_raster + 100
  • Ein mit einem multidimensionalen und einem nicht multidimensionalen Raster verwendeter Operator ergibt ein multidimensionales Raster-Objekt mit denselben Variablen und derselben Dimensionalität wie die Eingabe.

    Wenn sich die Eingabe-Raster-Objekte nicht überlappen, wird kein Ergebnis zurückgegeben.

    # In the following statement, the cell values from in_raster are added to 
    # the cell values in each slice of in_multidem_raster.
    out_multidem_raster = in_multidem_raster + in_raster
  • Ein mit zwei multidimensionalen Rastern verwendeter Operator ergibt ein multidimensionales Raster-Objekt, das nur Variablen und die Dimensionalität enthält, die allen Eingaben gemeinsam sind. Beispiel: Wenn ein multidimensionales Raster die Tagestemperaturen für den Zeitraum 1995-2015 und ein weiteres multidimensionales Raster die Tagestemperaturen für den Zeitraum 2001-2005 enthält, enthält das Ergebnis eines mit beiden multidimensionalen Rastern verwendeten Operators nur die Tagestemperaturen für den Zeitraum 2001-2005.

    Wenn die Eingabe-Raster-Objekte keine gemeinsamen Variablen und keine gemeinsame Dimensionalität haben, wird kein Ergebnis zurückgegeben.

    # In the following statement, the cell values in each slice from in_multidem_raster1
    # are added to the cell values in each slice from in_multidem_raster2, only where variables and 
    # dimensionality overlap.
    out_multidem_raster = in_multidem_raster1 + in_multidem_raster2

Operator-Priorität

Der Vorrangswert bestimmt die Reihenfolge, in der Operatoren ausgeführt werden. Der Operator mit der höheren Priorität wird zuerst verarbeitet. Wenn zwei Operatoren denselben Vorrangswert haben, werden sie in einem Ausdruck der Reihe nach von links nach rechts verarbeitet.

Sie können die Vorrangpriorität mithilfe von Klammern überschreiben, wobei die Operation in den innersten Klammern zuerst verarbeitet wird, unabhängig davon, welcher Operator angegeben ist.

In der folgenden Tabelle werden alle Map Algebra-Operatoren in der Reihenfolge von der niedrigsten zur höchsten Priorität aufgeführt. In derselben Zeile aufgeführte Operatoren haben dieselbe Priorität.

Verwandte Themen