摘要
定义要包括在栅格处理中的像素组或像素块。PixelBlockCollection 对象由一个或多个 PixelBlock 对象组成。
说明
PixelBlock 对象可定义栅格中要用于处理的像素块。可将其与 PixelBlockCollection 对象结合使用,以遍历一个或多个要进行处理的较大栅格。
语法
PixelBlock (data, extent)
参数 | 说明 | 数据类型 |
data | 其中包含像素块的像素值的 NumPy 数组。 如果栅格并非多维栅格,则数组的形状应为(行、列、波段)。 如果栅格是多维栅格,则数组的形状应为(剖切、行、列、波段)。 | NumPyArray |
extent | 像素块的空间范围。 | Extent |
属性
属性 | 说明 | 数据类型 |
cell_size (只读) | 像素块中像素的像元大小。 这是一个包含 x 方向和 y 方向上的像元大小(x 大小、y 大小)的元组。 | tuple |
tlc (只读) | 像素块左上角的坐标。 | Point |
spatial_reference (只读) | 导出图像的空间参考。 支持的选项如下:
| SpatialReference |
方法概述
方法 | 说明 |
getData () | 返回像素块中的 NumPy 数组。 |
方法
getData ()
数据类型 | 说明 |
NumPyArray | 来自像素块的 NumPy 数组对象。 |
代码示例
遍历像素块以计算土地覆被栅格中的森林总面积。
import arcpy
# Specify the input raster
in_raster = arcpy.Raster("landcover.tif")
# Create a PixelBlockCollection
blockCollection = arcpy.ia.PixelBlockCollection(
in_raster, pixel_block_size = (512, 512), nodata_to_values = -1)
forest_cell_count = 0
# Iterate through each PixelBlock
try:
while True:
pixelblock = next(blockCollection)
np_array = pixelblock.getData()
forest_cell_count+= np.count_nonzero(np_array == 1) # value = 1 is forest class
except StopIteration:
pass
print ("total forest pixels : " + str(forest_cell_count))