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.
Operation | Python-Operator | Map Algebra-Operator | Geoverarbeitungswerkzeug | |
---|---|---|---|---|
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.
Map Algebra-Operator | Referenz |
---|---|
<, <=, >, >=, ==, != | Less Than, Less Than Equal, Greater Than, Greater Than Equal, Equal To, Not Equal |
| | |
^ | |
& | |
<<, >> | |
+, - | |
*, /, //, % | |
+, - | |
** |