描述
创建一个可在 Python 脚本或地图代数表达式中使用的栅格对象。栅格对象是一个引用栅格数据集的变量。
创建栅格对象有两种方法。可通过提供指向磁盘上某一现有栅格数据的路径来创建栅格对象;另外,任何可输出栅格的地图代数语句,其结果也可以作为栅格对象。
讨论
根据现有数据创建的栅格对象可用于后续的地图代数表达式中,并且将拥有所有关联的栅格属性和方法。
# out_raster is a resultant raster object
out_raster = Raster("c:/data/inraster")
任何在等号左侧生成输出栅格的工具或运算符(请参阅在地图代数中使用运算符)均可创建栅格对象。例如,在以下表达式中,out_raster 是一个栅格对象。
out_raster = Slope("inelevation")
默认情况下,通过地图代数表达式返回的栅格对象(变量和相关数据集)是临时对象。
通过以下方法,可将与栅格对象关联的临时数据集转变为永久数据集:
- 通过调用栅格对象的 save 方法。
- 通过在 TOC 中右键单击包含相关栅格对象的图层并指定输出名称来调用使永久化。
- 通过保存包含相关栅格对象的所有图层的地图投影文件(.mxd、.3dd 等)。
对于第 3 种情况,栅格对象所引用的数据集将以默认名称自动永久保存到磁盘中。
如果未通过以上三种方式对引用的栅格做永久化处理,则当变量超出范围时(如独立脚本完成或 ArcGIS 关闭时),将删除该变量和引用的栅格数据集。当栅格对象引用磁盘上的永久数据时,则不会删除该数据。
某些运算符同时存在于地图代数和 Python 中。如果要使用运算符处理栅格数据(而非标量),则必须通过调用栅格类的构造函数将输入栅格转换为栅格对象:Raster("inRaster")
# The plus operator (available with Spatial Analyst) is used on the input
# rasters creating an output raster object
out_raster = Raster("input1") + Raster("input2")
# The Python plus operator is used on numbers creating a scalar variable
out_var = 4 + 7
# When there is a mix of rasters with numbers the Spatial Analyst
# operator is used creating an output raster object
out_raster = Raster("input") + 10
某些与栅格对象关联的属性只有在引用的栅格数据集为永久数据集时才可用。当引用的栅格数据集为临时数据集时,这些属性的值为 None。涉及的属性有 catalogPath、compressionType、format、hasRAT、name 和 path。
将引用的栅格数据集设置成永久数据集后,它将无法返回到临时状态。
语法
Raster (inRaster)
参数 | 说明 | 数据类型 |
inRaster [inRaster,...] | 输入栅格数据集或栅格数据集列表。 | Raster |
属性
属性 | 说明 | 数据类型 |
bandCount (只读) | 参考栅格数据集中的波段数。 | Integer |
catalogPath (只读) | 参考栅格数据集的完整路径和名称。 | String |
compressionType (只读) | 压缩类型。以下是可用的类型:
| String |
extent (只读) | 参考栅格数据集的范围。 | Extent |
format (只读) | 栅格格式。
| String |
hasRAT (可读写) | 识别是否存在相关的属性表:如果存在则为 True,如果不存在则为 False。 | Boolean |
height (只读) | 行数。 | Integer |
isInteger (只读) | 如果栅格数据集具有整型,则为 True。 | Boolean |
isTemporary (只读) | 如果栅格数据集是临时的,则为 True,或者,如果是永久的,则为 False。 | Boolean |
maximum (只读) | 参考栅格数据集中的最大值。 | Double |
mean (只读) | 参考栅格数据集中的平均值。 | Double |
meanCellHeight (只读) | y 方向上的像元大小。 | Double |
meanCellWidth (只读) | x 方向上的像元大小。 | Double |
minimum (只读) | 参考栅格数据集中的最小值。 | Double |
name (只读) | 参考栅格数据集的名称。 | String |
noDataValue (只读) | 参考栅格数据集中的 NoData 值。 | Double |
path (只读) | 参考栅格数据集的完整路径。 | String |
pixelType (只读) | 参考栅格数据集的像素类型。类型如下:
| String |
spatialReference (只读) | 参考栅格数据集的空间参考。 | SpatialReference |
standardDeviation (只读) | 参考栅格数据集中值的标准偏差。 | Double |
uncompressedSize (只读) | 磁盘上参考栅格数据集的大小。 | Double |
width (只读) | 列数。 | Integer |
方法概述
方法 | 说明 |
save ({name}) | 永久保存栅格对象引用的数据集。 |
方法
save ({name})
参数 | 说明 | 数据类型 |
name | 分配给磁盘上的栅格数据集的名称。 | String |
代码示例
栅格示例 1
根据栅格数据集创建栅格对象并获取分析属性。
import arcpy
my_raster = arcpy.Raster('elevation')
my_min = my_raster.minimum
my_max = my_raster.maximum
my_area = (my_raster.width * my_raster.height) * my_raster.meanCellWidth
栅格示例 2
创建栅格对象、获取属性、创建随机误差栅格(+/- 3 英尺)、将随机误差栅格添加到高程栅格中并将其单位从英尺转换成米。
import arcpy
from arcpy.sa import *
elev_raster = Raster('c:/data/elevation')
my_extent = elev_raster.extent
my_cellsize = (elev_raster.meanCellHeight + elev_raster.meanCellWidth) / 2
res01 = arcpy.CreateRandomRaster_management("", "error3", "UNIFORM 0.0 3.0",
my_extent, my_cellsize)
elev_meters = (elev_raster + Raster(res01)) * 0.3048
elev_meters.save("c:/output/fgdb.gdb/elevM_err")