城市热岛效应怎么分析?地表温度如何反演?
“城市热岛效应怎么分析?地表温度如何反演?”是很多 GIS 学生和初级遥感分析人员会遇到的典型问题:手里有 Landsat、Sentinel 或城市边界数据,却不知道怎样从影像得到地表温度,也不知道怎样判断哪里是热岛、热岛强度有多大。本文以常见的 Landsat 8/9 影像为例,讲清楚城市热岛效应分析的基本流程、地表温度反演步骤、常见错误和结果检查方法。
引言:城市热岛效应分析到底要得到什么结果
城市热岛效应分析的目标不是简单做一张“红色很热、蓝色很冷”的图,而是要回答几个可验证的问题:
- 研究区内地表温度的空间分布如何?
- 建成区是否明显高于周边植被、水体或郊区?
- 热岛核心区在哪里,面积多大?
- 不同土地利用类型的地表温度是否存在差异?
- 热岛强度能否用统计指标表达,而不是只靠目视判断?
在 GIS 工作中,城市热岛效应通常基于地表温度反演结果进行分析。地表温度,英文常写作 LST,是指地表表面的辐射温度,不等同于气象站记录的近地面空气温度。城市热岛效应分析使用 LST 的优势是覆盖范围连续、空间分辨率较高,适合做城市尺度的空间对比。

背景:为什么城市热岛效应不能只看影像颜色
很多初学者会直接把遥感影像的热红外波段拉伸显示,然后把亮的地方当成高温区。这种做法只能用于初步观察,不能作为严谨的城市热岛效应分析结果。
原因主要有三点。
- 热红外波段原始值不是温度。原始 DN 值或辐射亮度需要经过定标、亮温转换和地表比辐射率修正,才能得到地表温度。
- 不同地物的辐射特性不同。水体、植被、裸地、建筑物即使真实温度接近,传感器接收到的辐射也可能不同。
- 影像显示拉伸会改变视觉判断。同一幅图使用不同色带和最大最小值,热区视觉效果会明显变化。
因此,城市热岛效应分析应先完成地表温度反演,再用统一阈值、标准差分级、城乡差值或土地利用分区统计等方法进行解释。
原理:地表温度如何反演
以 Landsat 8/9 为例,地表温度反演一般包含四个核心环节:辐射定标、亮温计算、NDVI 计算、地表比辐射率修正。
1. 从 DN 值到辐射亮度
Landsat 影像中的热红外波段原始像元值通常不是直接温度,而是数字量化值。需要根据元数据文件中的系数,将 DN 值转换为传感器接收到的光谱辐射亮度。
Lλ = ML × Qcal + AL
其中,Lλ 表示光谱辐射亮度,ML 是乘法定标系数,AL 是加法定标系数,Qcal 是影像像元值。实际系数应从 Landsat 的 MTL 元数据文件中读取。
2. 从辐射亮度到亮温
亮温是传感器根据热辐射反推得到的温度,还没有充分考虑地表比辐射率影响。常见计算形式如下:
BT = K2 / ln(K1 / Lλ + 1)
其中,BT 为亮温,K1 和 K2 是热红外波段对应的热常数,同样来自元数据文件。计算结果通常是开尔文温度,需要转为摄氏度时减去 273.15。
3. 用 NDVI 估算地表比辐射率
地表比辐射率表示地物发射热辐射的能力。城市中既有建筑、道路、裸地,也有植被和水体,如果不修正比辐射率,地表温度反演容易偏差。
NDVI 是归一化植被指数,用近红外和红光波段计算:
NDVI = (NIR - Red) / (NIR + Red)
在 Landsat 8/9 中,常用 Band 5 作为近红外波段,Band 4 作为红光波段。NDVI 越高,一般说明植被覆盖越好。
4. 由亮温修正得到地表温度
在教学和城市尺度分析中,常用单窗算法或基于比辐射率的简化方法进行地表温度反演。一个常见表达为:
LST = BT / (1 + λ × BT / ρ × ln(ε))
其中,LST 为地表温度,BT 为亮温,λ 为热红外波段中心波长,ρ 为常数,ε 为地表比辐射率。不同传感器和算法参数不同,正式项目中应根据数据源和研究区条件选择合适模型。
步骤:用 Landsat 影像完成城市热岛效应分析
步骤一:准备数据
建议准备以下数据:
- Landsat 8 或 Landsat 9 影像,优先选择云量较低的夏季晴天影像。
- 研究区边界,例如城市行政区、建成区边界或缓冲区范围。
- 土地利用数据或不透水面、植被、水体分类结果,用于后续解释。
- DEM 数据,可选,用于复杂地形区域的辅助分析。
选择影像时要注意时间一致性。如果要比较多个年份的城市热岛效应,尽量选择同一季节、相近日期、相近过境时间、云量接近的影像。
步骤二:影像预处理
在 QGIS、ArcGIS Pro、ENVI、Google Earth Engine 或 Python 中都可以完成预处理。基础处理包括:
- 检查影像坐标系是否与研究区边界一致。
- 使用质量波段或云掩膜去除云、云影和异常像元。
- 按研究区边界裁剪影像,减少计算量。
- 确认热红外波段、红光波段和近红外波段来自同一景影像。
如果使用 Landsat Collection 2 Level-2 数据,部分产品已经提供地表反射率和地表温度相关数据,处理步骤会比 Level-1 数据更简单。但仍需检查比例因子、无效值和云掩膜。
步骤三:计算 NDVI
在 QGIS 中可以使用“栅格计算器”计算 NDVI。表达式形式类似:
("B5@1" - "B4@1") / ("B5@1" + "B4@1")
计算完成后,应检查 NDVI 值是否大致位于 -1 到 1 之间。水体通常为负值或接近 0,裸地和建成区较低,植被较高。如果 NDVI 出现大量异常值,通常说明波段选错、比例因子未处理或 NoData 没有正确设置。
步骤四:计算地表比辐射率
常见做法是根据 NDVI 阈值估算植被覆盖度,再计算地表比辐射率。简化流程如下:
PV = ((NDVI - NDVImin) / (NDVImax - NDVImin)) × ((NDVI - NDVImin) / (NDVImax - NDVImin))
ε = 0.004 × PV + 0.986
这里的 PV 是植被覆盖度,ε 是地表比辐射率。NDVImin 和 NDVImax 可以根据研究区统计值确定,但不建议直接使用极端异常值。实践中可以使用有效像元的合理分位数,减少云影、水体或异常像元影响。
步骤五:计算亮温和地表温度
如果使用 Landsat Level-1 数据,需要先根据元数据进行辐射定标,再计算亮温,最后进行比辐射率修正。如果使用已经提供地表温度波段的 Level-2 产品,应重点处理比例因子和单位转换。
以 Landsat Collection 2 Level-2 的地表温度产品为例,常见处理思路是:
- 读取地表温度波段。
- 应用官方说明中的比例因子和偏移量。
- 将开尔文转换为摄氏度。
- 用 QA 波段剔除云、云影和无效像元。
- 裁剪到研究区范围。
不要把没有应用比例因子的像元值直接当成摄氏度。很多“地表温度反演结果全是几万度”或“温度范围明显不合理”的问题,都来自比例因子处理错误。
步骤六:城市热岛分级
得到地表温度后,可以进行热岛分级。常见方法有三类:
- 自然断点法:适合制图表达,但不同年份分级阈值可能不同,不利于时间对比。
- 均值标准差法:用研究区平均温度和标准差划分低温区、常温区、高温区、强热岛区,适合统计分析。
- 固定阈值法:适合多期对比,但阈值需要有明确依据,例如多年均值或业务标准。
一个常用的标准差分级思路如下:
| 等级 | 判定方式 | 含义 |
|---|---|---|
| 低温区 | LST < Mean – 1σ | 多为水体、林地或高植被覆盖区 |
| 常温区 | Mean – 1σ 至 Mean + 1σ | 研究区主体温度背景 |
| 高温区 | Mean + 1σ 至 Mean + 2σ | 可能对应建设密集区、裸地、工业区 |
| 强热岛区 | LST > Mean + 2σ | 热岛核心区,需要重点解释 |
步骤七:统计热岛强度和空间格局
城市热岛效应分析不能停留在分级图。建议至少输出以下统计结果:
- 研究区平均地表温度、最高值、最低值和标准差。
- 高温区和强热岛区面积及面积占比。
- 建成区与非建成区的平均温度差。
- 不同土地利用类型的平均地表温度。
- 热岛核心区与道路、工业用地、低植被覆盖区的空间关系。
如果有行政街道、网格或社区边界,可以做分区统计,得到每个单元的平均地表温度和热岛等级。这类结果比单纯栅格图更适合写报告和做城市管理分析。
常见坑:地表温度反演结果不可信的原因
1. 把亮温当成地表温度
亮温没有充分考虑地表比辐射率,通常不能直接作为最终地表温度。做城市热岛效应分析时,应说明使用的是亮温还是 LST。如果报告写的是地表温度,就需要完成相应修正或使用正式 LST 产品。
2. 忽略云和云影
云顶温度低,云影区域反射和热特征异常。如果不做云掩膜,低温区和高温区都会被污染。遇到局部极低温斑块时,第一步应检查是否为云、云影或水体边缘异常。
3. 比例因子没有应用
很多遥感产品的像元值需要乘以比例因子并加偏移量。不同数据产品的比例因子不同,不能凭经验套用。处理前应查看对应产品说明和元数据。
4. 用不同日期影像直接比较
城市热岛效应受季节、天气、降雨、风速和太阳高度角影响很大。跨年对比时,如果影像日期差异太大,得到的变化可能是天气差异,而不一定是城市扩张导致的变化。
5. 忽略水体和裸地的影响
水体通常表现为低温,但浅水、湿地和混合像元可能有复杂表现。裸地、施工区和采石场可能产生高温斑块,但不一定属于典型城市热岛核心。解释热岛结果时要结合土地利用数据。
6. 空间分辨率与研究尺度不匹配
Landsat 热红外数据空间分辨率相对较粗,适合城市尺度和片区尺度分析,不适合直接判断单栋建筑或一条街道的精细温度差异。如果研究对象很小,应考虑更高分辨率热红外数据或地面监测数据。
方法比较:QGIS、ArcGIS Pro、Python 和 GEE 怎么选
| 方法 | 适合场景 | 优点 | 注意事项 |
|---|---|---|---|
| QGIS | 学习流程、单景影像处理、制图表达 | 免费开源,栅格计算器和分区统计工具易用 | 复杂批处理需要模型构建器或 Python 辅助 |
| ArcGIS Pro | 报告制图、空间统计、与现有 GIS 项目结合 | 栅格函数、空间分析和布局制图完整 | 需要注意许可模块和工具参数 |
| Python | 批量处理、多期对比、可复现实验 | 可用 Rasterio、NumPy、GeoPandas 自动化流程 | 需要自己严格处理 NoData、投影和比例因子 |
| Google Earth Engine | 大范围、多年份、快速云端计算 | 影像获取和批量计算效率高 | 要熟悉数据集字段、比例因子和导出限制 |
如果是课程作业或第一次做城市热岛效应分析,建议从 QGIS 或 ArcGIS Pro 入手,先理解完整流程。如果要做多年变化分析或多个城市对比,建议使用 Google Earth Engine 或 Python 建立可重复流程。
检查清单:提交结果前逐项核对
- 影像日期、传感器、云量是否记录清楚。
- 研究区边界是否与影像坐标系一致。
- 云、云影、无效值是否已经掩膜。
- 热红外波段、红光波段、近红外波段是否选对。
- 是否正确应用辐射定标系数、热常数、比例因子和偏移量。
- 地表温度单位是否明确,是开尔文还是摄氏度。
- NDVI 范围是否合理,是否存在大量异常值。
- 地表比辐射率计算方法是否说明清楚。
- 热岛分级方法是否固定且可复现。
- 是否统计了高温区面积、占比和不同土地利用类型温度差异。
- 结果解释是否结合土地利用、水体、植被和建成区分布。
- 多期对比是否控制了季节、日期和天气差异。
实务建议:地表温度反演结果的数值范围要先过一遍常识检查。夏季城市地表温度如果出现大面积负值或几百度,通常不是城市真的异常,而是数据比例因子、单位转换或 NoData 处理出了问题。
FAQ:城市热岛效应和地表温度反演常见问题
1. 城市热岛效应分析一定要做地表温度反演吗?
如果目的是定量分析热岛强度、面积和空间分布,通常需要地表温度反演或直接使用标准 LST 产品。只用影像颜色或热红外原始值,适合观察,不适合严谨统计。
2. 地表温度反演和气温分析有什么区别?
地表温度是地表表面的辐射温度,气温是空气温度。遥感反演得到的 LST 常用于分析空间格局,气象站气温更适合分析人体热感、气候统计和时间序列变化。两者相关,但不能直接等同。
3. Landsat 8 和 Landsat 9 可以一起做城市热岛对比吗?
可以,但要统一数据级别、处理流程、云掩膜方法、温度单位和分级标准。多期对比时还要尽量选择相近季节和相近日期的影像,避免天气差异掩盖真实变化。
4. 为什么我的地表温度反演结果比气象站温度高很多?
这是常见现象。夏季晴天地表,尤其是沥青路面、屋顶、裸地,温度可能明显高于气象站记录的空气温度。气象站温度通常在标准观测条件下测得,不代表地表表面温度。
5. 城市热岛强度怎么计算?
常见做法是计算城市建成区平均地表温度与郊区或非建成区平均地表温度的差值。也可以用高温区面积占比、强热岛区面积占比、分区平均温度等指标表达。关键是比较对象和统计范围要定义清楚。
6. 水体需要从城市热岛效应分析中剔除吗?
不一定。如果研究城市整体热环境,水体是重要降温因子,可以保留并单独统计。如果研究建成区内部热岛强度,建议将大面积水体单独分类,避免拉低研究区平均温度,影响热岛等级判断。
7. QGIS 可以完成完整的地表温度反演吗?
可以。QGIS 的栅格计算器、裁剪、重分类、分区统计和制图工具可以完成单景影像的完整流程。若涉及多期批量处理,建议结合 QGIS 模型构建器、PyQGIS、Python 或 Google Earth Engine。
结论:城市热岛效应分析的关键是流程可复现
城市热岛效应分析的核心流程可以概括为:选择合适影像,完成云掩膜和裁剪,进行地表温度反演,生成热岛分级图,再结合土地利用和分区统计解释结果。地表温度如何反演并不只是套公式,更重要的是理解 DN 值、辐射亮度、亮温、比辐射率和 LST 之间的关系。
对 GIS 初学者来说,建议先用一景 Landsat 影像完整跑通流程,再尝试多年份对比和批量自动化。只要数据来源清楚、参数处理正确、分级方法一致,城市热岛效应分析就能从一张“看起来很热”的图,变成可解释、可复核、可用于报告的空间分析结果。