标注 | 说明 | 数据类型 |
地图代数表达式 | 您要运行的“地图代数”表达式。 通过指定输入、值、运算符和要使用的工具来构成表达式。 可直接输入表达式,也可使用控件来帮助您创建表达式。
| Raster Calculator Expression |
输出栅格 | 由“地图代数”表达式生成的输出栅格。 | Raster Dataset |
需要 Spatial Analyst 许可。
获得 Image Analyst 许可后可用。
插图
使用情况
栅格计算器工具用于创建和执行将输出栅格的地图代数表达式。
-
使用栅格列表选择要用于表达式中的数据集和变量。 工具列表提供一组常用的条件分析工具和数学工具,便于您轻松地将其添加到表达式中。 可直接将数值(和数学运算符)添加到表达式中。
可在引号 ("") 中输入数据的完整路径或指定的当前工作空间环境设置中存在的数据。 可以直接在表达式中输入数值和标量。
-
“栅格计算器工具”对话框包括以下运算符:
使用标准 Python 语法,您可在地图代数表达式中合并多个地理处理工具和操作。
警告:
键入工具名称时,务必检查工具名称的语法。 如果大小写不正确,则表达式会因 Python 区分大小写而无效且无法执行。
使用地理处理工具的地图代数表达式的常规格式示例为:
Con(IsNull("streams"), 0, "streams")
该工具支持 Python 脚本所采用的标准地图代数语法。 仅有的两处不同是:
- 不必将输出栅格名称或等号 (=) 填入表达式,因为该输出名称已在输出栅格参数中指定。
- 在使用运算符时,不必将输入栅格转换为栅格对象。
通过设置范围环境并在表达式中指定输入栅格的名称,可轻松地裁剪栅格数据集。 执行该工具时,生成的栅格输出将根据指定范围进行裁剪。
要创建一个具有常量值像元的栅格,请指定相应的范围和像元大小等环境设置参数,然后向表达式中填入数值。
当表达式中使用多个运算符时,运算符不一定按照从左到右的顺序执行。 具有最高优先级值的运算符将首先执行。 有关详细信息,请参阅使用“地图代数”中的运算符中的运算符优先级表。 您可使用括号来控制执行顺序。
布尔型运算符(~、&、^、|)的优先级比关系运算符(<、<=、>、>=、==、!=)的优先级高。 因此,当布尔型运算符在相同表达式中用作关系运算符时,将先执行布尔型运算符。 要改变执行顺序,请使用括号。
当在单个表达式中连续使用多个关系运算符和/或布尔运算符时,在某些情况下可能无法执行。 要避免此潜在问题,请在表达式中使用适当的括号,以便明确地定义运算符的执行顺序。 有关详细信息,请参阅构建复杂语句的复杂语句规则部分。
地图代数的延迟求值功能可提高操作的性能。 延迟评估是一种优化技术,其中将智能处理表达式的各个组件,从而最大限度地减少磁盘上中间数据集的创建。
只有逐像元执行处理的运算符和工具才能利用此功能。 栅格计算器工具本身包含支持延迟评估的运算符和工具,其将作为按钮或包含在提供的工具列表中。
栅格计算器工具可用在模型构建器中,但请记住以下几点:
- 表达式语法决定将如何指定变量。 如果从变量列表中选择变量,变量将自动添加到表达式中的当前光标位置。 模型验证:
- 图层名称将括在双引号 ("") 中。
示例:"inlayer"
- 长整型、双精度型或布尔型变量将括在百分号 (%%) 中。 它们不需要用使用引号。
示例:%scale_factor%
- 表示数据集名称或字符串的变量应括在引号和百分号 ("%%") 中。
例如,inraster 如果变量是在变量列表中选择的,则会在表达式中变为 "%inraster%"。
- 图层名称将括在双引号 ("") 中。
- 在模型构建器中,以下变量类型对于表达式是有效输入:
- 字符串
- 布尔
- 数字(双精度型和长整型)
- 数据(栅格数据集、栅格图层、栅格波段、.lyr 图层文件)
- 栅格计算器工具通常遵循 ModelBuilder 中模型的标准连接行为,但设计有效地图代数表达式的要求会导致一些例外情况。 其中包括:
- 从变量列表中选择变量时,变量将连接到栅格计算器工具。 所有变量都会自动列在工具内的“变量列表”中。
- 在表达式中使用数据集或变量时,将创建变量与工具间的链接。 如果从表达式中移除变量,也会移除变量与工具间的关联链接。
- 如果删除与变量的连接,变量不会从表达式中移除。
- 您不得重命名已连接到工具的变量,因为表达式中的变量不会被重命名。 如果重命名表达式中的变量,表达式将会无效。
- 表达式语法决定将如何指定变量。 如果从变量列表中选择变量,变量将自动添加到表达式中的当前光标位置。 模型验证:
如果输出采用栅格格式而并非 Esri Grid,则特定栅格存储环境可能会应用于此工具。
如果所有输入均为具有相同数量变量的多维栅格数据,则该工具将对具有相同维度值的所有剖切片执行运算。 输出将是 CRF 格式的多维栅格。 输入中的变量必须至少具有一个常见维度和一个常见维度值以供此工具进行处理,否则将发生错误。
如果所有输入均具有一个变量但名称不同,请在运行工具之前取消选中匹配多维变量地理处理环境(在 Python 中设置 arcpy.env.matchMultidimensionalVariable = False)。
如果其中一个输入为多维栅格,而其他输入为常量,则该工具将使用常量值,对所有变量的所有切片执行运算,并且输出将为多维栅格。
注:
栅格计算器工具专门用于应用程序(仅作为 GP 工具对话框)或 ModelBuilder。 它不适用于脚本的编写,而且也不能用于 ArcPy Spatial Analyst 模块。
参数
RasterCalculator(expression, output_raster)
名称 | 说明 | 数据类型 |
expression | 注:在 Python 中,应创建地图代数表达式,并通过 Spatial Analyst 模块(ArcPy Python 站点包的扩展模块)执行它们。 请参阅 Spatial Analyst 中的地图代数以了解如何在 Python 中执行分析。 | Raster Calculator Expression |
output_raster | 注:有关在 Python 中通过地图代数表达式生成输出的信息,请参阅创建输出。 | Raster Dataset |
许可信息
- Basic: 需要 Image Analyst 或 Spatial Analyst
- Standard: 需要 Image Analyst 或 Spatial Analyst
- Advanced: 需要 Image Analyst 或 Spatial Analyst