代码之家  ›  专栏  ›  技术社区  ›  Rik

准备就绪

  •  2
  • Rik  · 技术社区  · 16 年前

    我在用gdal api读取光栅文件…我在一些地方发现python版本有readasarray,我假设这把光栅文件的数据作为二维数组,对于c有没有类似的选项,或者至少你能告诉我怎么做吗?谢谢!

    1 回复  |  直到 14 年前
        1
  •  7
  •   mloskot    16 年前

    没有等价物 ReadAsArray 函数在C绑定到GDAL中可用。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];
        }
    }