栅格计算器 (Spatial Analyst)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

摘要

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

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

插图

地理处理窗格中的栅格计算器
“地理处理”窗格中的“栅格计算器”工具使用简单的表达式

使用情况

    注:

    仅可通过地理处理窗格或 模型构建器 中的应用程序使用栅格计算器工具。 它不适用于脚本的编写,而且也不能用于 ArcPy Spatial Analyst 模块。

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

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

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

  • 下表中列出了受支持的运算符:

    +

    >

    大于

    &

    布尔与

    -

    取反

    <

    小于

    |

    布尔或

    *

    <=

    小于或等于

    ^

    布尔异或

    /

    >=

    大于或等于

    ~

    布尔非

    ==

    等于

    !=

    不等于

    地图代数运算符

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

    警告:

    键入工具名称时,需确保工具名称语法正确。 如果大小写不正确,则表达式会因 Python 区分大小写而无效且处理失败。

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

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

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

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

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

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

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

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

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

  • 地图代数的延迟求值功能可提高操作的性能。 延迟评估是一种优化技术,其中将智能处理表达式的各个组件,从而最大限度地减少磁盘上中间数据集的创建。

    只有逐像元执行处理的运算符和工具才能利用此功能。 栅格计算器工具包含支持延迟评估的运算符和工具,其将作为按钮或包含在提供的工具列表中。

  • 栅格计算器工具可用于 模型构建器,但请记住以下内容:

    表达式语法决定将如何指定变量。 如果从变量列表中选择变量,变量将自动添加到表达式中的当前光标位置。 在模型验证时,将发生以下情况:

    • 图层名称将括在双引号 ("") 中。

      示例:"inlayer"

    • 长整型、双精度型或布尔型变量将括在百分号 (%%) 中。 它们不需要用使用引号。

      示例:%scale_factor%

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

      例如,inraster 将在表达式中变为 "%inraster%"

    模型构建器 中,以下变量类型对于表达式是有效输入:

    • 字符串
    • 布尔
    • 数字(双精度型和长整型)
    • 数据(栅格数据集、栅格图层、栅格波段、图层文件 .lyr

    栅格计算器工具通常遵循 模型构建器 中模型的标准连接行为,但设计有效地图代数表达式的要求会导致一些例外情况。 其中包括:

    • 从变量列表中选择变量时,变量将连接到栅格计算器工具。 所有变量都会自动列在工具内的“变量列表”中。
    • 在表达式中使用数据集或变量时,将创建变量与工具间的链接。 如果从表达式中移除变量,也会移除变量与工具间的关联链接。
    • 如果删除与变量的连接,变量不会从表达式中移除。
    • 切勿重命名已连接到工具的变量,因为表达式中的变量不会被重命名。 如果重命名变量,表达式将会无效。
  • 如果输出采用栅格格式而并非 Esri Grid,则特定栅格存储环境可能会应用于此工具。

    • 对于栅格统计环境,仅支持计算统计数据复选框。
    • 对于压缩环境,仅支持压缩类型。 只有在输出为整型时,才会应用此环境。 浮点型栅格不支持压缩,因此仅当输出为整型时,才会应用此环境。
    • 只有以下格式的栅格输出才支持分块大小环境:TIFF、文件地理数据库或企业级地理数据库。
  • 如果所有输入均为具有相同数量变量的多维栅格数据,则该工具将对具有相同维度值的所有剖切片执行运算。 输出将是 CRF 格式的多维栅格。 输入中的变量必须至少具有一个常见维度和一个常见维度值以供此工具进行处理,否则将发生错误。

    如果所有输入均具有一个变量但名称不同,请在运行工具之前取消选中匹配多维变量地理处理环境(在 Python 中设置 arcpy.env.matchMultidimensionalVariable = False)。

    如果其中一个输入为多维栅格,而其他输入为常量,则该工具将使用常量值,对所有变量的所有切片执行运算,并且输出将为多维栅格。

参数

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

将运行地图代数表达式。

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

  • 栅格列表识别了可以在地图代数表达式中使用的数据集。
  • 工具列表中包含常用的工具,可供您使用。
Raster Calculator Expression
输出栅格

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

Raster Dataset

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

Python 中,可以使用 Spatial Analyst 模块创建和运行地图代数表达式,该模块是 ArcPy Python 站点包的扩展模块。

有关如何在 Python 中执行分析,请参阅地图代数

Raster Calculator Expression
output_raster
注:

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

Raster Dataset

许可信息

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

相关主题