首页 GIS基础理论 ArcGIS如何做热岛分析?地表温度怎么反演?

ArcGIS如何做热岛分析?地表温度怎么反演?

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

你拿到的Landsat影像,为什么算不出“热岛”?

上周一位研究生在后台留言:“Dr. Gis,我按教程一步步做地表温度反演,结果出来全是负值,城市反而比郊区冷——这科学吗?”其实,这不是软件问题,而是90%初学者都会踩的“辐射定标坑”。今天我就手把手带你从原始遥感数据出发,用ArcGIS把“热岛效应”可视化、可量化。

ArcGIS如何做热岛分析?地表温度怎么反演?

热岛分析的本质:不是画图,是能量翻译

想象一下,卫星传感器就像个“太空温度计”,但它记录的不是摄氏度,而是“数字信号(DN值)”。你要做的,就是把这个信号翻译成真实的地表温度。这个过程叫地表温度反演,而热岛分析,只是对反演结果的空间模式解读。

我在深圳某新区规划项目中就吃过亏:没校正大气影响,反演出的工业区温度比绿地还低5℃——差点误导了通风廊道设计。后来才知道,必须走完“辐射定标→大气校正→地表发射率→温度转换”四步,缺一不可。

四步实战:用ArcGIS把DN值变成℃

  1. 辐射定标(Radiometric Calibration):把DN值转为辐射亮度。关键在元数据里的增益(Gain)和偏移(Bias)。
    公式:Lλ = Gain * DN + Bias
    在ArcGIS里用Raster Calculator直接套公式,注意选对波段(Landsat 8/9用Band 10)。
  2. 大气校正(Atmospheric Correction):去掉大气层“滤镜”。推荐单窗算法或简化版:
    T = K2 / ln(K1/Lλ + 1)
    其中K1、K2是官方提供的常量(Landsat 8 Band10:K1=774.89, K2=1321.08)。
  3. 地表发射率(Emissivity)修正:不同地物“散热能力”不同。用NDVI阈值法估算:
    - 水体:ε=0.995
    - 植被:ε=0.985
    - 建筑:ε=0.95
    Con函数在ArcGIS里分区赋值。
  4. 最终温度计算:代入普朗克定律修正公式:
    TS = [K2 / ln((K1 * ε)/Lλ + 1)] - 273.15
    减273.15是为了转成摄氏度。跑完这一步,你就得到了真正的地表温度栅格。

热岛怎么“看”?三招让温度会说话

温度栅格只是半成品。要揭示热岛,得让它“对比起来”:

  • 分级设色:用“红-黄-绿”渐变色带,高温区自动高亮。别用默认拉伸——手动设置断点(如35℃、40℃、45℃),热岛核心区一目了然。
  • 叠加矢量边界:把行政区划或功能区(商业区、住宅区、公园)叠在温度图上。右键图层→“属性→符号系统→轮廓线设为白色”,边界清晰不抢戏。
  • 剖面线分析:用Profile Graph工具画一条穿越市中心到郊区的线,生成温度剖面图——热岛的“陡坡”形态比数字更直观。
常见错误避坑方案
温度出现负值检查辐射定标公式,确认Gain/Bias来自当前影像元数据
城市温度低于绿地未修正发射率——建筑ε值必须低于植被
结果像“马赛克”重采样时选“Bilinear”而非“Nearest Neighbor”

进阶技巧:用Python批量处理100景影像

如果你有多年份数据,手动点ArcGIS会累死。祭出ArcPy脚本:

import arcpy
from arcpy.sa import *

# 批量辐射定标
for img in image_list:
    gain, bias = get_metadata(img)  # 自定义函数读元数据
    rad_calib = Raster(img) * gain + bias
    rad_calib.save(f"calib_{img}")

# 批量温度反演(简化版)
k1, k2 = 774.89, 1321.08
epsilon = calculate_emissivity(ndvi_raster)  # 根据NDVI计算发射率
lst = (k2 / Ln((k1 * epsilon) / rad_calib + 1)) - 273.15
lst.save("surface_temp.tif")

这段代码能自动跑完100景影像——我去年帮环保局做长三角热岛演变,全靠它省下两周时间。

总结:热岛分析不是炫技,是空间诊断

记住三个核心:① 温度反演是物理过程,不是图像处理;② 发射率修正是灵魂步骤;③ 热岛强度要用“温差”说话(如市中心比郊区高多少℃)。现在,打开你的Landsat数据,从第一步辐射定标开始——遇到卡点欢迎在评论区甩截图,我亲自帮你debug!

相关文章