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