1 背景知识
基于遥感数据的地表温度(LST)反演目前得到了广泛的应用,尤其是面向大尺度、长时间范围的温度数据需求,遥感方法更是可以凸显其优势。目前,基于各类遥感数据源的地表温度反演方法不断得以改进,精度亦不断提升。之前的博客,也分别基于不同角度对遥感数据温度反演的方法、原理以及具体操作加以详细介绍:
博客1:基于ENVI的Landsat 7地表温度(LST)大气校正方法反演与地物温度分析。
博客2:基于ENVI与ERDAS的Landsat 7 ETM+影像单窗算法地表温度(LST)反演。
而利用遥感图像处理软件,对地表温度加以反演,其操作整体较为繁琐,尤其是需要处理大量遥感数据时,其数据下载、操作步骤与结果保存等,都是很大的问题。因此,本文介绍一种基于谷歌地球引擎(Google Earth Engine,GEE)的地表温度反演算法及其代码。
该方法基于Landsat 4/5/7/8卫星反演地表温度。基于该算法,我们可以直接在GEE中获取遥感图像、计算LST,并选择下载结果文件,非常方便快捷。
本文所依据的文献为:Google Earth Engine Open-Source Code for Land Surface Temperature Estimation from the Landsat Series,发表于Remote Sensing。大家可以查看:https://www.mdpi.com/2072-4292/12/9/1471。
2 算法介绍
该论文基于Statistical Mono-Window(SMW)算法,对地表温度加以求解。其中,简单地说,SMW算法即是通过简单的线性关系,对由单热红外波段所得的大气表观亮温与地表温度之间的经验关系加以表示,从而计算得到LST。
3 代码
代码在这里:https://code.earthengine.google.com/?accept_repo=users/sofiaermida/landsat_smw_lst。
点击链接,浏览器将自动进入你的GEE帐号;而代码则将会自动出现在左侧"Script"的“Reader”中:
其中,modules
为计算LST的综合代码库,我们仅仅需要修改、运行其下方example_1.js
或example_2.js
的内容即可;其中,依据作者的注释我们可以知道,example_1.js
用以计算单时相LST,而example_2.js
则为多时相LST。
我们就以example_1.js
为例。其中,在代码的这一部分:
// select region of interest, date range, and landsat satellite var geometry = ee . Geometry . Rectangle([-8.91, 40.0, -8.3, 40.4]); var satellite = 'L8' ; var date_ start = '2018-05-15' ; var date_ end =' 2018-05-31' ; var use_ ndvi= true;
由上到下分别是修改ROI区域(即需要计算LST的区域)、基于的卫星(即Landsat 4/5/7/8)、所依据遥感图像开始和结束的时间,以及是否引入NDVI计算。大家在实际操作时,依据自己的需要自行修改这部分内容即可。
4 效果
在这里,我们将作者原定的位于美国的ROI修改为武汉市局部地区,以此为例执行代码,效果如下:
其中,黑色区域是我的ROI,底图便是已经计算出的温度数据图层了(由此可知,代码默认计算整个可见范围的LST,这里的ROI仅仅是方便我们查看、对比感兴趣区域内是否各栅格点均有LST数据)。整个代码执行的过程仅仅需要几秒钟,和用遥感图像处理软件操作比起来真的快了很多。
随后,依据需要自行选择下载结果数据的范围、保存方法等即可。是不是非常方便~
最后,大家在使用上述代码时,也要记得按照论文作者的相关要求来哦,需要规范引用的场合要引用清楚,尊重大家的劳动成果。