GEE|Landsat数据的scale问题
根据GEE官方公告,原来的Landsat/LT05/C01/T1_SR和Landsat/LC08/C01/T1_SR数据集停止更新,并提供了新的地表反射率数据,就是LANDSAT/LT05/C02/T1_L2和LANDSAT/LC08/C02/T1_L2。新的数据集直接提供LST产品,方便获取地表温度,同时也给出官方代码去云处理。在查看官方代码时发现了一段奇怪的代码:
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
实际上是因为GEE官方为了减少数据的存储量,对数据进行了压缩处理,因此在使用的时候需要进行缩放,也就是乘以scale并加上offset。
如图中bands中,标出的Scale与Offset,在下载数据时需要乘以这个scale并加上offset。
在早期的GEE示例代码中,只有去云的cloudMask代码,但并没有该操作,需要用户下载后自己计算该过程。
此前下载数据后没有意识到该问题,直接拿来用或者除以10000后继续使用。除以10000跟乘以上述比例因子的结果是完全不同的,土壤的单波段反射率能相差0.1左右。在波段10地表温度中的比例因子也不同,需要注意。
最新的Landsat的示例代码中已经乘以了该比例因子,具体如下:
// applies scaling factors.
function applyScaleFactors(image) {
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true);
}
dataset = dataset.map(applyScaleFactors);