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

  • ICS или ICS:<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))