news 2026/6/22 8:19:47

基于 GEE 使用 Landsat-9 卫星的 Level-2 级数据实现水体表面温度反演

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 使用 Landsat-9 卫星的 Level-2 级数据实现水体表面温度反演

目录

一、研究区初始化与地图配置

二、数据预处理函数

三、影像集合筛选与预处理

四、影像合成与可视化

五、结果导出至 Google Drive

六、关键技术要点总结与注意事项

七、运行结果


若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

本代码基于 Google Earth Engine(GEE)平台,利用 Landsat-9 卫星的 Level-2 级数据(LANDSAT/LC09/C02/T1_L2),通过数据预处理、水体提取、云影剔除等步骤,反演 2023 年夏季(6-9 月)研究区的水体表面温度,最终将结果导出至 Google Drive,为水文环境监测、生态评估等研究提供数据支持。

一、研究区初始化与地图配置

var roi = geometry; Map.centerObject(roi, 10); var roiLayer = ui.Map.Layer(roi, {color: 'red', fillColor: 'white'}, '研究区'); Map.add(roiLayer);
  • 研究区定义var roi = geometry中,geometry是预先在 GEE 地图界面绘制的研究区矢量图形(如多边形),代码通过该变量锁定分析范围,后续所有数据处理均限定在该区域内。
  • 地图居中与可视化
    • Map.centerObject(roi, 10)使地图自动居中到研究区,第二个参数 “10” 是地图缩放级别(范围 1-20,数值越大视图越清晰),确保研究区完整显示在视野中。
    • ui.Map.Layer(...)构建研究区的可视化图层,设置边界颜色为红色(color: 'red')、填充色为白色(fillColor: 'white'),并命名为 “研究区”,最后通过Map.add(roiLayer)将图层添加到地图界面,方便直观查看分析范围。

二、数据预处理函数

function preprocess(img) { // 1. 云与云影mask构建 var qa = img.select('QA_PIXEL'); var cloud = qa.bitwiseAnd(1 << 1).neq(0); var cirrus = qa.bitwiseAnd(2 << 1).neq(0); var cloud2 = qa.bitwiseAnd(3 << 1).neq(0); var shadow = qa.bitwiseAnd(4 << 1).neq(0); var cloud_mask = cloud.or(cirrus).or(cloud2).or(shadow); // 2. 地表反射率波段预处理 var ms = img.select('SR_B.*').multiply(2.75e-05).add(-0.2); // 3. NDWI计算与水体mask构建 var ndwi = ms.normalizedDifference(['SR_B3', 'SR_B5']).rename('ndwi'); var water_mask = ndwi.gt(0.1); // 4. 地表温度(LST)反演 var lst = img.select('ST_B10').multiply(0.00341802).add(149).subtract(273.15); // 5. 应用mask并保留时间属性 return lst.updateMask(water_mask).updateMask(cloud_mask.not()) .copyProperties(img, ['system:time_start']); }

该函数是代码核心,对单景 Landsat-9 影像执行“质量控制 - 波段处理 - 水体提取 - 温度反演”的完整流程,输入为单景影像(img),输出为预处理后的水体温度影像。

  • 云与云影剔除(质量控制)
    • Landsat-9 的QA_PIXEL波段是质量控制波段,通过位运算(bitwiseAnd)可提取特定质量信息。
    • 分别通过位运算识别普通云(cloud)、卷云(cirrus)、其他云类(cloud2)和云影(shadow),再通过or()函数将各类云及云影合并为cloud_mask(掩码图层,“1” 代表云 / 云影区域,“0” 代表有效区域)。
  • 地表反射率波段校准
    • img.select('SR_B.*')筛选所有地表反射率波段(SR_B1SR_B7,对应不同光谱范围)。
    • multiply(2.75e-05).add(-0.2)是 Landsat-9 Level-2 数据的官方校准公式,将原始数字量化值(DN 值)转换为实际地表反射率(无量纲,范围 0-1),为后续植被指数计算提供准确数据。
  • NDWI 计算与水体提取
    • normalizedDifference(['SR_B3', 'SR_B5'])计算归一化水体指数(NDWI),公式为(绿波段 - 近红外波段) / (绿波段 + 近红外波段),水体在 NDWI 中表现为高值。
    • ndwi.gt(0.1)设置阈值 0.1,将 NDWI 大于 0.1 的区域判定为水体,生成water_mask(“1” 为水体,“0” 为非水体)。
  • 地表温度反演
    • img.select('ST_B10')选择热红外波段(ST_B10),该波段记录了地物的热辐射信息。
    • multiply(0.00341802).add(149)是官方辐射定标公式,将 DN 值转换为绝对辐射亮度;subtract(273.15)将开尔文温度(K)转换为摄氏度(℃),最终得到地表温度(LST)。
  • 掩码应用与属性保留
    • updateMask(water_mask)保留水体区域、剔除非水体区域;updateMask(cloud_mask.not())保留非云 / 云影区域、剔除云污染区域,双重掩码确保最终结果仅包含 “无云的水体”。
    • copyProperties(img, ['system:time_start'])保留原始影像的时间属性(拍摄时间),为后续时间序列分析提供依据。

三、影像集合筛选与预处理

var l9 = ee.ImageCollection("LANDSAT/LC09/C02/T1_L2") .filterDate('2023-06-01', '2023-09-30') .filterBounds(roi) .map(preprocess);
  • 影像集合调用ee.ImageCollection("LANDSAT/LC09/C02/T1_L2")调用 GEE 内置的 Landsat-9 Level-2 影像集合,该集合已完成大气校正、辐射定标等预处理,可直接用于定量分析。
  • 时间筛选filterDate('2023-06-01', '2023-09-30')筛选 2023 年 6 月 1 日至 9 月 30 日的影像,聚焦夏季时段,符合研究目标。
  • 空间筛选filterBounds(roi)仅保留覆盖研究区的影像,剔除与研究区无关的影像,减少计算量。
  • 批量预处理map(preprocess)对筛选后的每景影像批量应用上述preprocess函数,生成预处理后的水体温度影像集合(l9)。

四、影像合成与可视化

var composite = l9.mean().clip(roi); var visParams = { min: -20, max: 35, palette: ['blue', 'cyan', 'green', 'yellow', 'red'] }; Map.addLayer(composite, visParams, 'Landsat9 Water Temp (°C)');
  • 时间平均合成l9.mean()对夏季所有预处理后的影像计算平均值,生成夏季水体温度均值影像,可减少单景影像的随机误差和云残留影响;clip(roi)确保结果严格限定在研究区内,避免边界外冗余数据。
  • 可视化参数设置
    • min: -20, max: 35设定温度显示范围(-20℃至 35℃),超出该范围的温度将被渲染为对应极值颜色。
    • palette定义颜色渐变方案:蓝色(低温)→青色→绿色→黄色→红色(高温),直观反映温度空间分布差异。
  • 地图添加图层Map.addLayer(...)将合成后的水体温度影像添加到地图,命名为 “Landsat9 Water Temp (°C)”,方便实时查看温度分布格局。

五、结果导出至 Google Drive

Export.image.toDrive({ image: composite, description: 'L9_WaterTemp_2023_Summer', folder: 'GEE_Exports', fileNamePrefix: 'L9_WaterTemp_2023_Summer', region: roi, scale: 30, crs: 'EPSG:4326', maxPixels: 1e13 });
  • 导出核心设置
    • image: composite指定导出的影像为夏季温度合成影像。
    • descriptionfileNamePrefix设定导出任务名称和文件前缀,便于后续在 Drive 中查找。
    • folder: 'GEE_Exports'指定导出文件存储在 Google Drive 中的 “GEE_Exports” 文件夹(需提前创建或允许 GEE 自动创建)。
  • 导出参数配置
    • region: roi限定导出范围为研究区。
    • scale: 30设定导出影像的空间分辨率为 30 米(Landsat-9 热红外波段原始分辨率为 100 米,此处通过重采样至 30 米,与反射率波段分辨率一致,便于后续分析)。
    • crs: 'EPSG:4326'设定空间参考系为 WGS84(全球通用地理坐标系),确保数据兼容性。
    • maxPixels: 1e13设定最大导出像素数,避免因研究区过大导致导出失败(1e13 足以覆盖大面积区域)。

六、关键技术要点总结与注意事项

关键技术要点总结:

  • 数据质量控制:通过QA_PIXEL波段的位运算,精准剔除云、卷云、云影等污染区域,确保水体温度数据的准确性。
  • 水体提取逻辑:利用 NDWI 指数对水体的敏感性,通过阈值法(0.1)快速分离水体与非水体,为温度反演限定目标区域。
  • 温度反演精度:采用 Landsat 官方提供的辐射定标公式和温度转换方法,保证反演结果的科学性和可比性。
  • GEE 高效性:通过ImageCollection的筛选、map批量处理和mean合成,实现大规模影像数据的快速处理,无需本地存储和计算资源。

注意事项:

  • 研究区geometry需提前在 GEE 地图界面绘制,支持点、线、面等矢量类型,面状区域需确保闭合。
  • 导出前需确保 Google 账号已登录,且 Drive 有足够存储空间(30 米分辨率的大面积影像可能占用较多空间)。
  • 夏季影像可能存在云量较多的情况,若合成后仍有云残留,可缩小时间范围或增加云掩膜的严格程度(如调整 NDWI 阈值或云识别位运算规则)。
  • 温度反演结果为地表温度(LST),而非水体内部温度,适用于表层水体环境监测,若需深层水温,需结合实测数据校正。

七、运行结果

研究区地理位置
研究区水体表面温度反演结果可视化
点击RUN即可下载数据

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 13:57:30

18、CocoaWGet编程:界面构建与代码实现

CocoaWGet编程:界面构建与代码实现 在开发CocoaWGet应用程序时,构建用户界面以及实现相关代码是关键步骤。下面将详细介绍如何完成这些任务。 1. 界面构建 在Interface Builder中构建CocoaWGet界面时,有多种方法可用于对齐控件,确保窗口控件的正确布局。以下是Interface…

作者头像 李华
网站建设 2026/6/19 17:17:36

19、CocoaWGet 程序扩展与完善

CocoaWGet 程序扩展与完善 1. 程序基础功能回顾 在 Cocoa 编程中,有一段代码用于执行子任务并获取其输出: [task setStandardOutput:pipe]; else[task setStandardError:pipe]; [task setLaunchPath:taskName]; [task setArguments:args]; [task launch]; while ((inData…

作者头像 李华
网站建设 2026/6/20 2:30:11

EmotiVoice文本转语音技术详解:自然语音生成新标杆

EmotiVoice文本转语音技术详解&#xff1a;自然语音生成新标杆 在虚拟主播实时回应观众情绪、游戏NPC因剧情紧张而声音颤抖、客服系统察觉用户不满自动切换安抚语气的今天&#xff0c;我们正经历一场语音交互的静默革命。驱动这场变革的核心&#xff0c;不再是冰冷的语音拼接&a…

作者头像 李华
网站建设 2026/6/20 10:21:20

21、毫米波MAC层设计全面解析

毫米波MAC层设计全面解析 1. 引言 随着无线应用数量的不断增加,对无线频谱的需求也在迅速增长。尽管人们对提高频谱效率和重用进行了大量研究,但传统无线通信频段(低于几吉赫兹)的带宽很快将无法满足日益增长的需求。毫米波(mmWave)频段为带宽稀缺问题提供了一个有前景…

作者头像 李华
网站建设 2026/6/18 22:26:30

JDK安装及环境变量配置

一、JDK下载设置 -> 工具 -> Kotlin Notebook -> 选择JDK路径以下完成配置&#xff0c;可以根据需要切换JDK也可以在Oracle官网进行jdk安装&#xff0c;下面为供应商Oracle的23版本jdk配置环境变量一、环境变量配置新建变量值为安装JDK的路径

作者头像 李华
网站建设 2026/6/19 5:42:32

EmotiVoice语音合成结果版权归属问题解析

EmotiVoice语音合成结果版权归属问题解析 在数字内容创作日益智能化的今天&#xff0c;一段仅需5秒的人声样本&#xff0c;就能“复活”一个声音——这不再是科幻情节&#xff0c;而是基于EmotiVoice等先进语音合成系统的真实能力。只需上传一段录音&#xff0c;输入文本和情感…

作者头像 李华