GDAL ReadAsArray Landsat-8像素值上的数万个

时间:2018-02-03 19:44:17

标签: python gdal geo landsat

我是Landsat-8和python的新手。我打开了一个Landsat-8 tiff文件,想要读取单个文件的信息(例如我在这里使用LC08_L1TP_172039_20150509_20170411_01_T1_B4.tif文件),但是这些值变为高达数万而不是它们应该的带宽范围(像这里它们应该在0.636到0.673 um的范围内,如Landsat8DataUsersHandbook中所述),我不知道为什么会发生这种情况,是否有办法将从gdal模块读取的值转换为实际值?

由于

import gdal

dataset = gdal.Open("C:\\Users\\Desktop\\LC08_L1TP_172039_20150509_20170411_01_T1.tar.gz\\LC08_L1TP_172039_20150509_20170411_01_T1_B4.tif")
dataset.RasterCount
band_4 = dataset.GetRasterBand(1)
band_44 = band_4.ReadAsArray()
band_44.max()
Out[95]: 35961

1 个答案:

答案 0 :(得分:0)

tif中的值是DN值,需要缩放。检查手册的第5部分: https://landsat.usgs.gov/landsat-8-l8-data-users-handbook-section-5

如果您想获得顶级大气反射值,您应该在MTL文本文件中查看转换值是什么。

每个乐队列出如下:

REFLECTANCE_MULT_BAND_1 = 2.0000E-05
REFLECTANCE_ADD_BAND_1 = -0.100000
etc.

仔细阅读第5.2节,不要忘记纠正太阳角度(如果那就是你所需要的)。