Краткая информация
Задает группу или блок пикселов, включаемые в обработку растра. Объект 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))