GDAL C#ReadAsArray

2 c# geospatial gdal

我正在使用GDAL API来读取光栅文件......我在某些地方发现python版本有ReadAsArray,我假设这会将光栅文件的数据作为二维数组,C#是否有类似的选项,或者至少可以你告诉我该怎么做?非常感谢!

mlo*_*kot 7

在与GDAL的C#绑定中没有等效的ReadAsArray函数.ReadAsArray是可用的,因为GDAL Python绑定应该可以与NumPy定义的阵列协议一起使用,因此该功能可用于此特定目的.

但是,您可以使用Band类的ReadRaster方法将像素读入一维数组,然后迭代这样的一维数组,因为它是二维数组.

让我们假设您读取带width x height尺寸的带的像素:

byte[] bits = new byte[width * height];
band.ReadRaster(0, 0, width, height, bits, width, height, 0, 0);
Run Code Online (Sandbox Code Playgroud)

现在,您可以根据以下公式计算像素的索引: 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];
    }
}
Run Code Online (Sandbox Code Playgroud)