需要 Spatial Analyst 许可。
在“地图代数”中,运算符对输入栅格和数字应用数学运算。
通常将运算符放置到两个输入(操作数)之间以执行一项数学运算(例如,outVar = 3 + 7)。在“地图代数”中,操作数可以是栅格或者数字。要对栅格使用运算符,栅格必须是栅格对象。
下表提供了一份快速参考,指明了相对于 Python 运算符和之前 9.x 版本的“地图代数”运算符而言,如何实现最新的“地图代数”运算符。
| 操作 | Python 运算符 | 地图代数运算符 | 9.x 版本地图代数运算符 * | Spatial Analyst GP 工具 | 
|---|---|---|---|---|
| 算术 | ||||
| 加 | + | + | + | |
| 除 | / | / | /, div | |
| 整除 | // | // | N/A | N/A | 
| 模 | % | % | 求模 | |
| 乘法 | * | * | * | |
| 幂 | ** | ** | N/A | |
| 减 | - | - | - | |
| 一元减号 | - | - | - | |
| 一元加号 | + | + | N/A | N/A | 
| 布尔 | ||||
| 布尔与 | N/A | & | &, and | |
| 布尔求反 | N/A | ~ | ^, not | |
| 布尔异或 | N/A | ^ | !, xor | |
| 布尔或 | N/A | | | |, or | |
| 关系 | ||||
| 等于 | == | == | ==, eq | |
| 大于 | > | > | >, gt | |
| 大于等于 | >= | >= | >=, ge | |
| 小于 | < | < | <, lt | |
| 小于等于 | <= | <= | <=, le | |
| 不等于 | != | != | ^=, <>, ne | |
| 按位 | ||||
| 按位与 | & | N/A | && | |
| 按位补码 | ~ | N/A | ^^ | |
| 按位异或 | ^ | N/A | !! | |
| 按位左移 | << | << | << | |
| 按位或 | | | N/A | || | |
| 按位右移 | >> | >> | >> | |
运算符规则
- 只对数字使用运算符时,结果将为数字。# outVar will be assigned 10 outVar = 3 + 7
- 对栅格使用运算符时,栅格必须是栅格对象。 outRas = Raster("inraster1") + Raster("inraster2")
- 使用栅格操作数时,结果为栅格对象。# In the following statement, 4 is added to each cell value in inraster1 outRas = Raster("inraster1") + 4 outRas2 = Raster("inraster") + math.pi在以上语句中,使用的 pi 来自 Python 数学模块。数学模块还包括以 e 为底的自然对数,math.e,它也可以用于“地图代数”语句中。 
- 一些运算符可以放到栅格对象或者数字前。 outRas = -Raster("inraster")
- 当一个或者多个输入(操作数)是栅格时,布尔(~、&、^、|)运算符将执行布尔运算。如果两个输入(操作数)都是数字,则这些运算符将执行“按位”运算。
工具和运算符可以嵌套以创建复杂的语句。
运算符优先级
优先级值确定运算符的执行顺序。首先处理优先级更高的运算符。如果两个运算符的优先级值相同,则按表达式中从左到右的顺序来处理它们。
可以使用括号限定优先级,不管指定的是什么运算符,总是首先处理最底层括号中的运算。
下表按优先级从低到高的顺序列出了所有“地图代数”运算符。同一行中的运算符具有相同的优先级。
| 地图代数运算符 | 参考书目 | 
|---|---|
| <, <=, >, >=, ==, != | |
| | | |
| ^ | |
| & | |
| <<, >> | |
| +, - | |
| *, /, //, % | |
| +, -, ~ | |
| ** |