2

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

4

2 回答 2

8

在与 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);

现在,您可以根据以下公式计算像素的索引: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];
    }
}
于 2010-01-24T15:42:39.523 回答
0

Python 版本中的ReadAsArray(0,0, xsize, ysize)功能相当于ReadRaster(0,0, ds.RasterXSize, ds.RasterYSize, dstArray, ds.RasterXSize, ds.RasterYSize, 0)C# 版本中的功能。

于 2020-04-13T15:42:19.223 回答