GDAL C # ReadAsArray

2

Я использовал GDAL API для чтения растровых файлов... Я нашел в некоторых местах, что версия python имеет ReadAsArray, я предполагаю, что это принимает данные растрового файла в виде двумерного массива, есть ли подобная опция для С# или по крайней мере, вы можете показать мне, как это сделать? спасибо большое!

Теги:
gdal
geospatial

1 ответ

7

Нет эквивалента функции ReadAsArray, доступной в привязках С# к GDAL. ReadAsArray доступен, поскольку привязки GDAL Python должны использоваться с протоколом массива, определенным NumPy, поэтому эта функция существует для этой конкретной цели.

Однако вы можете использовать метод ReadRaster класса Band для чтения пикселей в 1-мерный массив, а затем итерации по такому массиву с 1-мерным размером, поскольку он был 2-мерным массивом.

Предположим, вы читаете пиксели полосы с размерами width x height:

byte[] bits = new byte[width * height];
band.ReadRaster(0, 0, width, height, bits, width, height, 0, 0);

Теперь вы можете вычислить индекс пикселя в соответствии с этой формулой: column + row * width

for (int col = 0; col < width; col++)
{
    for (int row = 0; row < height; row++)
    {
        // equivalent to bits[col][row] if bits is 2-dimension array

        byte pixel = bits[col + row * width];
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню