Skip to main content

PixelBlock

汇总

定义要包括在栅格处理中的像素组或像素块。 PixelBlockCollection 对象由一个或多个 PixelBlock 对象组成。

讨论

PixelBlock 对象可定义栅格中要用于处理的像素块。可将其与 PixelBlockCollection 对象结合使用,以遍历一个或多个要进行处理的较大栅格。

语法

PixelBlock(data, extent)

名称 说明 数据类型

data

其中包含像素块的像素值的 NumPy 数组。

如果栅格并非多维栅格,则数组的形状应为(行、列、波段)。

如果栅格是多维栅格,则数组的形状应为(剖切、行、列、波段)。

NumPyArray

extent

像素块的空间范围。

Extent

属性

名称 说明 数据类型

cell_size

(只读)

像素块中像素的像元大小。 这是一个包含 x 方向和 y 方向上的像元大小(x 大小、y 大小)的元组。

tuple

tlc

(只读)

像素块左上角的坐标。

Point

spatial_reference

(只读)

导出图像的空间参考。 支持的选项如下:

  • None

  • SpatialReference 数据类型

  • ICSICS:<object_id> ,其中 object_id 用于选择应使用其图像坐标系的特定栅格。

如果未指定某一值,则将使用栅格数据集的空间参考。

SpatialReference

方法

getData()

返回像素块中的 NumPy 数组。

返回值

数据类型 说明

NumPyArray

来自像素块的 NumPy 数组对象。

代码示例

PixelBlock 示例

遍历像素块以计算土地覆被栅格中的森林总面积。

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))