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