Earth Engine下地表温度反演

首先感谢ENVI-IDL技术殿堂在ENVI平台下的指导,原文链接,现将其在GEE平台实现。不同的是,该博文称使用原始DN值计算NDVI对反演影响不大,但通过实践发现还是有差异,所以代码采用了经过大气校正的地表反射率产品进行NDVI的计算。

注意的地方:代码中44和45行需要自行替换,也可以通过filter过滤功能进行查找得到。另一个需要注意的是原博文中提到的三个变量参数还是需要自己去NASA获取,获取地址,中心经纬度可以通过自己在地图上添加geometry得到。

体谅的地方:接触GEE才开始接触Javascript,所以格式可能不规范,尽量多学习。GEE里面好像不能通过1.divide(image)这样来对图像求倒数,所以很笨的用image.divide(image.multiply(image))这样的方式来实现。

代码基于辐射传输方程实现(如果后期有时间学习分裂窗算法,将再次更新):

/*
 * Calculate Land Surface Temperature
 * Based on Radiative Transfer Equation
 * from Landsat-8 Surface Reflectance Product
 * and Landsat-8 Raw Scenes Product
 *
 * Rember to Replace the Name of Products
 * in Line 44 and Line 45
 *
 * Author: Deserts Tsung, Nov 18,2018
 * Chengdu University of Information Technology
 *
*/


// Function to Get Land Surface Emissivity(LSE)
// from Landsat-8 Surface Reflectance Product
var LSECalculation = function(SRImage) {
  var NDVI = SRImage.normalizedDifference(['B5','B4']),
      greaterPart = (NDVI.gt(0.7)).multiply(1),
      lessPart = (NDVI.lt(0.05)).multiply(0),
      middlePart = (((NDVI.lte(0.7)).gte(0.05)).multiply(NDVI)).subtract(0.05).divide(0.65),
      vegCvgRat = lessPart.add(greaterPart).add(middlePart),
      lse = vegCvgRat.multiply(0.004).add(0.986);
  return lse;
};

// Function to Get Radiance of Blackbody(BBR) at The Same Temperatue
// from LSE and Radiance of B10
var BBRCalculation = function(t,up,down,lse,rad) {
  var temp = lse.multiply(-1).add(1).multiply(down).multiply(t),
      bbrad = rad.subtract(up).subtract(temp).divide(lse.multiply(t));
  return bbrad;
};

// Function to Get Land Surface Temperature(LST)
// from BBR
var LSTCalculation = function(bbrad) {
  var temp = bbrad.multiply(774.89).divide(bbrad).divide(bbrad).add(1).log(),
      lst = temp.multiply(1321.08).divide(temp).divide(temp).subtract(273);
  return lst;
};

var l8lsr = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_129038_20170501'),/*Replace Here*/
    l8raw = ee.Image('LANDSAT/LC08/C01/T1/LC08_129038_20170501'),/*Replace Here*/
    lse = LSECalculation(l8lsr),
    rad = ee.Algorithms.Landsat.calibratedRadiance(l8raw).select('B10');

var t = 0.76, // Get from http://atmcorr.gsfc.nasa.gov
    up = 1.95, // Get from http://atmcorr.gsfc.nasa.gov
    down = 3.2, // Get from http://atmcorr.gsfc.nasa.gov
    bbrad = BBRCalculation(t,up,down,lse,rad);

var lst = LSTCalculation(bbrad);

生涯第一篇博客,记下格言:人类进化,世界大同。

  • 14
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值