首页 GIS基础理论 Landsat 8热红外数据?地表温度如何计算?

Landsat 8热红外数据?地表温度如何计算?

作者: GIS研习社 更新时间:2025-12-15 22:00:56 分类:GIS基础理论

为什么你算的地表温度总像“开水烫脚”?先别急着怪数据

上周一位研究生私信我:“Dr. Gis,我用Landsat 8热红外波段算了地表温度,结果城区全是50℃以上,郊区也动不动40℃+——这合理吗?” 我一看他的流程,果然踩了经典坑:直接用亮温当真实温度。这就像拿体温计测空气温度,还纳闷“怎么老是37度”。

Landsat 8热红外数据?地表温度如何计算?

我在参与长三角城市群热岛效应评估项目时,初期团队也犯过同样错误——把Band 10的辐射亮度值直接转成温度,结果上海外滩显示62℃,差点被甲方当成“气候灾难报告”打回来重做。

热红外≠温度计:理解Landsat 8的“间接测温”原理

Landsat 8的Band 10(10.6-11.2μm)记录的是地表发射的热辐射能量,而非直接温度。这好比你站在远处看一块铁板——你能感知它发红发亮(辐射强),但不知道确切温度,除非知道它的“黑度”(发射率)和大气干扰程度。

计算真实地表温度(LST, Land Surface Temperature)需三步走:

  1. 辐射定标:将DN值转为辐射亮度(Top of Atmosphere Radiance)
  2. 大气校正:扣除大气吸收/散射影响,得到地表真实辐射
  3. 发射率校正:根据地物类型调整“黑度系数”,反演真实温度

手把手实战:用Python+QGIS五步搞定准确LST

以下流程基于USGS官方推荐的单窗算法简化版,适合初学者快速上手。假设你已下载Landsat 8 Level-1数据(含MTL元数据文件)。

Step 1:辐射定标——把像素值变成物理量

从MTL文件中提取增益(RADIANCE_MULT_BAND_10)和偏移(RADIANCE_ADD_BAND_10),套用公式:

Lλ = M * Qcal + A
# Lλ: 辐射亮度 (W/m²/sr/μm)
# Qcal: 像素原始DN值
# M, A: 增益与偏移(MTL文件提供)

Step 2:亮温计算——获得“大气顶层温度”

用普朗克函数反推亮温(注意单位转换!):

Tb = K2 / ln(K1 / Lλ + 1)
# Tb: 亮温 (开尔文K)
# K1=774.89, K2=1321.08 (Band 10常数,见MTL)

Step 3:发射率估算——给地表“贴材质标签”

这是最关键的一步!不同地物发射率差异巨大:

地物类型发射率ε
水体0.99
植被0.97
裸土0.93
混凝土0.89

建议用NDVI阈值法自动分类:ε = 0.004 * NDVI + 0.986(适用于混合像元)

Step 4:大气校正——剥掉“空气滤镜”

简易方法:使用NASA提供的大气校正参数计算器,输入影像获取时间、中心经纬度,获取大气透过率τ、上行辐射Lu、下行辐射Ld。若无网络工具,可用经验值τ≈0.85(中纬度晴天)。

Step 5:真实温度反演——终极公式登场

LST = [Tb / (1 + (λ * Tb / ρ) * ln(ε))] - 273.15
# λ: 中心波长10.9μm → 10.9×10⁻⁶m
# ρ: 1.438×10⁻² m·K (普朗克常数相关)
# 最后减273.15转为摄氏度

更精确可采用Jiménez-Muñoz单通道算法(见参考文献),但上述简化版误差通常<2℃。

避坑指南:三个让你数据可信的关键细节

  • 时间选择:避免晨昏时段(太阳高度角<30°),此时热惯性导致温度失真
  • 云掩膜:务必用QA_PIXEL波段剔除云像元,否则温度值会异常偏低
  • 发射率陷阱:金属屋顶ε可能低至0.2!城市研究建议结合土地利用图手动修正

总结:温度不是算出来的,是“翻译”出来的

记住这个核心逻辑链:DN值→辐射亮度→亮温→(大气+发射率校正)→真实地表温度。跳过任何一环,你的结果都会变成“科幻小说”。现在打开你的Landsat 8数据,按步骤操作一遍——你会惊讶于修正后的温度分布如何真实反映城市热岛格局。

动手后遇到卡点?在评论区留下你的报错截图或代码片段,我会抽三位读者免费诊断数据流程!

相关文章