从TIF创建数组

时间:2018-04-06 14:46:34

标签: python arrays tiff gdal

我正在尝试使用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 个答案:

答案 0 :(得分:0)

正如@the_cheff在评论中所述,在调用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_xsize值。如果此值不同于win_xsize,则会重新采样数据。
  • buf_ysize是输出数组中的行数。默认是使用win_ysize值。如果此值不同于win_ysize,则会重新采样数据。
  • buf_obj是一个NumPy数组,用于放入数据而不是创建新数组。如果需要,将重新采样数据以适合此数组。值也将转换为此数组的数据类型。

我会确认乐队确实有不同于0的值,并且它是您尝试阅读的乐队。在某些情况下,#4频段用作alpha通道,其值范围为0到1.