从 TIF 创建数组

creating an array from a TIF

我正在尝试使用 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 位...

如评论中@the_cheff所述,调用band.ReadAsArray()时无需传递任何参数。仅调用该函数将 return 整个波段的 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_xsize 值。如果此值不同于 win_xsize.
  • ,数据将被重新采样
  • buf_ysize 是输出数组中的行数。默认是使用 win_ysize 值。如果此值不同于 win_ysize.
  • ,数据将被重新采样
  • buf_obj 是一个 NumPy 数组,用于将数据放入而不是创建一个新数组。如果需要,数据将被重新采样以适应这个数组。值也将转换为此数组的数据类型。

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