背景:sentinel-2 数据处理基线算法修改
官方文件:https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-2-msi/product-types/level-2a
由于欧空局对处理基线算法的升级,导致sentinel-2数据在使用过程中也受到一定的影响。即在2022年1月25日之前的影像使用时,可以进行简单的缩放,但是现在需要增加一个偏移系数。
原:
其中TOA表示大气顶层反射率,SR表示地表反射率,L1C和L2A表示sentinel-2数据等级。
现:
但是并不意味着所有的数据都是使用相同的公式来进行计算,2022年之后的数据一定是按照现在的公式来进行转化,但是欧空局也逐渐将之前的数据进行重新处理,加上一个偏置。因此我们在选择数据的时候一定要注意处理基线和日期,来选择对应的转换公式。
注意:在官方软件Snap中打开后,会自动进行校正,但是在使用其他软件如ENVI,Arcgis或者脚本中进行操作时一定要注意。
数据下载
欧空局官方:https://browser.dataspace.copernicus.eu/
1.注册
进入官网后,先进行注册,根据提示填写信息(比较简单)。注册好之后进行登录,否则不允许下载。
2.选择需要下载的范围
在网页的右侧有位置选择按钮,有点,线,面三种类型。
3.根据要求进行过滤(日期,云量,数据类型,数据等级)
4.直接下载或者加入workshop直接下载
!!!注意:这里大家会发现,明明两幅影像是同一时间过境的,为什么会有两个L1C产品?可以看到第一个产品的处理基线是:206,是在2018年7月22日进行处理的;第二个产品的处理基线是:500,是在2023年8月16日处理的。如果我们直接下载两景数据进行对比,发现新产品会统一的比旧产品高1000的dn值。打开新产品的xml文件,会发现有1000的偏移。因此在使用对应的产品时一定要进行正确的转换。
偏移对NDVI时间序列的影响
在发现该问题时,很多人会问:如果只是使用2022年之后的数据,只要保证数据的一致性,是不是就不需要进行偏移了,答案当然是:不行!因为指数的基础都是根据反射率进行计算的,而你如果不偏移,你使用的初始数据本身就不是反射率,后续研究也就没有意义。大家可以移步看下边的研究:
利用sentinel-2数据做长时间序列:https://zhuanlan.zhihu.com/p/555527988
在不考虑偏移的情况下制作NDVI序列(两个数据掺杂):
会有很多特别多的低值部分,其实很好解释,NDVI的公式为:
在近红外波段和红色波段差值不变的情况下,分母凭空多了2000,它的值必然会极具缩小。
数据预处理(批处理)
本处的数据预处理指的是将L1C级数据转换为L2A级数据,或者是将TOA数据转化为SR数据,实际上是一个大气校正和地形校正的过程。主要是有两个方法:欧空局官方提供的Sen2Cor工具(主要讲解,所有系统通用),以及使用usgs提供的以6s模型为基础优化后的LaSRC算法(有需要再Call我,Linux下)。
首先,先下载Sen2Cor工具:Sen2Cor – STEPhttps://step.esa.int/main/snap-supported-plugins/sen2cor/ 进去直接点击下载就可以,不需要任何权限。下载好之后将文件解压,建议放到Snap文件夹下(非必须,能找见就可以)。
加环境变量,右键桌面,此电脑->属性->高级系统设置->高级->环境变量->双击Path->加入插件所在位置。
检查安装效果:进入到安装插件的目录,输入cmd回车,在弹出的命令行中输入:L2A_Process -h,弹出如下窗口则安装成功。
接下来开始批处理,将需要处理的文件都放到根目录的一个文件夹下(路径太长无法处理),即在D盘中创建新文件夹,将待处理的一级影像(一定是解压缩后的.SAFE文件)放进去,最后只需输入形如:D:/Process的目录。
在插件目录中新建记事本,输入下边的内容,修改三个参数后,将后缀的.txt修改为.bat.双击运行即可。
@echo off
rem 设置Sen2cor所在目录变量
set "Sen2cor_bin=D:\Software\Snap\Sen2Cor-02.11.00-win64"
rem 设置数据所在目录文件
set "input_dir=H:\process"
rem 设置输出文件夹
set "output_dir=H:\process"
#遍历输入路径下的所有哨兵文件。进行处理
for /d %%i in (%input_dir%\S2*.SAFE ) do (
%Sen2cor_bin%\L2A_Process.bat %%i --output_dir=%output_dir%
echo "yes"
)
官方的2级产品由于地形校正的问题会导致影像失真的问题,使用Sen2Cor来进行校正可以减轻这一失真现象,提高与Landsat等影像的一致性。
最后需要注意,使用Sen2Cor处理出来的2级产品,处理基线为99999,但是他是否具有偏移量呢?取决于你使用的一级产品的处理基线,也就是说如果你使用的一级产品有偏移,则生成的2级产品也有偏移;如果你使用的一级产品没有偏移,则生成的2级产品就没有偏移。
总结
对于Sentinel-2数据的使用一定要注意检查,要保证反射率产品的一致性,否则对后续处理会造成严重的影响。