【定量遥感】从公式到地表:单窗算法温度反演全流程拆解
1. 单窗算法温度反演入门指南
第一次接触遥感温度反演的朋友,可能会被那些复杂的数学公式和专业术语吓到。但别担心,我用过不下十种温度反演方法,单窗算法绝对是新手最容易上手的。简单来说,它就像用一台"热感相机"给地球测体温,只不过这台相机装在卫星上,距离地面几百公里。
单窗算法的核心思想很直观:通过热红外波段数据,结合大气参数和地表特性,反推出真实的地表温度。整个过程就像解一道数学应用题,已知条件包括卫星接收到的辐射值、大气透射率、地表比辐射率等,要求解的就是地表温度这个未知数。
我刚开始做温度反演时,最头疼的就是搞不清各个参数之间的关系。后来发现,把整个流程拆解成几个关键步骤就容易多了:
- 亮度温度计算:把卫星接收到的数字信号转化为温度值
- 植被覆盖度计算:了解地表有多少被植被覆盖
- 地表比辐射率计算:不同地物发射热辐射的能力不同
- 大气参数处理:考虑大气对热辐射的影响
- 最终温度计算:把所有因素综合起来得到真实温度
2. 亮度温度计算实战
亮度温度是温度反演的第一步,也是最基础的一步。在ENVI里操作时,我建议先用Band Math工具建立计算模型。以Landsat数据为例,B61和B62这两个热红外波段的计算公式是这样的:
# 辐射定标公式 Lλ = gain * DN + offset # 亮度温度公式 Tb = K2 / ln(K1/Lλ + 1)这里有个新手容易踩的坑:K1和K2这两个常数,不同卫星、不同波段的值都不一样。我有次用错了参数,结果温度差了十几度。建议每次使用前都查一下卫星的元数据文件确认这些参数。
在Erdas中建模时,我发现把公式拆分成多个小步骤会更稳妥。比如先计算辐射值Lλ,再计算分母部分,最后求整个分数。这样即使出错也容易定位问题所在。记得输出结果要设为浮点型,否则小数部分会被截断。
3. 植被覆盖度计算详解
植被覆盖度计算需要用到NDVI数据,这里有个实用技巧:NDVI值在0.05-0.7之间时,用这个公式计算:
FVC = (NDVI - NDVIsoil) / (NDVIveg - NDVIsoil)但要注意两个边界条件:
- 当NDVI<0.05时,FVC=0(完全无植被)
- 当NDVI>0.7时,FVC=1(完全被植被覆盖)
我在项目中发现,NDVIsoil和NDVIveg这两个参数的取值很关键。通常取NDVIsoil=0.05,NDVIveg=0.7,但在不同地区可能需要调整。比如干旱地区NDVIsoil可能要设得更低些。
4. 地表比辐射率计算方法
地表比辐射率计算是温度反演中最容易出错的部分。根据我的经验,必须先把地物分成三类:水体、建筑和植被。在ENVI中进行监督分类时,建议每类至少选50个训练样本,分类精度要达到85%以上。
比辐射率的计算公式分三种情况:
- 水体:0.995
- 建筑:0.923 + 0.047 * FVC
- 植被:0.986 + 0.004 * FVC
这里有个实用建议:可以先用波段计算工具生成一个分类结果图,然后用条件语句实现不同地物使用不同公式。在Erdas中可以用if-then-else语句实现这个逻辑。
5. 大气参数处理技巧
大气参数处理是单窗算法中最理论化的部分。大气等效温度(Ta)和大气透射率(τ)的计算公式看起来复杂,但其实有规律可循:
Ta = 16.0110 + 0.92621 * T0 τ = 1.031412 - 0.11536 * w其中T0是近地面气温,w是大气水汽含量。这两个参数通常需要从气象站数据获取。如果没有实测数据,我建议使用标准大气参数:Ta≈287.5K,τ≈0.8。
在实际项目中,我发现大气参数对最终结果影响很大。有一次因为用了错误的水汽含量值,导致反演温度比实测值低了5℃。所以条件允许的话,尽量获取当地实时的气象数据。
6. 地表温度反演全流程
最后的地表温度计算是整个流程的集大成者。单窗算法的核心公式是:
Ts = [a*(1-C-D) + (b*(1-C-D)+C+D)*Tb - D*Ta] / C其中a和b是经验系数,通常取a=-67.355351,b=0.458606。C和D是中间变量:
- C = ε * τ
- D = (1-τ) * [1 + (1-ε)*τ]
在Erdas中建模时,建议先分别计算C和D,再代入主公式。这样既不容易出错,也方便检查中间结果。我通常会保存每个中间步骤的结果图,出现问题时可以回溯检查。
7. 常见问题排查指南
根据我带学生的经验,单窗算法温度反演最常见的错误有三大类:
公式输入错误:特别是括号不匹配、运算符错误。建议在Erdas的Model Maker中,每输入完一个公式就检查一下语法。我有个小技巧:把复杂公式拆分成多个简单公式,用临时变量存储中间结果。
参数取值错误:包括K1/K2用错波段、NDVI范围设置不当等。建议建立一个参数对照表,把每个参数的值、单位和来源都记录下来。
数据类型问题:温度反演涉及大量浮点运算,必须确保所有输出都是浮点型。有次学生忘了设置数据类型,结果输出的温度全是整数,误差大到离谱。
8. 精度验证与结果分析
得到温度反演结果后,我通常会做三个检查:
- 数值范围检查:城市地区夏季白天温度一般在30-45℃之间
- 空间分布检查:水体温度应该低于陆地,植被覆盖区温度低于建筑区
- 实测数据对比:有条件的话,用气象站数据验证反演结果
在分析B61和B62两个波段的差异时,我发现虽然数值上有微小差别,但空间分布特征一致。所以实际应用中,选择哪个波段主要取决于数据质量,比如是否有条带噪声等。
温度反演是个需要耐心的过程。我记得第一次做的时候,花了整整三天才得到合理的结果。但随着对每个参数物理意义的理解加深,现在基本上两小时就能完成全套分析。关键是要理解每个步骤背后的物理意义,而不是机械地套用公式。
