2. Sentinel-2数据获取与预处理

矿山开采扰动监测对影像的几何一致性和辐射一致性要求很高:同一矿区跨越数年的影像,如果大气校正口径不同、云污染未剔除、像元大小不一致,NDVI或铁染指数的年际变化就可能被“伪变化”淹没。因此本节围绕一条可复现的预处理链展开:产品选择、大气校正、云掩膜、重采样、研究区裁剪与时间序列筛选。

L1C与L2A:先明确“用哪一级产品”

Sentinel-2的L1C是经过几何精校正的大气顶层反射率(TOA)产品,保留了大气散射与吸收的影响;L2A是经Sen2Cor等处理器大气校正后的地表反射率(BOA)产品,并附带场景分类图层(SCL)。对矿山扰动监测而言,若研究目标是植被指数、水体指数或矿物蚀变指数的年际比较,应优先使用L2A;只有在L2A缺失、或需要自行统一校正参数时,才从L1C自行处理。需要注意,L2A的SCL图层本身已包含云、云影、雪、水体等类别,是云掩膜的重要输入。

对比项L1CL2A
反射率类型大气顶层反射率TOA地表反射率BOA
是否含大气校正否是(Sen2Cor)
辅助图层无场景分类含SCL场景分类
典型用途自行校正、算法研究指数计算、时序分析

大气校正:把TOA拉回地表反射率

若使用L1C,需执行大气校正。以Sen2Cor为例,典型命令为:

L2A_Process --resolution 10 S2A_MSIL1C_20230812T032541_N0509_R018_T50SMF_20230812T061234.SAFE

处理后会生成同名的L2A目录,其中R10m、R20m、R60m子目录分别存放对应分辨率的波段与SCL。判断校正是否合理,可检查同一地物在时间序列上的反射率是否稳定:例如矿区裸露排土场在B4(红)波段的BOA反射率通常高于TOA,而浓密植被在B8(近红外)的BOA应明显高于TOA。若某景BOA出现大面积负值或异常高值,应检查气溶胶反演与地形阴影影响,必要时剔除该景。

云掩膜:用SCL做类别筛选

SCL图层像元值对应不同地表类别,常用类别包括:4为植被、5为裸土、6为水体、8为云中概率、9为云高概率、10为薄卷云、3为云影。云掩膜的基本做法是保留植被、裸土、水体等有效类别,剔除云、云影与雪。以Python为例:

import rasterio, numpy as np
with rasterio.open('SCL_20m.jp2') as src:
    scl = src.read(1)
valid = np.isin(scl, [4, 5, 6])
# valid为True的像元参与后续指数计算

矿山场景中,排土场与采坑多为裸土(类别5),若把裸土误当无效值剔除,会直接丢失扰动信息,因此掩膜规则必须结合研究区地表构成来定,而不是机械剔除“非植被”。

重采样与裁剪:统一到同一网格

Sentinel-2各波段分辨率不同(B2、B3、B4、B8为10 m,B5—B7、B8A、B11、B12为20 m,B1、B9、B10为60 m)。做多波段指数计算前,应统一重采样到10 m或20 m。重采样方法上,连续型反射率波段宜用双线性或三次卷积,类别型SCL必须用最近邻,避免产生不存在的类别值。裁剪则按研究区矢量边界进行,建议外扩1—2个像元作为缓冲,防止边缘像元受混合效应影响。

Sentinel-2 预处理链:从产品到时间序列 L1C(TOA) 需自行大气校正 L2A(BOA) 含SCL,优先选用 Sen2Cor 大气校正 TOA → BOA SCL 云掩膜 保留 4/5/6 类 重采样统一网格 反射率双线性 / SCL最近邻 研究区裁剪 矢量边界 + 1~2像元缓冲 时间序列影像筛选 云量阈值 · 有效像元比例 · 时相一致性 · 传感器一致性 分析就绪影像 NDVI / 铁染指数

时间序列筛选:让每一年都可比较

完成单景预处理后,还要对整条时间序列做一致性筛选。常用判据包括:整景云量低于阈值(如20%)、研究区内有效像元比例高于80%、成像时相落在同一物候窗口(例如每年7—9月)、传感器一致(S2A与S2B可混用,但需确认辐射定标版本一致)。筛选后建议保留一份影像清单,记录每景的成像日期、云量、有效像元比例与处理版本,便于后续复现与排障。

实操建议:先用一景L2A跑通“SCL掩膜—重采样—裁剪—指数计算”全流程,确认输出网格与矢量边界对齐后,再批量处理整条时间序列,可显著减少返工。
常见误区:把SCL中的裸土(类别5)当作无效值剔除,会直接抹掉排土场与采坑的扰动信号;另外对SCL使用双线性重采样会生成不存在的类别值,必须用最近邻。

经过上述步骤,得到的是一套空间网格一致、辐射口径一致、云污染受控的影像集合,后续的扰动指数计算与年际对比才有可靠基础。