GDAL C#ReadAsArray

GDAL C#ReadAsArray,c#,geospatial,gdal,C#,Geospatial,Gdal,我正在使用GDAL API读取光栅文件。。。我在一些地方发现python版本有ReadAsArray,我假设它将光栅文件的数据作为二维数组,C#是否有类似的选项,或者至少你能告诉我如何做吗?非常感谢 在C#绑定到GDAL中没有等效的函数。ReadAsArray是可用的,因为GDAL Python绑定应该可以与定义的数组协议一起使用,所以此函数的存在就是为了这个特定的目的 但是,您可以使用Band类的ReadRaster方法将像素读入一维数组,然后像二维数组一样迭代一维数组 假设您读取了宽度x高度

我正在使用GDAL API读取光栅文件。。。我在一些地方发现python版本有ReadAsArray,我假设它将光栅文件的数据作为二维数组,C#是否有类似的选项,或者至少你能告诉我如何做吗?非常感谢

在C#绑定到GDAL中没有等效的函数。ReadAsArray是可用的,因为GDAL Python绑定应该可以与定义的数组协议一起使用,所以此函数的存在就是为了这个特定的目的

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

假设您读取了宽度x高度为
尺寸的波段像素:

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];
    }
}
for(int col=0;col
Python版本中的
ReadAsArray(0,0,xsize,ysize)
函数相当于C版本中的
ReadRaster(0,0,ds.RasterXSize,ds.RasterYSize,dstArray,ds.RasterXSize,ds.RasterYSize,0)