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

从TIF创建阵列

  •  0
  • Kaitlyn  · 技术社区  · 7 年前

    我正在尝试使用GDAL从单波段TIF图像创建阵列: 实例

    array= band4.ReadAsArray(0,0,xsize,ysize)
    

    但结果只有零?

    array
    [[0 0 0 ... 0 0 0]
    [0 0 0 ... 0 0 0]
    [0 0 0 ... 0 0 0]
     ...
    [0 0 0 ... 0 0 0]
    [0 0 0 ... 0 0 0]
    [0 0 0 ... 0 0 0]]
    

    有没有办法解决这个问题,或者有其他方法来创建阵列?图像为无符号16位。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Marcelo Villa-Piñeros    7 年前

    正如注释中所述,调用时不需要传递任何参数 band.ReadAsArray() 。仅调用该函数将返回整个频带的numpy数组。

    功能结构如下:

    band.ReadAsArray([xoff], [yoff], [win_xsize], [win_ysize], [buf_xsize], [buf_ysize], [buf_obj])

    哪里

    • xoff 是要开始读取的列。默认值为0(第一列)。
    • yoff 是要开始读取的行。默认值为0(第一行)。
    • win_xsize 要读取的列数。默认设置为全部读取。
    • win_ysize 要读取的行数。默认设置为全部读取。
    • buf_xsize 是输出数组中的列数。默认设置为使用 win\u xsize 价值如果此值不同于 win\u xsize
    • buf_ysize 是输出数组中的行数。默认设置为使用 win\u ysize公司 价值如果此值不同于 win\u ysize公司
    • buf_obj 是要将数据放入其中的NumPy数组,而不是创建新数组。如果需要,将对数据进行重新采样以适应此阵列。值也将转换为此数组的数据类型。

    我要确认,该带的值确实不同于0,并且它就是您试图读取的带。在某些情况下,频带#4用作alpha通道,其值范围为0到1。