GDAL C#ReadAsArray

时间:2009-08-06 13:29:39

标签: c# geospatial gdal

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

2 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分:0)

Python版本的ReadAsArray(0,0, xsize, ysize)函数与C#版本的ReadRaster(0,0, ds.RasterXSize, ds.RasterYSize, dstArray, ds.RasterXSize, ds.RasterYSize, 0)等效。