栅格计算器 (Spatial Analyst)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

摘要

使用 Python 语法构建和执行单个地图代数表达式。

了解有关栅格计算器工作原理的详细信息

插图

栅格计算器工具对话框
栅格计算器工具对话框示例

使用情况

    注:

    栅格计算器工具专门用于应用程序(仅作为 GP 工具对话框)或 ModelBuilder。它不适用于脚本的编写,而且也不能用于 ArcPy Spatial Analyst 模块。

  • 栅格计算器工具用于创建和执行将输出栅格的地图代数表达式。

  • 使用栅格列表选择要用于表达式中的数据集和变量。工具列表提供一组常用的条件分析工具和数学工具,便于您轻松地将其添加到表达式中。可直接向表达式添加数值(和数学运算符号)。

  • 可在引号 ("") 中输入数据的完整路径或指定的当前工作空间环境设置中存在的数据。而数字和标量则可直接输入。

  • 栅格计算器工具对话框中的运算符包括:

    +

    >

    大于

    &

    布尔与

    -

    取反

    <

    小于

    |

    布尔或

    *

    <=

    小于或等于

    ^

    布尔异或

    /

    >=

    大于或等于

    ~

    布尔非

    ==

    等于

    !=

    不等于

    地图代数运算符

  • 使用标准 Python 语法,您可在地图代数表达式中合并多个地理处理工具和操作。

    警告:

    键入工具名称时,务必检查工具名称的语法。如果大小写不正确,则表达式会因 Python 区分大小写而无效且无法执行。

    使用地理处理工具的地图代数表达式的常规格式示例为:

    Con(IsNull("streams"), 0, "streams")

  • 该工具支持 Python 脚本所采用的标准地图代数语法。仅有的两处不同是:

    • 不必将输出栅格名称或等号 (=) 填入表达式,因为该输出名称已在输出栅格参数中指定。
    • 在使用运算符时,不必将输入栅格转换为栅格对象。

  • 通过设置范围环境并在表达式中指定输入栅格的名称,可轻松地裁剪栅格数据集。执行该工具时,将根据指定的范围对生成的栅格输出进行裁剪。

  • 要创建一个具有常量值像元的栅格,请指定相应的范围和像元大小等环境设置参数,然后向表达式中填入数值。

  • 当表达式中使用多个运算符时,其不一定按照从左到右的顺序执行。 具有最高优先值的运算符将首先执行。 有关详细信息,请参阅在 Map Algebra 中使用运算符中的运算符优先级表。 您可使用括号来控制执行顺序。

  • 布尔型(~&^|)运算符具有比关系(<<=>>===!=)运算符更高的优先级。 因此,当布尔型运算符在相同表达式中用作关系运算符时,布尔型运算符将被首先执行。 要改变执行顺序,请使用括号。

  • 当在单个表达式中连续使用多个关系运算符和/或布尔运算符时,在某些情况下它可能无法执行。 要避免此潜在问题,请在表达式中使用适当的括号,以便明确地定义运算符的执行顺序。 有关详细信息,请参阅构建复杂语句的复杂语句规则部分。

  • 地图代数的延迟求值功能可提高操作的性能。延迟求值是一种可智能化地处理表达式的各个组成部分以将磁盘上创建的中间数据集降至最少的优化技术。

    只有逐像元执行处理的运算符和工具才能利用此功能。支持延迟求值功能的运算符和工具以按钮或所提供工具列表的形式包括在栅格计算器工具本身。

  • 栅格计算器工具可用于 ModelBuilder 中,但请记住以下几点:

    • 表达式语法决定将如何指定变量。如果从变量列表中选择变量,变量将自动添加到表达式中的当前光标位置。进行模型验证时:
      • 图层名称将括在双引号 ("") 中。

        示例:"inlayer"

      • 长整型、双精度型或布尔型变量将括在百分号 (%%) 中。这些变量无需括在引号中。

        示例:%scale_factor%

      • 表示数据集名称或字符串的变量应括在引号和百分号 ("%%") 中。

        例如,inraster 如果变量是在变量列表中选择的,则会在表达式中变为 "%inraster%"

    • 在 ModelBuilder 中,以下变量类型对于表达式是有效输入:
      • 字符串
      • 布尔型
      • 数字(双精度型和长整型)
      • 数据(栅格数据集、栅格图层、栅格波段、lyr 图层文件)
    • 栅格计算器工具通常遵循 ModelBuilder 中模型的标准连接行为,但设计有效地图代数表达式的要求会导致一些例外情况。其中包括以下参数:
      • 从变量列表中选择变量时,变量将连接到栅格计算器工具。工具的变量列表中会自动列出所有变量。
      • 在表达式中使用数据集或变量时,将创建变量与工具间的链接。如果从表达式中移除变量,也会移除变量与工具间的关联链接。
      • 如果删除与变量的连接,变量不会从表达式中移除。
      • 您不得重命名已连接到工具的变量,因为表达式中的变量不会被重命名。如果重命名表达式中的变量,表达式将会无效。
  • 如果输出采用栅格格式而并非 Esri Grid,则特定栅格存储环境可能会应用于此工具。

    • 对于栅格统计环境,仅支持计算统计数据复选框。
    • 对于压缩环境,仅支持压缩类型。只有在输出为整型时,才会应用此环境。浮点型栅格不支持压缩,因此仅当输出为整型时,才会应用此环境。
    • 只有以下格式的栅格输出才支持切片大小环境:TIFF、文件地理数据库或企业级地理数据库。

参数

标注说明数据类型
地图代数表达式

想要运行的地图代数表达式。

通过指定输入、值、运算符和要使用的工具来构成表达式。可直接输入表达式,也可使用控件来帮助您创建表达式。

  • 栅格列表识别了可以在地图代数表达式中使用的数据集。
  • 工具列表为您提供可从中选择的常用工具集合。
Raster Calculator Expression
输出栅格

由地图代数表达式产生的输出栅格。

Raster Dataset

RasterCalculator(expression, output_raster)
名称说明数据类型
expression
注:

在 Python 中,应创建地图代数表达式,并通过 Spatial Analyst 模块(ArcPy Python 站点包的扩展模块)执行它们。

请参阅 Spatial Analyst 中的地图代数以了解如何在 Python 中执行分析。

Raster Calculator Expression
output_raster
注:

有关在 Python 中通过地图代数表达式生成输出的信息,请参阅根据地图代数创建输出

Raster Dataset

许可信息

  • Basic: 需要 Spatial Analyst 或 Image Analyst
  • Standard: 需要 Spatial Analyst 或 Image Analyst
  • Advanced: 需要 Spatial Analyst 或 Image Analyst

相关主题