【GEE】基于GEE-Landsat8数据集地表温度反演(LST热度计算)

老样子,最近在做生态方面的项目,然后需要分析城市的热岛效应,想了想还是用GEE计算比较简单,直接下载影像太麻烦了。所以在网上看看了资料,踩了踩坑终于是将代码写出来了。秉承着取之于民、用之于民的想法,今天给大家分享一下如何使用GEE的Landsat8数据集进行地表温度的反演。

踩坑1:网上大部分的资源都是C01数据集,但是GEE在2021年的时候就已经将Landsat8数据整合到C02数据集中了,所以直接用网上的代码可能会出现波段不存在的报错!

踩坑2:资源质量不一,有的用地表反射率产品,有的用大气产品导致代码复杂,不容易复现!

一、思路

Landsat8数据的L2级产品的热红外波段ST_B10就直接对应着地表温度,只需简单计算即可获取摄氏度。(问就是不知道,以前做的都是单床算法啥的计算NDVI进行反演)GEE官方给出了这个example所以就直接用了。

二、代码

记得将自己的研究区导进去,默认命名是table,所以导进去直接运行即可。

javascript 复制代码
var roi = table //感兴趣的区域信息
var style_set = {color:"red",fillColor:"00000000"}; //设置地图中要素的颜色和填充颜色
Map.addLayer(roi.style(style_set),{},"shape") //使用之前定义的样式集将roi添加到地图中。该地图层默认使用几何形状(例如多边形)来表示区域
Map.centerObject(roi,10) //将地图中心设置为roi对象,并设置缩放级别为10

//本示例演示了使用Landsat 8 Collection 2,Level 2的QA_PIXEL波段(CFMask)来屏蔽不需要的像素。

//定义函数maskL8sr,接受一个图像作为输入,并对图像进行处理
function maskL8sr(image) {
  // Bit 0 - Fill
  // Bit 1 - Dilated Cloud
  // Bit 2 - Cirrus
  // Bit 3 - Cloud
  // Bit 4 - Cloud Shadow
  var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
  //从输入图像中选择QA_PIXEL波段,使用位运算和掩码来识别填充、云、云影等像素
  var saturationMask = image.select('QA_RADSAT').eq(0); //从输入图像中选择QA_RADSAT波段,并识别未饱和的像素。
  
  // 将缩放因子应用于适当的频带
  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)
      .updateMask(qaMask)
      .updateMask(saturationMask);
}


// 将函数映射到一年的数据上
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
                     .filterDate('2022-01-01', '2022-12-31')
                     .map(maskL8sr)
                     .median() //中值合成
                     .clip(roi); //裁剪

// Display the results.
// Map.setCenter(-4.52, 40.29, 7);  // Iberian Peninsula

// print(dataset)
var img = collection.select("ST_B10") //从处理后的图像集合中选择热红外波段('ST_B10')
var lst = img.expression(
    'B1-273.15',
    {
        B1:img.select('ST_B10'), 
    }); //对选择的热红外波段进行计算表达式操作
    
print("LST直方图", ui.Chart.image.histogram(lst, roi, 100, 258)) //打印直方图,显示热红外波段处理后的数据分布情况
print(lst) //打印热红外波段处理后的数据

Map.addLayer(lst, {'min':2,'max':49,'palette':["eff3ff","c6dbef","9ecae1","6baed6","4292c6","2171b5","084594",
"fff5f0","fee0d2","fcbba1","fc9272","fb6a4a","ef3b2c","cb181d","99000d"]}, 'lst')
// 将处理后的热红外波段数据添加到地图上,并设定显示范围和颜色映射

function exportImage(image, roi, fileName) {  
    Export.image.toDrive({  
       image: image,  
       description: "Landsat8"+fileName,  
       fileNamePrefix: fileName,  //文件命名
       folder: "Landsat 8",  //保存的文件夹
       scale: 30,  //分辨率
       region: roi,  //研究区
       maxPixels: 1e13,  //最大像元素
       crs: "EPSG:4326"  //设置投影
   });  
 }
exportImage(lst,roi,"lst")

三、效果图

我这里输出了一个温度直方图分布图,一个栅格数据。栅格数据的导出代码也写进去了。运行后直接到Tasks里面下载即可!

这个专栏开了之后也不知道怎么分享博文,感觉没什么好写的,不如直接放代码。但是有感觉光放代码有比较单调,很烦。等后期看看如何改进,大家有什么问题可以随时留言交流!

相关推荐
九河云2 小时前
确保在AWS上的资源安全:构建坚不可摧的云安全防线
安全·云计算·aws
KubeSphere 云原生2 小时前
云原生周刊:Prometheus 3.0 Beta 发布|2024.09.16
云计算·k8s·容器平台·kubesphere
Jasonakeke10 小时前
本地镜像发布到阿里云
阿里云·云计算
奔跑的蜗牛fzq18 小时前
阿里云专业翻译api对接
阿里云·云计算
仙剑魔尊重楼20 小时前
FL Studio 24.1.1.4285中文破解完整版免费下载FL 2024注册密钥完整版crack百度云安装包下载
云计算·百度云·fl studio·fl studio 21·fl studio 24
风清已存在1 天前
阿里云OSS与IOT使用详解
物联网·阿里云·云计算
阿里云视频云1 天前
信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过
阿里云·云计算·媒体
阿里云视频云2 天前
直播标准权威发布,阿里云RTS获首批卓越级评估认证
阿里云·云计算
MGT_97962 天前
ESP01的AT指令连接到阿里云平台
嵌入式硬件·物联网·阿里云·云计算
gikod2 天前
【智路】智路OS airos-edge
物联网·edge·云计算·自动驾驶·边缘计算·交通物流