地表温度(Land Surface Temperature, LST)是地球系统科学研究中的重要参数,它直接影响着地表能量平衡、气候变化和生态环境监测。Landsat 7卫星搭载的ETM+传感器为我们提供了稳定的热红外数据源,其第六波段(10.40-12.50 μm)专门用于地表温度反演。在实际操作前,我们需要理解几个关键概念:
辐射定标是将传感器记录的原始DN值转换为具有物理意义的辐射亮度值的过程。对于Landsat 7数据,热红外波段(Band 6)需要单独处理,其定标公式为:
python复制Lλ = gain * DN + bias
其中gain和bias值可以从元数据文件(_MTL.txt)中获取。我处理过上百景Landsat数据,发现2012年之前和之后的数据参数格式略有差异,需要特别注意元数据中的"RADIANCE_MULT_BAND_6"和"RADIANCE_ADD_BAND_6"字段。
大气校正是消除大气对地表辐射干扰的关键步骤。水蒸气、二氧化碳等气体会吸收和散射热红外辐射,导致传感器接收的信号与真实地表辐射存在偏差。大气校正法(Radiative Transfer Equation, RTE)通过引入大气透过率(τ)、上行辐射(L↑)和下行辐射(L↓)三个参数来修正这种偏差。这些参数可以通过NASA的在线大气校正工具(https://atmcorr.gsfc.nasa.gov/)获取,输入成像时间、地理位置等信息即可生成对应的大气参数。
数据准备阶段需要:
提示:建议使用ENVI的"Layer Stacking"工具将各波段合并为多波段图像,后续处理会更高效。我曾遇到过波段顺序错乱导致计算错误的情况,所以每次都会在元数据中确认各波段中心波长。
在ENVI 5.3中操作时,我习惯使用"Radiometric Calibration"工具而非手动输入公式,这样更不容易出错。具体步骤:
定标完成后,建议使用"Quick Stats"工具检查结果范围。正常情况下的辐射亮度值应该在0-20 W/(m²·sr·μm)之间。我处理过的一个案例显示,夏季正午时分的城市区域辐射亮度约为12.5 W/(m²·sr·μm),而水体区域只有8.3 W/(m²·sr·μm)。
归一化植被指数(NDVI)是估算植被覆盖度的基础,计算公式为:
code复制NDVI = (NIR - Red) / (NIR + Red)
对于Landsat 7,使用B4(近红外)和B3(红光)波段。ENVI中有两种实现方式:
方法一:使用Band Math
python复制(float(b4)-float(b3))/(float(b4)+float(b3))
这种方法灵活但需要手动处理异常值。我通常会加上条件判断:
python复制(b4 eq 0 and b3 eq 0) ? 0 : (float(b4)-float(b3))/(float(b4)+float(b3))
方法二:使用Vegetation Index Calculator
由于热红外波段(60m)与可见光波段(30m)分辨率不同,必须对NDVI结果进行重采样。我推荐使用"Resize Data"工具中的"Pixel Aggregate"方法,这比简单的双线性插值更能保持植被指数的统计特性。参数设置:
大气透过率(τ)、上行辐射(L↑)和下行辐射(L↓)的获取直接影响反演精度。根据我的项目经验,推荐以下方法:
NASA大气校正工具:
MODTRAN模型模拟:
需要专业license,但精度更高。适合科研级应用,我曾用这种方法将反演误差控制在1K以内。
经验值法(应急使用):
注意:大气参数具有时空变化性,同一景影像中不同海拔区域也应区别对待。在山区项目中,我采用高程分层校正策略,效果提升明显。
地表比辐射率(ε)是物质本身的热辐射特性,经验公式为:
code复制ε = 0.004 * Pv + 0.986
其中Pv是植被覆盖度,由NDVI转换得到:
code复制Pv = [(NDVI - NDVI_soil)/(NDVI_veg - NDVI_soil)]^2
典型取值:
在ENVI中实现时,我创建了一个批处理流程:
实测中发现,夏季农作物区的比辐射率通常在0.97-0.98之间,而城市建筑区约为0.93。一个常见错误是忽略水体处理,我曾在鄱阳湖项目中因此导致温度异常高值,后来通过添加水体掩膜解决了问题。
基于大气校正法的地表温度反演公式为:
python复制B(Ts) = [Lλ - L↑ - τ(1-ε)L↓] / (τε)
Ts = K2 / ln(K1/B(Ts) + 1) - 273.15
其中K1、K2是Landsat 7的热红外波段定标常数(K1=666.09,K2=1282.71)。
ENVI操作步骤:
python复制; 计算分子部分
numerator = b1 - L_up - tau*(1-epsilon)*L_down
; 计算分母部分
denominator = tau * epsilon
; 计算B(Ts)
BTs = numerator / denominator
python复制tempK = 1282.71 / alog(666.09/BTs + 1)
tempC = tempK - 273.15
我曾对比过直接使用ENVI的"Thermal Atmospheric Correction"工具和手动计算的结果差异,发现对于复杂地形区域,手动调整参数的方法更能适应局部大气条件变化。
交叉验证法:
地面实测数据对比:
时空一致性检查:
一个验证案例:在2020年8月处理北京地区数据时,发现西北山区出现异常高温区(比周边高15K以上),检查发现是大气参数输入错误导致。修正后温度梯度恢复正常,这个教训让我养成了设置合理性检查阈值的习惯。
在ArcGIS中制作温度专题图时,我总结出这些经验:
分类方法选择:
色带设计原则:
标注技巧:
通过"Region of Interest"工具提取不同地类的温度统计值:
| 地物类型 | 平均温度(℃) | 标准差 | 典型特征 |
|---|---|---|---|
| 水体 | 26.5 | 1.2 | 日变化小 |
| 林地 | 30.8 | 2.5 | 阴影效应明显 |
| 农田 | 35.2 | 3.1 | 作物生长期影响大 |
| 城市 | 39.7 | 4.8 | 建筑材料影响显著 |
在多个项目中验证发现,城市热岛效应强度(ΔTurban-rural)与NDVI呈负相关(R²≈0.65)。一个有意思的现象是:冬季晴朗夜晚的热岛效应反而比夏季更强,这与大气稳定度有关。
温度值异常高(>60℃):
结果图像出现条带:
边缘区域温度突变:
通过控制变量法测试各参数对结果的影