
做遥感影像处理的人拿到一幅 L8 的 Level-1 数据第一件事往往不是写算法而是在 ENVI 里打开、线性拉伸一下看看影像长什么样。这一步几乎人人都会做但很多人忽略了一个关键问题你看到的真彩色只是 DN 值的拉伸结果并不是地表真实的反射状况。尤其是当你要算 NDVI、提取水体、反演地表温度或者做土地利用分类时如果跳过辐射定标和大气校正后面所有定量分析的结果都不可信。这篇内容我就围绕 ENVI 5.3.1 处理 Landsat 8 影像的完整流程把辐射定标和大气校正这两步掰开揉碎讲清楚包括每一步为什么要做、参数怎么填、填错了会出现什么问题以及我踩过的坑和排查思路。适合刚开始接触遥感定量处理、或者被 FLAASH 参数折磨过的同学参考。1. 为什么必须做定标和校正DN 值、辐射亮度、反射率的区别1.1 一幅 L8 影像打开后看到的假信息Landsat 8 从美国地质调查局USGS下载下来的 Level-1 数据每个波段存的是 16 位整型 DN 值。DN 值本身不是物理量它只是传感器把接收到的电磁波能量量化后的一个相对数值。传感器在设计时有一个量化范围比如 Landsat 8 OLI 的量化等级是 16 位DN 范围从 0 到 65535。但真实地表反射率是 0 到 1 之间的小数这两者之间差了十万八千里。你在 ENVI 里打开 L8 影像、选 4-3-2 波段组合做真彩色显示看到的是经过线性拉伸的 DN 值映射效果。如果当天大气条件一般、有水汽或者薄雾影像看起来会发灰、发蒙对比度很差。这是因为大气中的气溶胶和水汽对太阳辐射有散射和吸收作用传感器接收到的能量里真正来自地表的反射信号只占一部分很大一部分是大气的路径辐射。这时候如果不做辐射定标和大气校正你从影像上读出来的所有亮度差异都是地表信息和大气干扰的混合体。1.2 定标和校正到底在数学上做了什么辐射定标做的事情是把 DN 值换算成传感器入瞳处的辐射亮度Radiance单位通常是 W/(m²·sr·μm)。这一步用到的核心公式是L Gain × DN Offset其中 Gain 和 Offset 从 MTL 文件的 RADIANCE_MULT_BAND 和 RADIANCE_ADD_BAND 字段读取。这一步解决的是传感器响应不一致的问题让不同时间、不同传感器获取的影像在物理量纲上可比。大气校正做的事情是进一步把辐射亮度中的大气路径辐射、大气吸收、气溶胶散射等影响去掉反演得到地表反射率Surface Reflectance。这个过程的数学关系比定标复杂得多因为大气对辐射的衰减跟波长、观测几何、大气成分、气溶胶类型都有关系。FLAASH 这种基于 MODTRAN 辐射传输模型的算法本质上是在反复模拟辐射在大气中的传输过程找到一组大气参数使得模拟结果和传感器实际接收到的辐射亮度最匹配然后反推出地表反射率。用最简单的类比来理解辐射定标相当于把电子秤校准归零确保同一袋 10 斤米在不同的秤上称出来都是 10 斤大气校正相当于把摊主穿厚重的棉袄、戴着有色眼镜看货物造成的误差也扣掉得到货物本身真实的重量和颜色。2. 数据与软件准备L8 文件包里到底有哪些能用的东西2.1 下载和解压MTL 文件不是摆设Landsat 8 从 USGS EarthExplorer 或者国内地理空间数据云下载下来是一个压缩包解压后会得到一组文件和文件夹。很多初学者只会把 *_MTL.txt 旁边的 TIF 文件直接拖进 ENVI这是第一个错误操作。正确做法是用 ENVI 的 Open As 功能识别 Landsat 的元数据文件让软件自动读取波段顺序、波长、中心坐标等信息。解压后文件包里你需要重点关注的是文件作用*_MTL.txt元数据文件包含传感器、成像时间、太阳高度角、辐射定标系数等一切关键参数*_B2.TIF 等各波段影像B1-B11其中 B1-B7、B9 是多光谱波段B8 是全色波段B10、B11 是热红外波段*_BQA.TIF质量评估波段包含云、雪、陆地、水体等像元标记*_ANG.txt角度文件包含每个像元的观测天顶角、方位角等信息FLAASH 可调用MTL 文件里的 RADIANCE_MULT_BAND、RADIANCE_ADD_BAND、REFLECTANCE_MULT_BAND、REFLECTANCE_ADD_BAND、SUN_ELEVATION、SUN_AZIMUTH、DATE_ACQUIRED 等字段是后续定标和大气校正的参数来源。使用 ENVI 5.3.1 打开数据时这些信息大部分会自动读取但偶尔会有兼容性问题我在 2.3 节单独说。2.2 ENVI 5.3.1 打开 L8 数据的两种方式在 ENVI 5.3.1 中打开 L8 Level-1 数据有两种常用方式第一种菜单栏选择 File Open As Landsat GeoTIFF with Metadata然后选中 MTL 文件。这种方式中ENVI 会自动把全色、多光谱和热红外波段组织为一个虚拟数据集并在文件层里显示对应的波谱信息。第二种直接把 MTL 文件拖入 ENVI 视图。ENVI 的 Open As 机制会识别文件扩展名。但如果你的 ENVI 版本较老可能不支持直接拖放需要走菜单。打开后检查 Data Manager确认波段顺序是否符合预期。Landsat 8 的多光谱波段顺序是 CoastalB1、BlueB2、GreenB3、RedB4、NIRB5、SWIR1B6、SWIR2B7、PanB8、CirrusB9。默认波段组卷可能会把 B8 全色混进来所以建议在多光谱数据组里确认是否只有 B1-B7、B9全色 B8 和热红外 B10、B11 一般分开处理。2.3 Collection 2 数据在老版本 ENVI 里的兼容性问题这里的坑比较深值得单独拿出来讲。USGS 从 2020 年后全面转向 Collection 2 数据MTL 文件结构和 Collection 1 有了变化。ENVI 5.3.1 推出时 Collection 1 是主流所以它在解析 Collection 2 的 MTL 文件时有时会出现中心波长读取不全、定标系数读取失败、甚至打不开 MTL 的情况。典型的报错包括打开 MTL 时提示Unable to parse metadata。打开后波段右键看 Wavelength发现是空的显示 0 或 1。辐射定标时工具界面出现Invalid wavelength values或某个波段无法输出。如果遇到这些问题有一个通用解法先用记事本打开 MTL 文件检查波段波长如果处于异常状态就在 ENVI 的打开界面里手动指定中心波长。具体做法是打开 Raster Manager 的 Edit Header 功能进入 Band 选项卡为每个波段手动输入中心波长值比如 B2 的中心波长是 0.482B3 是 0.561B4 是 0.655B5 是 0.865B6 是 1.609B7 是 2.201B1 是 0.443B9 是 1.373。输入完毕后保存头文件再继续后续定标。这一步虽然繁琐但它能解决一半以上的兼容性问题。需要提醒的是老版本 ENVI 处理 C2 数据时反射率定标的 scale factor 也可能读错。这里先记下一个结论Landsat 8 反射率的 scale factor 是 0.0001不是 1.0。后面辐射定标章节我会详细展开这个参数的影响。3. 辐射定标实操从 DN 值到反射率的第一步3.1 Radiometric Calibration 工具的参数该怎么填在 ENVI 5.3.1 中辐射定标工具的入口在 Toolbox 的 Radiometric Correction Radiometric Calibration。点击后会弹出数据选择界面选择你打开的多光谱数据通常包括 B1-B7、B9不包含 B8 全色和 B10、B11 热红外除非你要单独做热红外辐射定标。工具界面有几个关键参数Calibration Type选择 Radiometric Calibration 前的类型这里注意你要输出的是什么。如果你想直接得到反射率做大气校正通常先输出 Radiance再把 Radiance 作为 FLAASH 输入做大气校正。如果目标是简单快速查看反射率而不做精细的大气校正也可以选择 Reflectance 直接输出但这种方式得到的反射率是大气表观反射率Top-of-Atmosphere Reflectance不是地表反射率不能替代大气校正。Output Data Type一般选 Float。如果你需要节省空间可以选 Integer 再配合 Scale Factor但为了精度建议保持 Float。Scale Factor增益系数这是我在实操里反复提醒自己的参数。在 ENVI 5.3.1 的 Radiometric Calibration 界面Scale Factor 的默认值不一定正确必须手动确认。如果你输出 Radiance一般不需要乘系数即 Scale Factor 保持 1.0 或者根据 MTL 中的辐射定标系数自动计算如果输出 ReflectanceENVI 老版本容易出现 scale factor 默认 1.0 的情况这会导致输出的反射率数值为正常的 10000 倍即典型地表反射率 0.3 会变成 3000。解决方法是在 Output 面板把 Scale Factor 改为 0.0001或者在后续显示时除以 10000。3.2 Scale Factor 才是最大的坑我说 Scale Factor 是最大的坑因为它的错误不会直接报错只会让你的结果数值离谱很多人还察觉不到。我自己第一次做 L8 反射率定标时输出的影像在 ENVI 里看直方图平均值在 500 左右我还以为正常后来跟 MODIS 反射率产品对比才发现差了四个数量级。排查这个问题的正确步骤是定标完成后右键结果图层打开 Quick Stats查看像元值的最小值、最大值、均值。如果是反射率结果均值应该在 0.01 到 0.5 之间最大值一般不会超过 1.2极亮地物如云、雪除外。如果均值和最大值的数量级在 100 以上几乎可以确定是 scale factor 设置错误。回到 Radiometric Calibration 的输出参数面板将 Scale Factor 改为 0.0001重新输出。另外ENVI 5.3.1 在处理 L8 时输出 Radiance 和输出 Reflectance 用的默认 scale factor 不一样。输出 Radiance 时一般是 10 或者 1这个值可以通过对比 MTL 文件中的 RADIANCE_MULT_BAND 和输出结果来验证。我的建议是使用 Radiometric Calibration 的时先在 MTL 文件里确认 REFLECTANCE_MULT_BAND 的值是 2e-05 这一级别再乘以 65535估算 16 位 DN 最大值对应的反射率上限。如果定标结果的最大值跟估算偏差太大说明 scale factor 有问题。3.3 定标结果的快速检查做完辐射定标不要急着拿去跑 FLAASH。先做两件小事第一在 ENVI 里对比定标前后的直方图分布。DN 值数据一般呈近似正态或右偏分布辐射亮度数据由于去掉了增益和偏移会呈现更合理的动态范围。如果定标后的最小值不是 0 附近或者出现大量负值可能需要检查 Offset 是否被正确读取。第二用 Cursor Value 点几个典型地物比如水体、道路、植被查看辐射亮度值是否在合理范围。水体在近红外波段的辐射亮度非常低道路在可见光波段相对较高植被在近红外波段明显高于红光。如果这几个地物的辐射亮度关系不符合常识就要考虑辐射定标的数据源是否选错了波段组。4. FLAASH 大气校正实操四组参数决定成败4.1 输入辐射定标结果前先确认单位FLAASH 工具在 ENVI 5.3.1 中位于 Toolbox 的 Radiometric Correction Atmospheric Correction Module FLAASH Atmospheric Correction。点击后第一步是选择输入文件这里必须选择辐射定标输出的 Radiance 数据单位必须是 W/(m²·sr·μm)。有一种很容易犯的错有人图省事辐射定标直接输出 Reflectance然后拿去跑 FLAASH。FLAASH 的算法假设输入是传感器入瞳辐射亮度你输入反射率它会在内部再乘一圈乱七八糟的东西输出的结果往往偏大或偏暗甚至报出Invalid input的错误。还有一种情况是单位不匹配。如果你做辐射定标时选了输出单位为 W/(m²·sr·μm)FLAASH 会直接识别如果你的定标输出单位是 mW/(m²·sr·μm) 或者别的FLAASH 里的 Scale Factor 需要相应调整。这里有个经验法则在 FLAASH 的 Input Radiance Scale 设置里如果定标结果单位是 W/(m²·sr·μm)Scale 填 1如果单位是 mW就需要换算成 0.001 或类似的值。ENVI 5.3.1 的 Radiometric Calibration 通常默认输出 W/(m²·sr·μm)但万一你改过单位就要注意。4.2 中心坐标、传感器类型、飞行时间能自动就别手动进入 FLAASH 面板后会看到一组基本信息Radiance Scale Factor一般默认 1.0保持自动读取的辐射亮度单位即可。Output Reflectance File设置输出文件名。Output Directory for FLAASH Files设置工作目录FLAASH 运行时会生成中间文件建议单独建文件夹不要和原始数据混在一起。Scene Center LocationFLAASH 界面下方会显示输入影像中心点经纬度通常自动读取你可以通过左侧地图手动微调但一般情况下不用改。唯一需要注意的是如果影像中心经纬度显示为空白或者 0说明你的输入文件头文件里没有正确的坐标系信息。解决方法是先在 ENVI 中 File Edit Header 检查 Map Info 是否存在没有就先用影像自带的 GCP 校正或者从 MTL 文件的 CORNER_UL_LAT_PRODUCT 等字段手动写入。Sensor Type选择 Landsat 8 OLI。ENVI 5.3.1 的传感器列表里已经包含了 Landsat 8 OLI 的选项选择后软件会自动带出对应的波段响应位置。Flight Date 和 Flight Time GMT这两个参数至关重要。FLAASH 需要知道成像时刻的大阳位置才能正确模拟大气路径辐射。日期和时间可以直接从 MTL 文件的 DATE_ACQUIRED 和 SCENE_CENTER_TIME 读取注意 MTL 里写的是 UTC 时间直接填写 GMT 即可不需要换算成当地时间。很多人在这一步填错时间导致结果异常我后面会举一个排查实例。4.3 大气模型和气溶胶模型怎么选在 FLAASH 的 Atmospheric Model 下拉框里有热带Tropical、中纬度夏季Mid-Latitude Summer、中纬度冬季Mid-Latitude Winter、亚寒带夏季Sub-Arctic Summer、亚寒带冬季Sub-Arctic Winter等多个选项。选哪一个取决于影像成像的纬度和季节不是随便挑一个最顺眼的。一个简单可行的判断方法是查表纬度范围1月2月3月4月5月6月7月8月9月10月11月12月80°N 以上SAWSAWSAWSAWSASSASSASSASSASSAWSAWSAW60°N-80°NSAWSAWSAWSASSASSASSASSASSASSAWSAWSAW40°N-60°NMLSMLSMLSMLSMLSMLSMLSMLSMLSMLSMLSMLS20°N-40°NMLSMLSMLSMLSMLSMLSMLSMLSMLSMLSMLSMLS0°N-20°NTTTTTTTTTTTT以上是纬度-季节的粗选逻辑。中纬度地区夏季选 Mid-Latitude Summer冬季选 Mid-Latitude Winter春秋可以根据影像实际情况选择相邻模型。如果影像区域在山地或者高海拔地区我还习惯额外关掉 Water Retrieval 或者手动调整水汽含量因为 FLAASH 默认的水汽反演在高海拔干燥区域可能不够准确。气溶胶模型有 Rural乡村、Urban城市、Maritime海洋、Tropospheric对流层等。这个选择更依赖先验知识影像覆盖城区为主就选 Urban沿海或海面区域选 Maritime大范围陆地和农田选 Rural高海拔清洁区域选 Tropospheric。如果没有明显倾向用 Rural 是比较中庸的选择大多数陆地遥感场景它都能兜底。4.4 水汽反演与气溶胶反演的开关不是所有波段都适合自动反演FLAASH 面板里有一个 Water Retrieval 选项可以选择自动反演水汽含量。Landsat 8 有 1.37μm 卷云波段和 1.6μm、2.2μm 短波红外波段理论上可以做水汽反演但要注意水汽反演依赖的是 0.94μm 附近的水汽吸收带Landsat 8 有 B50.865μm但并非常规水汽反演设计波段ENVI 5.3.1 对 L8 的水汽反演支持并不完美。在实际操作中我一般建议气溶反演直接用 2-bandK-T方法它需要指定一个短波红外波段通常是 2.1μm 附近对应 L8 的 B7通过暗像元假设来估算气溶胶光学厚度。如果不做水汽反演可以选 NoFLAASH 会使用默认的大气水汽含量结果仍然可用。此外Initial Visibility初始能见度默认通常为 40km如果影像里有明显的雾霾或空气污染可调低至 10-20km如果影像特别干净清晰可调高到 60km。这是 FLAASH 迭代反演气溶胶的初始猜测值如果影像很大可以开 3-5 次迭代。模态设置里还有一个 Multispectral Settings要注意里面的 Filter Function File。ENVI 自带 L8 OLI 的波谱响应函数文件一般在安装目录的 filters 文件夹下文件名为 landsat8_oli.sli 或类似名称。ENVI 5.3.1 在选择了 Sensor Type 为 Landsat 8 OLI 后Filter Function 应该自动匹配。但如果你发现 Multispectral Settings 里是空的或者选了错误的传感器响应文件会导致 FLAASH 输出结果的光谱曲线在波段边界出现异常尖刺。这种情况下手动点击 Edit 按钮浏览到 ENVI 安装目录下自带的光谱响应文件选中正确的那个。4.5 FLAASH 运行和输出设置完所有参数后点击 Apply 或 RunFLAASH 会开始运行。运行时间取决于数据大小和计算机性能。一幅 L8 多光谱数据大约 7500×7500 像元用普通办公电脑跑可能要 20-40 分钟用性能好一点的台式机 10-20 分钟能完成。运行过程中不能关闭 ENVI也不能在同一个 Data Manager 里同时打开大量文件否则可能内存不足。FLAASH 运行完成会生成两个主要输出一个地表反射率文件一个诊断文件扩展名为 *_atm.txt 或类似。诊断文件里包含了反演的水汽含量、气溶胶光学厚度、能见度等信息这个文件值得留个心眼后面排查结果异常时可以用。5. 校正过程中的典型异常和排查链路5.1 定标报错wavelength not found先从 MTL 解析入手现象打开 MTL 后在 Radiometric Calibration 里点 OK弹窗提示某些波段无法读取波长无法继续。排查链路先用 File Open As Landsat GeoTIFF with Metadata 方式打开确认 MTL 能被 ENVI 解析。如果提示 resolve metadata 失败直接用记事本打开 MTL查看是否有明显的编码格式问题比如 UTF-8 BOM 被 ENVI 误读。检查 Collection 版本。如果是 C2 数据按第 2.3 节的方法手动为波段输入中心波长。重新保存头文件Edit Header Edit Attributes Wavelength再跑一次辐射定标。如果依然报错检查是否选了全色波段 B8 导致波长组混乱。全色波段波长是 0.5-0.68μm 的宽波段在定标工具里它的波长定义和窄波段不同容易引发冲突。解决方法是在数据选择时只加载多光谱波段排除 B8、B10、B11。5.2 FLAASH 结果发暗、发绿单位与云检测的锅现象FLAASH 输出结果影像整体发暗或者真彩色显示时明显偏绿、偏蓝地物轮廓还在但色彩完全不对。排查链路第一步检查 FLAASH 输入文件的单位。我之前说过必须确保输入是辐射亮度单位是 W/(m²·sr·μm)。右键输入文件查看 Metadata如果显示单位是 W/(m²·sr·μm) 或者 mW就需要在 FLAASH 的 Radiance Scale 中调整。单位差 1000 倍结果会以非常夸张的方式偏暗或偏亮。第二步查看 FLAASH 输出直方图。正常情况下反射率影像的最大值应该在 1 左右均值在 0.05-0.3 范围。如果最大值只有 0.1说明影像被严重压缩多半是 scale factor 或单位设置错误导致输入辐射亮度过小。第三步检查 RGB 合成波段顺序。ENVI 5.3.1 默认打开多波段数据时RGB 组合可能不是 4-3-2RBand4 红、GBand3 绿、BBand2 蓝如果你看到的图层被设置为 5-4-3植被在 NIR 段发亮就会呈现一种偏绿荧光的视觉效果会自动给人一种校正失败的错觉。先在 RGB 组合里确认波段设置再判断色彩是否异常。第四步查看 FLAASH 生成的水汽反演结果。如果诊断文件里显示水汽含量只有 0.1g/cm²而在低海拔湿润地区这个值明显偏低说明水汽反演波段选择出了问题。这种情况在 L8 上常见解决方法是改 Water Retrieval 为 No使用默认大汽水汽含量重新运行。5.3 反射率分布范围不对五个被我确认过的原因反射率结果分布范围不对是所有大气校正问题里最让人头疼的因为它的原因太分散了。我把实际碰过的原因列成一个表方便你逐项排查异常现象可能原因排查方法反射率整体偏大最大到 5 以上输入数据是反射率而非辐射亮度或 Scale Factor 设置错误检查输入文件单位和 FLAASH Input Radiance Scale反射率整体偏小都在 0-0.05 之间辐射定标输出时误乘了 0.0001 缩放过小或单位差千倍确认辐射定标输出单位W/(m²·sr·μm)可见光波段反射率异常高接近 1气溶胶模型选错或能见度过低检查 Initial Visibility 和气溶胶模型水体在近红外反射率仍然 0.2未正确设置水汽反演或暗像元选择失败尝试改用 2-band(K-T) 气溶胶反演长波红外波段反射率为 0 或缺失头文件波段顺序错误重新检查 B6、B7 的波长顺序6. 结果验证三板斧光谱曲线、NDVI、区域均值对比6.1 植被、水体、城市的光谱曲线验证大气校正做完后把反射率结果加载进 ENVI随手就可以验证。最简单的方法是右键图层选择 Z ProfileSpectral然后在影像上点几个点。植被点反射率光谱应该在蓝光B2和红光B4低绿光B3有一个小峰近红外B5显著升高SWIR1B6和 SWIR2B7又下降。这是典型的植被红边后高平台特征。如果大气校正失败植被光谱往往在蓝光段异常高形成一种大气残留现象。水体点在可见光波段有一定反射尤其是浑水但近红外和短波红外波段反射率极低接近 0。如果水体在 NIR 段很高说明校正后的数据仍有问题或者你点到了水里长满藻类的地方。城市/裸土点反射率在可见光到 SWIR 波段整体较高且曲线平缓起伏不大。裸土在红光和近红外之间差距小跟植被形成鲜明对比。这个验证方法在 FLAASH 输出结果里随便点几个点就能判断结果是否符合常识是非常实用的一步。6.2 NDVI 数值验证NDVI (NIR - Red)/(NIR Red)。大气校正后NDVI 更能反映真实植被覆盖状况。在 ENVI 的 Band Math 里输入(float(b5) - float(b4)) / (float(b5) float(b4) 1e-10)计算结果后统计直方图。典型地类的 NDVI 参考值地类NDVI 典型范围浓密植被0.5 - 0.9稀疏植被/农田0.2 - 0.5裸土/岩石0 - 0.2水体/雪-0.2 - 0如果你发现整个影像的 NDVI 都偏低且分布极窄说明大气校正过度地表反射率被压得太低如果 NDVI 偏高但可见光反射率也高可能是气溶胶反演失败。6.3 与 MODIS 反射率产品做定量对比如果你想更严谨地验证可以把 L8 大气校正结果和同一时间段、同一区域的 MODIS 表面反射率产品MOD09GA做对比。虽然两者的空间分辨率不同L8 是 30mMODIS 是 500m但在均匀地表大范围农田、水体上两者的反射率应该在几个百分点误差范围内。具体操作下载 MODIS MOD09GA 产品用 ENVI 打开裁剪到 L8 影像相同区域。对 L8 反射率结果做重采样或聚合如取 15×15 像元均值或者直接目视比较。取若干均匀区域在 L8 和 MODIS 对应波段上提取反射率均值计算差值。如果一致性好说明 FLAASH 参数设置基本合理。如果 L8 明显偏暗或偏亮需要用第 5 节的排查思路返工。这个方法对初学者可能稍微麻烦一点但它能把看起来差不多变成定量上可靠值得理解。7. 从 Landsat 8 延伸到 MODIS大气校正思路的通用性7.1 MODIS 数据的定标方式与 L8 的差异很多人在处理完 L8 后会遇到 MODIS 数据的大气校正需求。MOD09GA 已经是官方地表反射率产品不需要自己再做 FLAASH但如果你拿的是 MODIS L1BMOD021KM 等辐射亮度产品那就要自己处理。MODIS L1B 的 HDF 文件里每个科学数据集都附带定标系数属性和有效范围可以使用 ENVI 的 MODIS Conversion ToolkitMCTK读取。MCTK 能自动读取 HDF 属性和定标系数输出辐亮度或者反射率影像。不同于 L8 的 MTL 文本MODIS 的定标信息嵌入在 HDF 文件内部不同波段可能使用不同的 scale factor 和 offset手动读取非常繁琐强烈建议用 MCTK 批量处理。7.2 MODIS 大气校正的常见路径如果用 MCTK 把 MODIS L1B 转成辐射亮度后同样可以进入 FLAASH 跑大气校正。传感器的选择不是 Landsat 8 OLI而是 MODIS。FLAASH 里提供了 MODIS 的传感器响应函数可以直接使用。但需要注意MODIS 空间分辨率粗250m/500m/1km景覆盖范围极大FLAASH 处理时计算量比 L8 大得多。MODIS 多波段适合水汽反演FLAASH 的水汽反演在 MODIS 上更可靠可以把 Water Retrieval 打开。官方推荐做法还是直接下载 MOD09 产品省时省力还避免了自己校正引入的误差。Landsat 和 MODIS 的定标校正流程虽然参数设置不同但核心的算法逻辑一模一样辐射定标解决 DNa 到物理量的问题大气校正解决大气干扰的问题。这一套思路理解透彻之后换任何光学卫星数据你都能快速上手。最后再分享一个操作习惯做了这么多次辐射定标和大气校正我个人的体会是最有用的习惯不是记住某个工具的按钮而是在每一步处理前都先看一眼输入数据的头文件和元数据。定标系数、波长、单位、中心坐标这些东西如果错了后面的校正做得再花哨也是白搭。还有一个小技巧我现在每次跑 FLAASH 前都会在原始 L1 影像上先选几个暗目标点和亮目标点记录它们的 DN 值。校正完成后用这些点去检查反射率结果是否符合暗目标反射率接近 0、亮目标反射率显著高于暗目标的规律。这个习惯帮我快速排除过好几次单位错误和波段顺序混乱的问题。最后一个建议所有 FLAASH 中间文件和工作目录最好按日期和数据名分开存放。FLAASH 运行会生成一堆临时文件如果所有数据堆在一个文件夹里过两个月再回来找数据时你会感谢自己当初多花了半分钟建文件夹。