GEE:基于Landsat8计算陆地表面温度(Land Surface Temperature,LST)

作者:CSDN @ _养乐多_

本文将介绍在Google Earth Engine(GEE)平台上使用 Landsat 8 卫星影像数据计算陆地表面温度(Land Surface Temperature,LST)的代码。

结果如下图所示,

在这里插入图片描述


文章目录

      • 一、参考内容
      • 二、示例代码链接
      • 三、完整示例代码


一、参考内容

单窗算法:Google Earth Engine Open-Source Code for Land Surface Temperature Estimation from the Landsat Series

博客:https://medium.com/@ridhomuh002/analyzing-land-surface-temperature-lst-with-landsat-8-data-in-google-earth-engine-f4dd7ca28e70

主要公式包括:

植被覆盖率(FV)计算公式: ( ( N D V I − N D V I m i n ) / ( N D V I m a x − N D V I m i n ) ) 2 ((NDVI - NDVI_min) / (NDVI_max - NDVI_min))^2 ((NDVINDVImin)/(NDVImaxNDVImin))2
辐射率(EM)计算公式: 0.004 ∗ F V + 0.986 0.004 * FV + 0.986 0.004FV+0.986
陆地表面温度(LST)计算公式: ( T B / ( 1 + ( λ ∗ ( T B / 1.438 ) ) ∗ l n ( e m ) ) ) − 273.15 (TB / (1 + (λ * (TB / 1.438)) * ln(em))) - 273.15 (TB/(1+(λ(TB/1.438))ln(em)))273.15
其中,TB 代表热红外波段的亮度温度,em 代表辐射率,λ 代表波长(对应 Landsat 8 中的波段 10)。

二、示例代码链接

https://code.earthengine.google.com/9ce60d3992ea71ddd75c57e7de3acfa8?noload=true

三、完整示例代码

//#####################################################################################
//#                                                                                 #\\
//#                    Land Surface Temperature(LST) MAPPING                        #\\
//#                                                                                 #\\
//#####################################################################################// date: 2024-03-11
// author: YangLeDuo// 自定义研究区矢量边界的显示样式
var roi = table
var styling={color:'green',fillColor:'00000000'}
Map.addLayer(roi.style(styling),{},"roi");
Map.centerObject(roi, 8);// 设置单波段配色方案         
var Single_bandVisParam = {  min: 8,  max: 54,  palette: ['C2523C','F2B60E','77ED00','1BAA7D','0B2C7A',]
};//利用QA波段生成云掩模
function maskclouds(image) {                var cloudShadowBitMask = (1 << 3);var cloudsBitMask = (1 << 5);var qa = image.select('QA_PIXEL');var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).and(qa.bitwiseAnd(cloudsBitMask).eq(0));return image.updateMask(mask);
}function L8applyScaleFactors(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);
}
//#############################################################################################
//定义数据集
var L8_image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2').filterDate('2020-01-01', '2020-12-31').filter(ee.Filter.calendarRange(1,12,"month")) //选择月份.filterBounds(roi).filter(ee.Filter.lt('CLOUD_COVER', 20)).map(maskclouds).map(L8applyScaleFactors).median().clip(roi);
print('L8_dataset',L8_image)//NDVI
var L8_NDVI = L8_image.expression('(NIR-Red)/(NIR+Red)', {'NIR': L8_image.select('SR_B5'),'Red': L8_image.select('SR_B4'),})// 计算AOI内的最小NDVI值
var ndviMin = ee.Number(L8_NDVI.reduceRegion({reducer   : ee.Reducer.min(),geometry  : roi,scale     : 30,maxPixels : 1e9
}).values().get(0));// 计算AOI内的最大NDVI值
var ndviMax = ee.Number(L8_NDVI.reduceRegion({reducer   : ee.Reducer.max(),geometry  : roi,scale     : 30,maxPixels : 1e9
}).values().get(0));// 植被覆盖率(FV)计算
// 公式: ((NDVI - NDVI_min) / (NDVI_max - NDVI_min))^2// 使用指定范围内的NDVI值计算植被覆盖率(FV)。
// NDVI_min表示最小NDVI值,NDVI_max表示最大NDVI值
var fv = ((L8_NDVI.subtract(ndviMin)).divide(ndviMax.subtract(ndviMin))).pow(ee.Number(2)).rename('FV');// 辐射率计算
// 公式: 0.004 * FV + 0.986// 使用植被覆盖率(FV)计算陆地表面辐射率(EM)。
// 0.004系数表示由于植被引起的辐射率变化,
// 0.986表示其他表面的基本辐射率。var em = fv.multiply(ee.Number(0.004)).add(ee.Number(0.986)).rename('EM');// 选择热带波段(波段10)并重命名
var thermal = L8_image.select('ST_B10').rename('thermal');// 现在,让我们计算陆地表面温度(LST)// 公式: (TB / (1 + (λ * (TB / 1.438)) * ln(em))) - 273.15
var L8_LST = thermal.expression('(TB / (1 + (0.00115 * (TB / 1.438)) * log(em))) - 273.15', {'TB': thermal.select('thermal'), // 选择热带波段(TB)'em': em // 分配辐射率(em)}).rename('LST');var lstMin = ee.Number(L8_LST.reduceRegion({reducer   : ee.Reducer.min(),geometry  : roi,scale     : 30,maxPixels : 1e9
}).values().get(0));// 计算AOI内的最大NDVI值
var lstMax = ee.Number(L8_LST.reduceRegion({reducer   : ee.Reducer.max(),geometry  : roi,scale     : 30,maxPixels : 1e9
}).values().get(0));print("最小陆地表面温度:", lstMin);
print("最大陆地表面温度:", lstMax);Map.addLayer(L8_LST, Single_bandVisParam, 'LST');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT Prompt方法原理详解

在人工智能的浪潮中,ChatGPT以其出色的对话生成能力引起了广泛关注。其强大的功能背后,离不开其独特的Prompt方法。本文将深入剖析ChatGPT Prompt方法的原理,带领读者了解其背后的奥秘。 ChatGPT Prompt方法的核心在于通过精心设计的提示语(Prompt),引导模型生成符合要求…

阿里P8解析自动化测试工具 —— SeleniumAppium!

自动化测试&#xff0c;利用自动化测试工具&#xff0c;通过录制/编程方式实现测试活动&#xff0c;发现被测对象存在的缺陷&#xff0c;从而替代手工测试活动。自动化测试不局限于某个具体测试阶段&#xff0c;也不局限被测对象的类型&#xff0c;只要满足自动化测试的必要条件…

数据库--SQL语言-1

练习网站&#xff1a;自学SQL网 Select 查询语法复习 SELECT column, another_column, …FROM mytableWHERE condition AND/OR another_condition AND/OR …; 操作符号&#xff1a; 如果属性是字符串, 我们会用到字符串相关的一些操作符号&#xff0c;其中 LIKE&#xff08…

day04-Maven-SpringBootWeb入门

文章目录 01. Maven1.1 课程安排1.2 什么是Maven1.3 Maven的作用1.4 Maven模型1.5 Maven仓库1.6 Maven安装1.6.1 下载1.6.2 安装步骤 2 IDEA集成Maven2.1 配置Maven环境2.1.1 当前工程设置2.1.2 全局设置 2.2 创建Maven项目2.3 POM配置详解2.4 Maven坐标详解2.5 导入Maven项目 …

【axios】你的进度条准确吗

1、axios监听进度 上传和下载操作在前端中是非常常见的&#xff0c;当我们想知道上传或下载的进度时也不难&#xff0c;axios已经实现了监听进度的方法 import axios from axios// 上传请求 axios.post(/api/v1/upload, {data: xxx},{// onUploadProgress回调可以获取进度onU…

mysql 常用命令

1、显示锁的时间 show status like innodb_row_lock%;2、锁一行的方法 //开启 begin; //锁一行 select * from tbl_user where name 1aa1 for update;//解锁 commit;3、设置不自动提交 set autocommit 0; //自动提交 set autocommit 1;4、查看是否支持profile show vari…

2 月 Web3 游戏行业动态

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;区块链游戏研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;区块链游戏领域在加密货币价格上涨和活跃用户激增的推动下&#xff0c;实现了显著增长。然而&#xff0c;行业在维持用户参与度和留存率方面…

NodeJS实现线性查找算法

NodeJS实现线性查找算法 以下是使用 Node.js 实现线性搜索算法的示例代码&#xff1a; function linearSearch(arr, target) {for (let i 0; i < arr.length; i) {if (arr[i] target) {return i; // 如果找到目标&#xff0c;返回索引}}return -1; // 如果未找到目标&am…

ES6基础3

函数的扩展 基本用法 函数参数的默认值 ES6允许为函数的参数设置默认值&#xff0c;即直接写在参数定义的后面。 参数变量是默认声明的&#xff0c;所以不能用let或const再次声明。下面代码中&#xff0c;参数变量x是默认声明的&#xff0c;在函数体中&#xff0c;不能用let或c…

微服务配置中心

什么是配置中心 配置中心是一种用于管理应用程序或系统配置信息的中央服务。它允许开发人员在多个环境&#xff08;如开发、测试、生产&#xff09;之间共享配置&#xff0c;并且可以在不停止应用程序的情况下动态更新配置。 配置中心是统一管理各种应用配置的工具。它能够集中…

注解、反射

前言 注解与反射 文章目录 前言一、注解二、反射1、作用 一、注解 注解不影响程序逻辑&#xff0c;但会被编译器在不同阶段&#xff08;编译、执行&#xff09;执行&#xff1b; 例如&#xff0c;Override 注解会在编译时执行&#xff0c;用来检验代码是否符合规范&#xff0c…

openssl3.2 - exp - export RSA pubKey from RSA privKey on memory

文章目录 openssl3.2 - exp - export RSA pubKey from RSA privKey on memory概述笔记END openssl3.2 - exp - export RSA pubKey from RSA privKey on memory 概述 官方给的例子(openssl3.2 - 官方demo学习 - encode - rsa_encode.c)是基于文件操作的. 我的工程只需要opens…

【Ubuntu】原生Ubuntu-dock 栏 安装与卸载

1.查看是否安装 Ubuntu-dock&#xff08;新版本的Ubuntu自带Ubuntu-dock version> 18.04&#xff09; gnome-extensions list 2.安装Ubuntu-dock sudo apt install gnome-shell-extension-ubuntu-dock 3.重启&#xff0c;一定要重启&#xff01;&#xff01;&#xff01;…

LeetCode2.07链表相交

2.07链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结…

Linux中排查磁盘存储不足问题Centos7.9

操作系统Centos7.9 df -h # 命令查看磁盘空间 du -ah --max-depth1 / # 查看根目录下各个文件占用情况max-depth表示目录的深度。 查看某个目录du -bsh命令&#xff0c;看一下常用的usr目录大小 du -bsh /usr 进入目录用find命令找到大于100M文件find . -size 100M&#xff…

vue实现图片框选标注

前言 前端有一个需求&#xff0c;对上传的图片进行检测识别&#xff0c;通过返回的接口坐标数据&#xff0c;对图片的某些区域进行框选并标注。如图&#xff1a; 开始 1、上传功能使用elementui的upload插件&#xff1b; 2、在图片上进行标注功能是元素定位在图片上层&#x…

Java - 探究Java优雅退出的两种机制

文章目录 概述Java优雅停机_ ShutdownHook 机制步骤Code Java优雅停机_ 信号量机制SignalHandler 工作原理使用步骤Linux支持的信号量根据操作系统选择信号量Code 注意事项 概述 在Linux上通过kill -9 pid方式强制终止进程的副作用&#xff0c;这种方式虽然简单高效&#xff0…

SpringBoot项目中同时支持https和http协议

实用干货&#xff01;看壹哥如何在SpringBoot项目中同时支持https和http协议_springboot http htpps共存-CSDN博客

网络学习DAY3--TCP并发

思路一&#xff1a;多线程并发 缺点&#xff1a;资源浪费过大&#xff0c;且能实现的并发量有限。 思路二&#xff1a;IO通信 1.阻塞IO 没有任务时&#xff0c;挂起任务&#xff0c;节省资源&#xff0c;提高效率 2.非阻塞IO 未收到数据时一直执行&#xff0c;效率很低 …

小红书素人投放计划怎么做?

小红书素人投放是很多品牌在小红书推广打响的第一枪&#xff0c;素人铺量在小红书投放&#xff0c;可以奠定品牌在小红书的声量&#xff0c;小红书素人投放计划怎么做&#xff1f;前期规划好一切&#xff0c;才能在后期让我们的推广爆发出更好的效果。接下来伯乐网络传媒就来给…