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