基于 GEE 的 LST 降尺度建模——利用 Sentinel-2 和 SRTM 提升 Landsat 热红外分辨率至 10 米

目录

一、技术背景与问题分析

二、数据源与预处理

(一)数据源配置

(二)关键预处理操作

[1. Landsat LST 提取](#1. Landsat LST 提取)

[2. Sentinel-2 云掩膜与插值填补](#2. Sentinel-2 云掩膜与插值填补)

三、特征工程:构建预测变量集

(一)光谱指数

(二)地形因子

(三)土地覆盖派生特征

四、分层采样与特征选择

(一)高程分层采样

(二)相关性分析与特征筛选

五、随机森林建模与评估

(一)模型训练

(二)特征重要性

(三)精度评估指标

六、总结

七、运行结果


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

地表温度(Land Surface Temperature, LST)是城市热岛效应、干旱监测、气候变化等研究的核心参数。然而,当前主流热红外遥感数据面临一个长期存在的矛盾:高空间分辨率与热红外通道不可兼得。Landsat 系列提供 30--100 米的热红外数据,但重访周期长且空间分辨率有限;Sentinel-2 拥有 10 米的多光谱高分辨率,却缺少热红外波段。

本文介绍一套基于 Google Earth Engine(GEE)的完整技术方案,通过随机森林回归模型融合 Sentinel-2 多光谱数据、SRTM 地形数据与 Landsat 热红外数据,实现 10 米分辨率 LST 的高精度预测。方案的核心技术亮点包括:

  • 多源数据协同:以 Landsat Collection 2 的 ST_B10 官方温度产品为标签,以 Sentinel-2 光谱波段及衍生指数、地形因子为预测变量;

  • 分层采样策略:基于高程分层的 stratifiedSample 保证样本代表性;

  • 特征工程与筛选:通过相关性分析自动筛选最优预测变量组合;

  • 后处理优化:focalMedian 中值滤波消除预测结果的斑块噪声;

  • 内存溢出规避:tileScale 参数调优解决 GEE 大区域计算的内存瓶颈。

当前卫星地表温度产品与精细化热分析需求之间的信息差距

一、技术背景与问题分析

为什么需要"降尺度"LST:

Landsat 的热红外波段(Band 10)原始空间分辨率为 100 米,重采样后通常以 30 米产品形式发布。对于城市热岛精细分析、农田蒸散发估算等需要刻画空间异质性的场景,30 米分辨率仍显不足。Sentinel-2 的 10 米多光谱数据提供了丰富的地表反射率信息,但缺乏热红外通道------两者的优势恰好互补

核心思路------统计降尺度: 统计降尺度的基本假设是:地表温度与多光谱反射率、植被指数、地形因子等之间存在可建模的统计关系。通过在粗分辨率(Landsat 30 米)尺度上建立 LST 与预测变量之间的回归模型,然后将该模型应用于细分辨率(Sentinel-2 10 米)的预测变量上,即可获得 10 米分辨率的 LST 预测结果。

其中为随机森林回归模型。
多源地表温度产品空间格局对比:粗分辨率产品至 10 m 高分辨率 LST

地表温度(LST)降尺度技术虽已有较长发展历史,早期广泛采用的算法如DisTrad、TsHARP等,均以LST与植被指数(如NDVI)之间存在简单线性关系为前提。然而,实际地表热环境受多源因素协同调控,包括植被覆盖、高程与坡度、地表水体比例、不透水面密度、大气湿度等数十个变量,且各因子与LST之间普遍呈现非线性、交互性耦合特征。因此,传统线性回归模型在刻画该复杂响应关系时存在结构性缺陷,导致降尺度结果的空间保真度受限。

针对上述问题,本研究采用随机森林(Random Forest)算法构建LST降尺度模型,其核心策略与实施流程如下:

  1. 多源预测因子集成:模型输入变量涵盖Sentinel-2多光谱波段、多种衍生光谱指数(植被指数、水体指数等),以及基于SRTM提取的地形参数(高程、坡度、地形位置指数TPI),充分覆盖影响LST的主要环境维度。

  2. 非线性关系学习:在30 m空间分辨率下,以Landsat LST为目标变量,以所述多源特征为预测变量,训练随机森林回归模型,自动捕获特征空间与热环境之间的复杂非线性映射关系,无需预设函数形式。

  3. 尺度迁移与高分辨率推算:将训练完成的映射函数应用于10 m分辨率的Sentinel-2光谱特征数据,从而在更高空间尺度上"反演"出对应的LST数值。

  4. 技术逻辑总结:整体思路可概括为------在30 m尺度建立LST与多源因子的非线性统计关联,并将该关联迁移至10 m特征空间,最终生成精细化的LST分布产品。该方法有效规避了线性假设的局限性,显著提升了降尺度结果的可靠性与空间细节表达能力。

基于随机森林回归的地表温度降尺度及 10 m LST 数据集生成技术路线

二、数据源与预处理

(一)数据源配置

代码使用以下 GEE 公开数据集:

数据集 集合名称 用途
Sentinel-2 SR COPERNICUS/S2_SR_HARMONIZED 10m 多光谱预测变量
Landsat 8/9 L2 LANDSAT/LC08/C02/T1_L2 / LC09/C02/T1_L2 LST 标签(ST_B10)
SRTM DEM USGS/SRTMGL1_003 地形因子
研究区矢量 table(用户导入) ROI 边界
[数据源配置]

(二)关键预处理操作

1. Landsat LST 提取

Landsat Collection 2 Level-2 数据已包含官方处理的地表温度波段 ST_B10,无需自行实现单窗算法。转换为摄氏度的计算公式为:

javascript 复制代码
function cloudMaskLandsat(image) {
  var qa = image.select('QA_PIXEL');
  var mask = ee.Image([1, 2, 3, 4].map(function(num) {
    return qa.bitwiseAnd(1 << num).eq(0);
  })).reduce(ee.Reducer.allNonZero());
  return image.select(['ST_B10'], ['LST'])
    .updateMask(mask)
    .multiply(0.00341802)
    .add(149)
    .add(-273.15);
}

ST_B10 存储为量化后的亮温值,需先乘以缩放因子 0.00341802 并加上偏移量 149 得到开尔文温度,再减去 273.15 转换为摄氏度。QA_PIXEL 波段用于掩膜云、阴影等无效像元。

2. Sentinel-2 云掩膜与插值填补

云掩膜直接利用 Sentinel-2 自带的 QA60 波段:

javascript 复制代码
function cloudMaskS2(image) {
  var qa = image.select('QA60');
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
               .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.select(['B.*']).updateMask(mask).multiply(1e-4);
}

注意事项 :去云后影像常出现数据空洞。代码采用 focalMean 邻域均值插值填补:

javascript 复制代码
var s2Filled = s2Image.focalMean(4, 'square', 'pixels', 4);
s2Image = s2Image.unmask(s2Filled);

focalMean(4) 表示以 4 像素为半径的方形窗口计算均值,unmask 将空值替换为插值结果。

三、特征工程:构建预测变量集

(一)光谱指数

代码计算了 6 种对地表温度敏感的光谱指数:

其中 NIR、SWIR1、SWIR2、GREEN 分别对应 Sentinel-2 的 B8、B11、B12、B3 波段。

代码实现采用 expression 方法批量计算:

javascript 复制代码
var indices = [
  { name: 'NDMI', formula: 'NDMI = (NIR - SWIR1) / (NIR + SWIR1)' },
  // ...
];

var indicesImage = ee.Image(indices.map(function(dict) {
  var indice = s2Image.expression(dict.formula, {
    NIR: s2Image.select('B8'),
    SWIR1: s2Image.select('B11'),
    SWIR2: s2Image.select('B12'),
    GREEN: s2Image.select('B3')
  }).rename(dict.name);
  return indice;
}));

(二)地形因子

  • 高程:直接使用 SRTM DEM

  • 坡度(Slope)ee.Terrain.slope(srtm)

  • 地形位置指数(TPI):高程与邻域平均高程之差

javascript 复制代码
var topoAverage = srtm.focalMean(5, 'square', 'pixels');
var tpi = srtm.subtract(topoAverage).rename('TPI');

(三)土地覆盖派生特征

通过指数阈值生成湿度、绿度、干度的连续表面:

javascript 复制代码
var wet = indicesImage.select('MNDWI2').gt(0);
var green = indicesImage.select('NDMI').gt(0.1).and(wet.eq(0));
var dry = wet.eq(0).and(green.eq(0));

var wetness = wet.focalMean(1, 'square', 'pixels', 10).rename('wetness');
var greeness = green.focalMean(1, 'square', 'pixels', 10).rename('greeness');
var dryness = dry.focalMean(1, 'square', 'pixels', 10).rename('dryness');

四、分层采样与特征选择

(一)高程分层采样

LST 与高程存在强相关性。代码将高程分为 7 类,确保样本在各高程区间均匀分布:

javascript 复制代码
var strat = ee.Image(0)
  .where(srtm.lt(0), 1)
  .where(srtm.gte(0).and(srtm.lt(10)), 2)
  // ... 中间分类省略
  .where(srtm.gte(1000), 7)
  .selfMask()
  .rename('elevation_class');

采样时指定 classBand: 'elevation_class'

javascript 复制代码
var sample = features.addBands(lstLandsat).stratifiedSample({
  scale: 30,
  numPoints: 1e3,
  region: roi,
  classBand: 'elevation_class',
  tileScale: 16  // 关键:规避内存溢出
});

tileScale: 16 是本文的一个关键优化点 。GEE 在处理大范围 stratifiedSample 时容易触发 User memory limit exceeded 错误,调大 tileScale 可将计算任务切分为更小的瓦片,降低单次内存占用。

(二)相关性分析与特征筛选

计算每个预测变量与 LST 的 Pearson 相关系数,以排序筛选 top 特征:

javascript 复制代码
var correlationReduce = sample.reduceColumns({
  reducer: ee.Reducer.pearsonsCorrelation().repeat(predictors.length),
  selectors: predictorsLst
});

同时构建特征间相关性矩阵,选择特征间平均相关性最低的一组变量作为最终预测变量------这一策略可有效缓解多重共线性问题,提升模型泛化能力。

五、随机森林建模与评估

(一)模型训练

javascript 复制代码
var model = ee.Classifier.smileRandomForest(50)
  .setOutputMode('REGRESSION')
  .train(train, 'LST', lowestCorrelationMatrix);
  • smileRandomForest(50):构建 50 棵决策树

  • setOutputMode('REGRESSION'):指定回归模式(而非分类)

  • 训练集与测试集按 7:3 随机划分

(二)特征重要性

随机森林内置的特征重要性评估以 explain() 方法输出:

javascript 复制代码
var importance = ee.Dictionary(model.explain().get('importance'));
var relative = values.map(function(value) {
  return ee.Number(value).divide(sum).multiply(100);
});

(三)精度评估指标

决定系数

平均绝对误差 MAE

六、总结

本文系统介绍了基于 GEE 平台、融合多源遥感数据与随机森林回归的 10 米分辨率 LST 预测技术方案。核心可复用经验包括:

  1. 数据协同策略:以 Landsat Collection 2 的官方 ST_B10 为标签,Sentinel-2 多光谱与 SRTM 地形为预测变量,绕过热红外与高分辨率不可兼得的瓶颈;

  2. 分层采样保证代表性 :基于高程分层的 stratifiedSample 确保样本覆盖各类地形条件;

  3. 特征工程自动化:光谱指数批量计算 + 相关性分析自动筛选最优特征组合;

  4. 内存优化技巧tileScale 参数调优是 GEE 大区域计算的关键;

  5. 后处理提升质量focalMedian 中值滤波有效平滑预测噪声。

该方案适用于城市热岛精细制图、农业干旱监测、生态环境评估等需要高分辨率 LST 数据的场景。整套流程在 GEE 云端完成,无需本地计算资源,具备良好的可迁移性与可复现性。

七、运行结果

Sentinel-2 假彩色合成影像
归一化差异湿度指数
归一化燃烧指数
归一化燃烧指数 2
归一化差异水体指数
改进型归一化差异水体指数
改进型归一化差异水体指数 2
高程分层类别
湿度概率表面
绿度概率表面
干燥概率表面
地形位置指数
地表温度参考值(30米)
高空间分辨率地表温度预测值(10米)
控制台输出的结果信息(1)
控制台输出的结果信息(2)
代码运行结果相关统计图(1)
代码运行结果相关统计图(2)
代码运行结果相关统计图(3)

main_variable dryness wetness greeness NBR2 NBR MNDWI2
dryness 1 -0.456 -0.851 -0.649 -0.649 -0.308
wetness -0.456 1 -0.079 0.152 0.163 0.695
greeness -0.851 -0.079 1 0.637 0.631 -0.064
NBR2 -0.649 0.152 0.637 1 0.927 0.072
NBR -0.649 0.163 0.631 0.927 1 0.098
MNDWI2 -0.308 0.695 -0.064 0.072 0.098 1
[皮尔逊相关系数矩阵]

点击RUN即可下载计算结果数据

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

相关推荐
wzq11_6662 小时前
云计算运维学习day22——Ansible-Roles
运维·学习·云计算
翼龙云_cloud12 小时前
亚马逊云渠道代理商:VPC 教程 利用 EC2 自建 NAT 实例降低私有子网出网成本
网络·云计算·aws
yunlaodacom13 小时前
腾讯云国际版(云老大):TKE Service有Endpoint,为什么请求还是进不了Pod
云计算·腾讯云
Dawn-bit14 小时前
Linux网络进阶:TCP三次握手和四次挥手与TCP连接状态
linux·服务器·网络·tcp/ip·云计算·智能路由器
UseLessQQ21 小时前
云计算k8s集群部署
java·kubernetes·云计算
翼龙云_cloud1 天前
阿里云国际版代理商:OSS自定义域名绑定与HTTPS配置排障教程
数据库·阿里云·https·云计算
sbjdhjd1 天前
CTF 技术复盘:从参数类型绕过到正则回溯 | Merry Christmas PHP CTF(gift.php & gift_plus.php)
安全·网络安全·云计算·php·ctf·红队·网络攻防
皮皮虾❀1 天前
阿里云代理商采购+超额返点一体化实战:从“单次采购无优惠“到“年度合作解锁最高35%专属返点“的成本优化方案
阿里云·云计算
SaaS_Product2 天前
企业云盘收费标准主要取决于什么?企业云盘价格到底怎么算?
大数据·云计算·saas·onedrive