GEE实践应用|热岛效应(一)地表温度计算
目录
1.学习目标
2.理论介绍
3.从MODIS获得地表温度
4.从Landsat卫星获得地表温度
1.学习目标
①了解如何使用GEE计算地表温度
2.理论介绍
城市化涉及用建筑物、道路和停车场等建筑结构取代自然景观。这种土地覆盖的改变也改变了土地表面的特性。这些变化的范围从表面反射和吸收的辐射量到热量如何从表面消散(例如,为城市发展而去除植被会减少蒸发冷却)。这些地表特性的变化可以改变当地的天气和气候。由于城市化而引起的当地气候变化被研究最多的是城市热岛(UHI)效应。城市热岛效应是指一个城市比其周围环境或同等的未城市化地表温度更高的现象,我们对城市热岛效应的了解已有近 200 年的历史 。
传统上,城市热岛指数被定义为气象站测量的城市与城外一些农村参考点之间的气温差异。这种方法的一个问题是,城市的不同部分可能有不同的气温,因此很难捕获整个城市的城市热岛。使用热带中的卫星观测使我们能够获得另一种温度测量方法:the radiometric skin temperature,通常称为陆地温度表面温度(LST)。我们可以使用LST来计算地表UHI(SUHI)强度,包括它在城市内如何在像素尺度上变化。这里需要强调的是,卫星观测到的UHI值和使用空气计算出的UHI值温度测量结果可能会有很大差异。
3.从MODIS获得地表温度
地表温度可以从 MODIS Terra 和 Aqua 卫星产品等衍生产品中提取,也可以直接根据热波段中的卫星测量结果进行估算。我们将使用中国重庆市作为感兴趣区域来探索这两种选择(图 1)。我们将从 MODIS LST开始。
我们首先加载重庆市的边界矢量数据,使用的代码如下,加载结果如图1所示:
// Load feature collection of chongqing from user assets.
var region = ee.FeatureCollection(table);
// Get dissolved feature collection using an error margin of 50 meters.
var region = region.union(50);
// Set map center and zoom level (Zoom level varies from 1to 20).
//Map.setCenter(region, 12);
// Add layer to map.
Map.addLayer(region, {}, 'chongqing boundary');
图1|重庆的边界
接下来,我们加载 MODIS MYD11A2 版本 6 产品,该产品提供来自 Aqua 卫星的八天 LST 合成数据。这对应于大约下午 1:30 的穿越赤道时间,白天和夜间凌晨1:30。相比之下,Terra 平台上的 MODIS 传感器(MOD11A2 版本 6)的通过时间约为当地时间上午10:30 和晚上10:30。
// Load MODIS image collection from the Earth Engine datacatalog.
var modisLst = ee.ImageCollection('MODIS/006/MYD11A2');
// Select the band of interest (in this case: Daytime LST).
var landSurfTemperature = modisLst.select('LST_Day_1km');
我们仅想关注夏季 SUHI,因此我们将使用一年中的日期过滤器组合每年6月1日(第152天)到8月31 日(第243天)的图像来创建LST的五年夏季合成:
// Create a summer filter.
var sumFilter = ee.Filter.dayOfYear(152, 243);
// Filter the date range of interest using a date filter.
var lstDateInt = landSurfTemperature
.filterDate('2014-01-01', '2019-01-01').filter(sumFilter);
// Take pixel-wise mean of all the images in thecollection.
var lstMean = lstDateInt.mean();
现在,我们将此图像转换为以摄氏度为单位的 LST,并遮盖所有水像素(水的高比热容会影响 LST,我们关注于陆地像素)。对于水掩模,我们使用全球地表水数据集,为了转换像素值,我们使用数据提供者提供的波段的缩放因子,然后减去 273.15 以从开尔文转换为摄氏度,比例因子可以在Earth Engine 数据摘要页面中找到(图2)。
图2 数据总结中的比例因子
最后,我们使用城市边界裁剪图像并将图层添加到地图中,如图3所示。
// Multiply each pixel by scaling factor to get the LST values.
var lstFinal = lstMean.multiply(0.02);
// Generate a water mask.
var water = ee.Image('JRC/GSW1_0/GlobalSurfaceWater').select('occurrence');
var notWater = water.mask().not();
// Clip data to region of interest, convert to degree Celsius, and mask water pixels.
var lstNewHaven = lstFinal.clip(region).subtract(273.15)
.updateMask(notWater);
// Add layer to map.
Map.addLayer(lstNewHaven, {
palette: ['blue', 'white', 'red'],
min: 25,
max: 38
},
'LST_MODIS');
图3|中国重庆白天 MODIS Aqua LST 的五年夏季合成图。红色像素显示较高的 LST 值,蓝色像素显示较低的值
4.从Landsat卫星获得地表温度
使用 MODIS LST 相对简单,因为数据已经由 NASA 团队处理。我们还可以从Landsat获取LST,它的原始分辨率(根据卫星的不同,在60m到~120 m之间)比1kmMODIS像素要精细得多。然而,我们需要根据热波段中的测量结果自行推导出LST,这通常还涉及对表面发射率的一些估算。
物体的表面发射率 (ε) 是指与相同温度下的黑体相比,物体发射热辐射的效率,范围可以从 0(对于完美反射体)到1(对于完美吸收体和发射体)。由于卫星捕获的热辐射是 LST 和 ε 的函数,因此您需要准确地规定或估计ε以获得正确的 LST。让我们考虑一种使用 Landsat8数据的简单方法。
我们将首先加载陆地卫星数据、云筛选,然后过滤到感兴趣的时间和区域。继续在同一脚本中添加以下代码:
// Function to filter out cloudy pixels.
function cloudMask(cloudyScene) {
// Add a cloud score band to the image.
var scored =ee.Algorithms.Landsat.simpleCloudScore(cloudyScene);
// Create an image mask from the cloud score band and specify threshold.
var mask = scored.select(['cloud']).lte(10);
// Apply the mask to the original image and return the masked image.
return cloudyScene.updateMask(mask);
}
// Load the collection, apply coud mask, and filter to date and region of interest.
var col = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterBounds(region)
.filterDate('2014-01-01', '2019-01-01')
.filter(sumFilter)
.map(cloudMask);
print('Landsat collection', col);
创建中值合成作为进一步减少云影响的简单方法后,我们遮盖水像素并选择亮度温度波段。
// Generate median composite.
var image = col.median();
// Select thermal band 10 (with brightness temperature).
var thermal = image.select('B10')
.clip(region)
.updateMask(notWater);
Map.addLayer(thermal, {
min: 295,
max: 310,
palette: ['blue', 'white', 'red']
},
'Landsat_BT');
亮度温度(图 4)是相当于从大气层顶部逸出的红外辐射的温度,假设地球是一个黑体。它与LST不同,LST 需要考虑大气吸收和再发射以及地表的发射率。导出像素级发射率的一种方法是作为像素植被比例的函数。为此,我们首先根据 Landsat 表面反射率数据计算归一化植被指数 (NDVI)(见图 5)。
// Calculate Normalized Difference Vegetation Index (NDVI)
// from Landsat surface reflectance.
var ndvi = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(region)
.filterDate('2014-01-01', '2019-01-01')
.filter(sumFilter)
.median()
.normalizedDifference(['SR_B5',
'SR_B4']).rename('NDVI')
.clip(region)
.updateMask(notWater);
Map.addLayer(ndvi, {
min: 0,
max: 1,
palette: ['blue', 'white', 'green']
},
'ndvi');
图4|重庆市五年夏季陆地卫星亮温合成中值,红色像素显示较高的值,蓝色像素显示较低的值
图5|重庆市上空5年夏季Landsat NDVI合成中值,白色像素显示较高的 NDVI 值,蓝色像素显示较低的值
为了将每个像素的 NDVI 映射到植被像素的实际部分(植被覆盖率),我们接下来使用基于每个像素的 NDVI 值范围的关系。
// Find the minimum and maximum of NDVI. Combine the reducers
// for efficiency (single pass over the data).
var minMax = ndvi.reduceRegion({
reducer: ee.Reducer.min().combine({
reducer2: ee.Reducer.max(),
sharedInputs: true
}),
geometry: region,
scale: 30,
maxPixels: 1e9
});
print('minMax', minMax);
var min = ee.Number(minMax.get('NDVI_min'));
var max = ee.Number(minMax.get('NDVI_max'));// Calculate fractional vegetation.
var fv = ndvi.subtract(min).divide(max.subtract(min)).rename('FV');
Map.addLayer(fv, {
min: 0,
max: 1,
palette: ['blue', 'white', 'green']
}, 'fv');
现在,我们使用基于植被覆盖率的发射率经验模型。
// Emissivity calculations.
var a = ee.Number(0.004);
var b = ee.Number(0.986);
var em =
fv.multiply(a).add(b).rename('EMM').updateMask(notWater);
Map.addLayer(em, {
min: 0.98,
max: 0.99,
palette: ['blue', 'white', 'green']
},
'EMM');
如图 6 所示,与植被上方相比,建筑结构上方的发射率较低,这是预期的。请注意,估计发射率的不同模型会导致 LST 值以及 SUHI 强度存在一些差异。
然后,我们将该发射率与亮度温度结合起来,使用简单的单通道算法计算每个像素的 LST,这是辐射传输方程的线性近似。
图6|重庆的地表发射率,基于植被比例。绿色像素显示较高的值,白色像素显示较低的值
// Calculate LST from emissivity and brightness temperature.
var lstLandsat = thermal.expression(
'(Tb/(1 + (0.001145* (Tb / 1.438))*log(Ep)))-273.15', {
'Tb': thermal.select('B10'),
'Ep': em.select('EMM')
}).updateMask(notWater);
Map.addLayer(lstLandsat, {
min: 25,
max: 35,
palette: ['blue', 'white', 'red'],
},
'LST_Landsat');
图7|重庆市上空陆地卫星得出的地表温度的五年夏季中值合成图。红色像素显示较高的 LST 值,蓝色像素显示较低的值
相关文章:

GEE实践应用|热岛效应(一)地表温度计算
目录 1.学习目标 2.理论介绍 3.从MODIS获得地表温度 4.从Landsat卫星获得地表温度 1.学习目标 ①了解如何使用GEE计算地表温度 2.理论介绍 城市化涉及用建筑物、道路和停车场等建筑结构取代自然景观。这种土地覆盖的改变也改变了土地表面的特性。这些变化的范围从表面反射和…...
Java查找算法知识点(含面试大厂题和源码)
查找算法是计算机科学中的基础概念,它们在解决实际问题时扮演着关键角色。了解和掌握不同的查找算法,能够帮助我们更高效地处理数据检索任务。以下是一些关于查找算法的关键知识点: 算法分类: 线性查找算法:按照顺序逐…...

67、yolov8目标检测和旋转目标检测算法部署Atlas 200I DK A2开发板上
基本思想:需求部署yolov8目标检测和旋转目标检测算法部署atlas 200dk 开发板上 一、转换模型 链接: https://pan.baidu.com/s/1hJPX2QvybI4AGgeJKO6QgQ?pwdq2s5 提取码: q2s5 from ultralytics import YOLO# Load a model model YOLO("yolov8s.yaml")…...

A Little Is Enough: Circumventing Defenses For Distributed Learning
联邦学习的攻击方法:LIE 简单的总结,只是为了能快速想起来这个方法。 无目标攻击 例如总共50个客户端,有24个恶意客户端,那么这个时候,他需要拉拢2个良性客户端 计算 50 − 24 − 2 50 − 24 0.923 \frac{50-24-2}{…...

文心一言 VS 讯飞星火 VS chatgpt (225)-- 算法导论16.3 7题
七、推广赫夫曼算法,使之能生成三进制的码字(即码字由符号0、1、2组成),并证明你的算法能生成最优三进制码。如果要写代码,请用go语言。 文心一言: 推广赫夫曼算法以生成三进制码字需要对算法进行一定的修改,确保在每…...

【计算机】——51单片机——持续更新
单片机是一种内部包含CPU、存储器和输入/输出接口等电路的集成电路(IC芯片) 单片机是单片微型计算机(Single Chip Microcomputer)的简称,用于控制领域,所以又称为微型控制器(Microcontroller U…...

QT资源添加调用
添加资源文件,新建资源文件夹,命名resource,然后点下一步,点完成 资源,右键add Prefix 添加现有文件 展示的label图片切换 QLabel *led_show; #include "mainwindow.h" #include<QLabel> #include&l…...
LeetCode-49. 字母异位词分组【数组 哈希表 字符串 排序】
LeetCode-49. 字母异位词分组【数组 哈希表 字符串 排序】 题目描述:解题思路一:哈希表和排序,这里最关键的点是,乱序单词的排序结果必然是一样的(从而构成哈希表的key)。解题思路二:解题思路三…...

绘制特征曲线-ROC(Machine Learning 研习十七)
接收者操作特征曲线(ROC)是二元分类器的另一个常用工具。它与精确度/召回率曲线非常相似,但 ROC 曲线不是绘制精确度与召回率的关系曲线,而是绘制真阳性率(召回率的另一个名称)与假阳性率(FPR&a…...

.Net 知识杂记
记录平日中琐碎的.net 知识点。不定期更新 目标框架名称(TFM) 我们创建C#应用程序时,在项目的工程文件(*.csproj)中都有targetFramework标签,以表示项目使用的目标框架 各种版本的TFM .NET Framework .NET Standard .NET5 及更高版本 UMP等 参考文档&a…...

海豚【货运系统源码】货运小程序【用户端+司机端app】源码物流系统搬家系统源码师傅接单
技术栈:前端uniapp后端vuethinkphp 主要功能: 不通车型配置不通价格参数 多城市定位服务 支持发货地 途径地 目的地智能费用计算 支持日期时间 预约下单 支持添加跟单人数选择 支持下单优惠券抵扣 支持司机收藏订单评价 支持订单状态消息通知 支…...

01---java面试八股文——mybatis-------10题
1、什么是MyBatis Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,…...

增强现实(AR)的开发工具
增强现实(AR)的开发工具涵盖了一系列的软件和平台,它们可以帮助开发者创造出能够将虚拟内容融入现实世界的应用程序。以下是一些在AR领域内广泛使用的开发工具。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…...

用Unity制作正六边形拼成的地面
目录 效果演示 1.在Unity中创建正六边形 2.创建一个用于管理正六边形的类 3.创建一个用于管理正六边形地面的类 4.创建一个空对象并将游戏控制脚本挂上 5.设置正六边形碰撞所需组件 6.创建正六边形行为触发脚本并挂上 7.创建圆柱体——田伯光 8.创建圆柱体移动脚本 运…...
Spark部署详细教程
Spark Local环境部署 下载地址 https://dlcdn.apache.org/spark/spark-3.4.2/spark-3.4.2-bin-hadoop3.tgz 条件 PYTHON 推荐3.8JDK 1.8 Anaconda On Linux 安装 本次课程的Python环境需要安装到Linux(虚拟机)和Windows(本机)上 参见最下方, 附: Anaconda On Linux 安装…...

慧天[HTWATER]:创新城市水务科技,引领行业变革
【城市内涝水文水动力模型介绍】 慧天[HTWATER]软件:慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行…...

vscode调试Unity
文章目录 vscode调试UnityC#环境需求开始调试 Lua添加Debugger环境配置联系.txt文件配置Java环境 添加调试代码断点不生效的问题 vscode调试Unity C# 现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是&am…...
JavaScript是如何实现页面渲染的
JavaScript实现页面渲染主要涉及到对DOM的操作、样式的修改以及与后端数据的交互。以下是JavaScript实现页面渲染的主要步骤和方式: 一、DOM操作 创建和修改元素:JavaScript可以使用document.createElement()来创建新的DOM元素,使用appendC…...

【YOLOv8 代码解读】数据增强代码梳理
1. LetterBox增强 当输入图片的尺寸和模型实际接收的尺寸可能不一致时,通常需要使用LetterBox增强技术。具体步骤是先将图片按比例缩放,将较长的边缩放到设定的尺寸以后,再将较短的边进行填充,最终短边的长度为stride的倍数即可。…...

安卓调试桥ADB
Logcat 命令行工具 | Android Studio | Android Developers 什么是ADB ADB 全称为 Android Debug Bridge ,是 Android SDK (安卓的开发工具)中的一个工具,起到调试桥的作用,是一个 客户端 - 服务器端程序 。其中 …...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...