Arbeiten mit Operatoren in Map Algebra
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-Objekt handeln.
Die Tabelle unten enthält eine Kurzübersicht darüber, wie aktuelle Map Algebra-Operatoren in Bezug auf Python-Operatoren und vorherige 9.x Map Algebra-Operatoren implementiert worden sind.
Operation | Python-Operator |
Map Algebra-Operator |
9.x Map Algebra-Operator * |
Spatial Analyst-Geoverarbeitungswerkzeug |
---|---|---|---|---|
Arithmetisch | ||||
Addition | + | + | + | |
Abschnitt | / |
/ |
/, div | |
Integerteilung | // |
// |
N/A |
N/A |
Modulo | % | % | Mod | |
Multiplikation | * |
* |
* | |
Potenz | ** |
** |
N/A | |
Subtraktion | - |
- |
- | |
Unäres Minus | - |
- |
- | |
Unäres Plus | + |
+ |
N/A |
N/A |
Boolesch | ||||
Boolesches UND | N/A |
& |
&, and | |
Boolesches Komplement | N/A |
~ |
^, not | |
Boolesches ausschließendes ODER | N/A |
^ |
!, xor | |
Boolesches ODER | N/A |
| |
|, or | |
Relational | ||||
Gleich | == | == | ==, eq | |
Größer als | > | > | >, gt | |
Größer gleich | >= |
>= |
>=, ge | |
Kleiner als | < | < | <, lt | |
Kleiner gleich | <= |
<= |
<=, le | |
Ungleich | != |
!= |
^=, <>, ne | |
Bitweise | ||||
Bitweises UND | & | N/A | && | |
Bitweises Komplement | ~ | N/A | ^^ | |
Bitweises ausschließendes ODER | ^ | N/A | !! | |
Bitweise Linksverschiebung | << | << | << | |
Bitweises ODER | | | N/A | || | |
Bitweise Rechtsverschiebung | >> | >> | >> |
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.
Leerzeichen sind zwischen Operatoren nicht erforderlich, werden jedoch zur besseren Lesbarkeit empfohlen.
Werkzeuge und Operatoren können geschachtelt werden, um komplexe Anweisungen zu erstellen.
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.
Map Algebra-Operator |
Referenz |
---|---|
<, <=, >, >=, ==, != |
###Kleiner als###, ###Kleiner gleich###, ###Größer als###, ###Größer gleich###, ###Gleich###, ###Ungleich### |
| |
|
^ |
|
& |
|
<<, >> |
###Bitweise Linksverschiebung###, ###Bitweise Rechtsverschiebung### |
+, - |
|
*, /, //, % |
###Multiplikation###, ###Division###, ###Integerteilung###, ###Modulo### |
+, -, ~ |
|
** |