使用 Raster 对象

需要 Spatial Analyst 许可。

Raster 对象可用作地图代数表达式的输入,也是地图代数表达式的主要输出。 当运行使用运算符的地图代数表达式时,输入必须为 Raster 对象或常量。 地图代数表达式的栅格输出始终是临时输出,但可通过对 Raster 对象调用 save 方法来保存该栅格输出。 可以通过查询 Raster 对象来轻松访问所引用的数据集属性。

创建栅格对象

Raster 对象可以通过转换栅格数据集来创建,也可以通过 ArcGIS Spatial Analyst extension 工具的输出来获得。 通过转换栅格,可以查询栅格数据集的许多属性。

  • 要创建 Raster 对象,需指定图层名称或路径以及数据集名称,如下例所示。
    rasObject = Raster("C:/Data/elevation")
    在此语句中,elevation 栅格数据集的属性现在可通过所生成的 Raster 对象 (rasObject) 来获得。
  • Raster 对象可作为 Spatial Analyst 工具的左侧输出来创建。
    # rasObject is a Raster object pointing to a temporary 
    #   raster dataset
    rasObject = Slope("C:/Data/elevation")
    注:

    Spatial Analyst 工具箱外的工具不输出 Raster 对象。

栅格保存方法

可使用 save 方法保存与 Raster 对象关联的栅格。

Spatial Analyst 工具可创建临时输出。 可使用 Raster 对象的 save 方法保存这些输出。 在以下示例中,坡度工具的临时输出将保存到指定的输出文件夹中:

outraster = Slope("C:/Data/elevation")
outraster.save("C:/output/sloperaster")

  • 数据保存位置取决于在 save 方法中输入的内容以及所设置的工作空间环境。

    • 如果指定含有数据集名称的完整路径,则此位置是保存永久数据的位置。
    • 如果仅指定数据集名称,则数据的保存位置由地理处理工作空间环境来决定。
      • 如果设置了临时工作空间或当前工作空间,则保存的数据将存储到所设置的工作空间位置。
      • 如果同时设置了临时工作空间和当前工作空间,则保存的数据将存储到当前工作空间。
      • 如果未设置工作空间,则将返回错误。

  • 如果希望数据使用默认名称保存在当前位置,则可调用 save 方法而不指定名称,如下例所示:
    outraster.save()
  • save 方法支持所有 Spatial Analyst 支持的输出栅格数据格式。 在下面的示例中,栅格的 save 方法用于将数据保存为文件地理数据库栅格和 TIFF 格式栅格。
    outraster.save("C:/output/file_gdb.gdb/sloperaster")
    outraster.save("C:/output/sloperaster.tif")

使用栅格属性

将栅格转换为 Raster 对象后,可以查询数据集的属性。 所有 Raster 对象属性都是只读的。 查询 Raster 属性将会返回字符串、数字或对象。 可通过许多方式使用栅格属性,包括用作工具参数的输入,或用于设置环境设置,如下所示:

from arcpy import env
from arcpy.sa import *
outraster = Raster("C:/Data/studyarea")
myextent = outraster.extent

# Modify myextent as necessary for your workflow and use it to set the extent environment
env.extent = myextent
注:

Raster 对象可用的栅格属性是多个属性的组合,也可以通过 Describe 函数(栅格数据集属性)和从获取栅格属性工具进行访问。

相关主题