如何在 R 中使用 s2_mask() 函数来屏蔽哨兵 2 图像中的云?

How to use s2_mask() function in R to mask clouds in Sentinel 2 image?

我想使用工具箱sen2r在R中处理Sentinel 2 L2A数据。我已经手动下载了.SAFE格式的图像。

我已经使用 s2_translate() 将 .SAFE 格式转换为 geotif:

in_dir <- "D:/data/s2"
out_dir <-"D:/s2_geotifs"

## translate .safe to geotif

s2_example <- file.path(
  in_dir,
  "S2B_MSIL2A_20200525T104619_N0214_R051_T31UFT_20200525T133932.SAFE")

s2_raster_dir <- s2_translate(s2_example, 
                              format="GTiff",
                              outdir = out_dir)

这个结果是一个有 11 层的光栅砖,据我所知,所有层都对应于哨兵 2 的光带。

现在我想应用 s2_mask 函数(特别是波段 4 和 8,因为我想制作 NDVI)但是代码文档说您需要 SCL 产品作为输入。 SCL 产品是带有用于掩蔽的分类云像素的波段。如果我将 .SAFE 图像加载到 SNAP 中,例如我可以看到 SCL 产品。但是我无法在我的 s2_translate() 输出中找到 SCL,也无法在原始的 .SAFE 中找到 SCL。

根据文档,输入应如下所示:

所以问题是我在任何地方都找不到 SCL 产品。我已经按照要求申请了s2_translate

默认情况下,s2_translate 只生成 BOA 输出。我认为您还需要再次使用 s2_translate 从 SAFE 明确生成 SCL 文件,使用以下行中的内容:

s2_translate(s2_example,
             prod_type = "SCL", 
             format="GTiff",
             outdir = out_dir)

在此处查看文档:

http://sen2r.ranghetti.info/reference/s2_translate.html http://sen2r.ranghetti.info/reference/safe_shortname.html