首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Landsat 8级、1级和8级地面反射层计算LST,给出了不同的计算结果。

利用Landsat 8级、1级和8级地面反射层计算LST,给出了不同的计算结果。
EN

Stack Overflow用户
提问于 2022-01-11 12:11:32
回答 1查看 621关注 0票数 0

我正在使用Landsat-8数据LANDSAT/LC08/C02/T1_L2计算陆地表面温度,因为LANDSAT/LC08/C01/T1_SR已经被废弃.我正在学习here的例子。我已经修改了相同的代码,但它提供了不同的,可能是不正确的结果。

代码语言:javascript
复制
// Import country boundaries feature collection.
var dataset = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');

// Apply filter where country name equals Uganda.
var geometry = dataset.filter(ee.Filter.eq('country_na', 'Uganda'));


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);
}

//loading 
 {
var dataset = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
.filterDate('2018-01-01','2018-12-31')
.filterBounds(geometry);
}
//applying scaling factor
dataset = dataset.map(applyScaleFactors);

var image = dataset.median();

var ndvi = image.normalizedDifference(['SR_B5', 
'SR_B4']).rename('NDVI');


//selecting thermal band ST_B10
var thermal= image.select('ST_B10');
;

// find the min and max of NDVI
{
var min = ee.Number(ndvi.reduceRegion({
reducer: ee.Reducer.min(),
geometry: geometry,
scale: 30,
maxPixels: 1e9
}).values().get(0));
print(min, 'min');
var max = ee.Number(ndvi.reduceRegion({
reducer: ee.Reducer.max(),
geometry: geometry,
scale: 30,
maxPixels: 1e9
}).values().get(0));
print(max, 'max')
}

//fractional vegetation

var fv =(ndvi.subtract(min).divide(max.subtract(min))).pow(ee.Number(2)).rename('FV'); 


//Emissivity

var a= ee.Number(0.004);
var b= ee.Number(0.986);
var EM=fv.multiply(a).add(b).rename('EMM');

//LST in Celsius Degree bring -273.15
//NB: In Kelvin don't bring -273.15
var LST = thermal.expression(
'(Tb/(1 + (0.00115* (Tb / 1.438))*log(Ep)))-273.15', {
 'Tb': thermal.select('ST_B10'),
'Ep': EM.select('EMM')
}).rename('LST');
Map.addLayer(LST, {min: 20.569706944223423, max:29.328077233404645, palette: [
'040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6',
'0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef',
'3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f',
'fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d',
'ff0000', 'de0101', 'c21301', 'a71001', '911003'
 ]},'LST');

结果使用collection1,这似乎是准确的,

使用collection2的结果似乎不正确,

EN

回答 1

Stack Overflow用户

发布于 2022-10-02 13:38:50

据我所知,收集2陆地卫星已经预处理,所以B10已经转换为热。所需要做的就是使用下面的乘法器将其转化为开尔文。如果这是错的谁来纠正我?

代码语言:javascript
复制
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70666597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档