Raster (arcpy)
摘要
创建一个可在 Python 脚本或地图代数表达式中使用的栅格对象。栅格对象是一个引用栅格数据集的变量。
可以通过两种方式创建栅格对象。一方面,通过提供指向磁盘上某一现有栅格数据的路径来创建栅格对象;另外任何可输出栅格的地图代数语句,其结果也可以作为栅格对象。
执行地图代数语句需要 ArcGIS Spatial Analyst 扩展模块。
讨论
根据现有数据创建的栅格对象可用于后续的地图代数表达式中,并且将拥有所有关联的栅格属性和方法。
# out_raster is a resultant raster object
out_raster = Raster("c:/data/inraster")
任何在等号左侧生成输出栅格的 Spatial Analyst 工具或运算符(请参阅使用运算符)均可创建栅格对象。例如,在以下表达式中,out_raster 是一个栅格对象。
out_raster = Slope("inelevation")
默认情况下,通过地图代数表达式返回的栅格对象(变量和相关数据集)是临时对象。
通过以下方法,可将与栅格对象关联的临时数据集转变为永久数据集:
- 通过调用栅格对象的 save 方法。
- 通过在 TOC 中右键单击包含相关栅格对象的图层并指定输出名称来调用使永久化。
- 通过保存包含相关栅格对象的所有图层的地图投影文件(.MXD、.3DD 等)。
对于第 3 种情况,栅格对象所引用的数据集将以默认名称自动永久保存到磁盘中。
如果未通过以上三种方式对引用的栅格做永久化处理,则当变量超出范围时(如独立脚本完成或 ArcGIS 关闭时),将删除该变量和引用的栅格数据集。当栅格对象引用磁盘上的永久数据时,则不会删除该数据。
某些运算符同时存在于地图代数和 Python 中。如果要使用运算符处理栅格数据(而非标量),则必须通过调用栅格类的构造函数将输入栅格转换为栅格对象:Raster("inRaster").
# The Spatial Analyst plus operator 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。
将引用的栅格数据集设置成永久数据集后,它将无法返回到临时状态。
属性
属性 | 说明 | 数据类型 |
bandCount (只读) |
The number of bands in the referenced raster dataset. | Integer |
catalogPath (只读) |
The full path and the name of the referenced raster dataset. | String |
compressionType (只读) |
The compression type. The following are the available types:
| String |
extent (只读) |
The extent of the referenced raster dataset. | Extent |
format (只读) |
The raster format
| String |
hasRAT (读写) |
Identifies if there is an associated attribute table: True if an attribute table exists or False if no attribute table exists. | Boolean |
height (只读) |
The number of rows. | Integer |
isInteger (只读) |
The integer state: True if the raster dataset has integer type. | Boolean |
isTemporary (只读) |
The state of the referenced raster dataset: True if the raster dataset is temporary or False if permanent. | Boolean |
maximum (只读) |
The maximum value in the referenced raster dataset. | Double |
mean (只读) |
The mean value in the referenced raster dataset. | Double |
meanCellHeight (只读) |
The cell size in the y direction. | Double |
meanCellWidth (只读) |
The cell size in the x direction. | Double |
minimum (只读) |
The minimum value in the referenced raster dataset. | Double |
name (只读) |
The name of the referenced raster dataset. | String |
noDataValue (只读) |
The NoData value of the referenced raster dataset. | Double |
path (只读) |
The full path and name of the referenced raster dataset. | String |
pixelType (只读) |
The pixel type of the referenced raster dataset. The types are
| String |
spatialReference (只读) |
The spatial reference of the referenced raster dataset. | SpatialReference |
standardDeviation (只读) |
The standard deviation of the values in the referenced raster dataset. | Double |
uncompressedSize (只读) |
The size of the referenced raster dataset on disk. | Double |
width (只读) |
The number of columns. | Integer |
方法概述
方法 | 说明 |
save ({name}) |
Permanently saves the dataset the raster object references. |
方法
参数 | 说明 | 数据类型 |
name |
The name to assign to the raster dataset on disk. | String |
代码实例
根据栅格数据集创建栅格对象并获取分析属性。
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
创建栅格对象、获取属性、创建随机误差栅格(+/- 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")