The function is a wrapper to perform the entire
processing chain to find, download and pre-process Sentinel-2
data. Input is a set of parameters that can be passed with a
list or file (parameter param_list
) or singularly (see the
descriptions of all the other parameters).
sen2r(
param_list = NULL,
gui = NA,
preprocess = TRUE,
s2_levels = "l2a",
sel_sensor = c("s2a", "s2b"),
online = TRUE,
server = "gcloud",
order_lta = TRUE,
apihub = NA,
downloader = "builtin",
overwrite_safe = FALSE,
rm_safe = "no",
step_atmcorr = "auto",
sen2cor_use_dem = NA,
sen2cor_gipp = NA,
max_cloud_safe = 100,
timewindow = NA,
timeperiod = "full",
extent = NA,
extent_name = "sen2r",
s2tiles_selected = NA,
s2orbits_selected = NA,
list_prods = NA,
list_rgb = NA,
list_indices = NA,
index_source = "BOA",
rgb_ranges = NA,
mask_type = NA,
max_mask = 100,
mask_smooth = 0,
mask_buffer = 0,
clip_on_extent = TRUE,
extent_as_mask = FALSE,
reference_path = NA,
res = NA,
res_s2 = "10m",
unit = "Meter",
proj = NA,
resampling = "near",
resampling_scl = "near",
outformat = "GTiff",
rgb_outformat = "GTiff",
index_datatype = "Int16",
compression = "DEFLATE",
rgb_compression = "90",
overwrite = FALSE,
path_l1c = NA,
path_l2a = NA,
path_tiles = NA,
path_merged = NA,
path_out = NA,
path_rgb = NA,
path_indices = NA,
path_subdirs = TRUE,
thumbnails = TRUE,
parallel = FALSE,
processing_order = "by_groups",
use_python = NA,
tmpdir = NA,
rmtmp = TRUE,
log = NA
)
(optional) List of input parameters:
it can be both an R list or the path of a JSON file.
If some parameters are passed both as elements of param_list
and as function arguments, the values passed as function
arguments are considered.
If some parameters are missing in param_list
and are not
provided as arguments, default values will be used.
Use the function s2_gui()
to create a complete list of
parameters.
If param_list
is NULL (default), values given with the
parameters below (or default values for parameters not
provided) are used.
(optional) Logical: if TRUE, function s2_gui()
is
launched before starting to process in order to set or load parameters;
if FALSE, the function uses parameters passed with param_list
or
with other function arguments. Default is FALSE if param_list
is not
NULL, TRUE elsewhere.
(optional) Logical: TRUE (default) to perform also preprocessing steps, FALSE not to (do only find, download and atmospheric correction).
(optional) Character vector of length 1 or 2, with
Sentinel-2 levels required for processing steps or as output.
This parameter is used only if preprocess = FALSE
(otherwise, the
required levels are derived from list_prods
).
Accepted values: "l1c" and "l2a"; default: "l2a".
(optional) Character vector of length 1 or 2, with Sentinel-2 sensors to be used. Accepted values: "s2a" and "s2b"; default: c("s2a","s2b").
(optional) Logical: TRUE (default) to search for available products on SciHub and/or Google Cloud (and download if needed); FALSE to work only with already downloaded SAFE products.
(deprecate) Character vector of length 1, with the names of
the servers on which SAFE archives are searched.
Currently, only "gcloud"
(Google Cloud) is supported.
Old "scihub"
(ESA Sentinel Hub) can no more be used, since November 2023,
when the Copernicus Sentinel Data is no longer available and has been
replaced by the Copernicus Data Space Ecosystem.
See also the section "Details" of s2_list()
.
(optional) Logical: TRUE (default) to order products from
the Long Term Archive if unavailable for direct download; FALSE to simply
skip them (this option has effect only in online mode).
It takes effect only if argument server
includes "scihub"
.
deprecated
(optional) Character value corresponding to the executable
which should be used to download SAFE products. It could be one among
"builtin"
(default) and "aria2"
.
If aria2
is not installed, built-in method will be used instead.
It takes effect only if argument server
includes "scihub"
.
(optional) Logical: TRUE to overwrite existing products with products found online or manually corrected, FALSE (default) to skip download and atmospheric correction for products already existing.
(optional) Character: should SAFE products be deleted after preprocessing? "yes" (or "all") means to delete all SAFE; "no" (default) not to delete; "l1c" to delete only Level-1C products.
(optional) Character vector to determine how to obtain Level-2A SAFE products:
"auto"
(default) means that L2A is first
searched on SciHub: if found, it is downloaded, if not, the
corresponding Level-1C is downloaded and sen2cor is used to
produce L2A;
"scihub"
means that Sen2Cor is always used from L1C products
downloaded from SciHub;
"l2a"
means that they are downloaded if available on SciHub,
otherwise they are skipped (sen2cor is never used).
(optional) Logical, determining if a DEM should be
used for topographic correction by Sen2Cor (see the documentation of
sen2cor()
- argument use_dem
for further details).
Currently the default value is NA in order to grant backward compatibility:
in this case, the option set in the XML GIPP configuration file
used by sen2r (stored in the default sen2r settings directory) is respected.
Note: in a future release of sen2r, the default value will be set to TRUE, so to grant homogeneity between Level-2A products downloaded from ESA Hub and generated using Sen2Cor.
(optional) Ground Image Processing Parameters (GIPP)
to be passed to Sen2Cor (see the documentation of sen2cor()
- argument
gipp
- for details about the usage of this argument).
Default value (NA) corresponds to an empty list of parameters.
(optional) Integer number (0-100) containing
the maximum cloud level of each SAFE to be considered (default: no filter).
It it used to limit the research of SAFE products to "good" images,
so it is applied only to non-existing archives (existing SAFE are always
used).
In this sense, this parameter is different from max_mask
, which can be
used to set a maximum cloud coverage over output extents.
Notice also that this value is used to filter on the basis of the metadata
"Cloud cover percentage" associated to each SAFE, so it is not based
on the cloud mask defined with the processing options.
(optional) Temporal window for querying: Date object of length 1 (single day) or 2 (time window). Default is NA, meaning that no filters are used if online = FALSE, and all found images are processed; if online = TRUE, last 90 days are processed. Is it possible to pass also integer (or difftime) values, which are interpreted as the last n days.
(optional) Character:
"full" (default) means that all the images included in the time window are considered;
"seasonal" means that only the single seasonal periods in the window are used (i.e., with a time window from 2015-06-01 to 2017-08-31, the periods 2015-06-01 to 2015-08-31, 2016-06-01 to 2016-08-31 and 2017-06-01 to 2017-08-31 are considered).
(optional) Spatial extent on which to clip products (it can be both the path of a vector file or a geoJSON). Default is NA for offline mode (meaning no extent: all found tiles are entirely used); in online mode, a sample extent is used as default.
(optional) Name of the area set as extent, to be used in the output file names. Default is "sen2r" The name is an alphanumeric string which cannot contain points nor underscores, and that cannot be a five-length string with the same structure of a tile ID (two numeric and three uppercase character values).
(optional) Character vector with the Sentinel-2 tiles to be considered (default is NA, meaning all the tiles).
(optional) Character vector with the Sentinel-2 orbits to be considered (still to be implemented; for now, all the accepted values are listed).
(optional) Character vector with the values of the products to be processed (accepted values: "TOA", "BOA", "SCL", "TCI"). Default is no one (NA).
(optional) Character vector with the values of the RGB images to be produced. Images are in the form RGBrgbx, where:
x is B (if source is BOA) or T (is source is TOA);
r g and b are the the number of the bands to be used respectively for red, green and blue, in hexadecimal format. Notice that this is the actual number name of the bands: so, to use i.e. BOA band 11 (1610nm) use the value "b", even if band 11 is the 10th band of a BOA product (because band 10 is missing). (e.g., RGB432B, RGB843B) Default is no one (NA).
(optional) Character vector with the values of the spectral indices to be computed. Default is no one (NA).
(optional) Character value: if "BOA" (default), indices are computed from BOA values; if "TOA", non corrected reflectances are instead used (be careful to use this setting!).
(optional) Range of valid values to be used for RGB products.
Values must be provided in the same scale used within SAFE and BOA/TOA
products (0-10000, corresponding to reflectances * 10000).
If can be a 2-length integer vector (min-max for all the 3 bands) or a 6-length vector or
3x2 matrix (min red, min green, min blue, max red, max green, max blue).
Default is to use c(0,2500) for bands 2, 3 and 4; c(0,7500) for other bands.
In case list_rgb
is a vector of length > 1, rgb_ranges
must be a list
of the same length (otherwise, the same range values will be used for all the RGB
products).
(optional) Character value which determines the categories
in the Surface Classification Map to be masked (see s2_mask()
for the accepted values). Default (NA) is not to mask.
(optional) Numeric value (range 0 to 100), which represents
the maximum percentage of allowed masked surface (by clouds or any other
type of mask chosen with argument mask_type
) for producing outputs.
Images with a percentage of masked surface greater than max_mask
%
are not processed (the list of expected output files which have not been
generated is returned as an attribute, named "skipped").
Default value is 100 (all products are produced).
This parameter is different from max_cloud_safe
, because:
it is computed over the selected extent;
it is computed starting from the cloud mask defined as above. Notice that the percentage is computed on non-NA values (if input images had previously been clipped and masked using a polygon, the percentage is computed on the surface included in the masking polygons).
(optional) Numeric positive value: the smoothing radius
(expressed in unit of measure of the output projection, typically metres)
to be applied to the cloud mask by function s2_mask()
.
(optional) Numeric value: the buffering radius
(expressed in unit of measure of the output projection, typically metres)
to be applied to the cloud mask by function s2_mask()
.
Default value (0) means that no buffer is applied; a positive value causes
an enlargement of the masked area; a negative value cause a reduction.
(optional) Logical: if TRUE (default), output products and indices are clipped to the selected extent (and resampled/reprojected); if FALSE, the geometry and extension of the tiles is maintained.
(optional) Logical: if TRUE, pixel values outside
the extent
polygon are set to NA; if FALSE (default), all the values
within the bounding box are maintained.
(optional) Path of the raster file to be used as a reference grid. If NA (default), no reference is used.
(optional) Numeric vector of length 2 with the x-y resolution for output products. Default (NA) means that the resolution is kept as native.
(optional) Character value corresponding to the native Sentinel-2 resolution to be used. Accepted values are "10m" (default), "20m" and "60m".
(optional) Character value corresponding to the unit of measure with which to interpret the resolution (for now, only "Meter" - the default value - is supported).
(optional) Character string with the pro4string of the output resolution. default value (NA) means not to reproject.
(optional) Resampling method (one of the values supported
by gdal_translate
: "near"
(default), "bilinear"
, "cubic"
,
"cubicspline"
, "lanczos"
, "average"
or "mode"
).
(optional) Resampling method for categorical products
(for now, only SCL): one among "near"
(default) and "mode"
.
(optional) Format of the output file (in a
format recognised by GDAL). Default is "GTiff"
.
Value "BigTIFF"
can be used to generate a GeoTIFF with the option BigTIFF
(optional) Format of the output RGB products (in a
format recognised by GDAL). Default is "GTiff"
.
(optional) Numeric datatype of the output
spectral indices (see s2_calcindices()
.
(optional) In the case GTiff is chosen as output format, the compression indicated with this parameter is used (default is "DEFLATE").
(optional) In the case GTiff
is chosen as
output format for RGB products, the compression indicated
with this parameter is used (default is "DEFLATE"
).
In the cases GTiff or JPEG are chosen as output format for RGB products,
this parameter can also be a 1-100 integer value, which is interpreted
as the compression level for a JPEG compression.
(optional) Logical value: should existing output files be overwritten? (default: FALSE).
(optional) Path of the directory in which Level-1C SAFE products are searched and/or downloaded. If not provided (default), a temporary directory is used.
(optional) Path of the directory in which Level-2A SAFE products are searched, downloaded and/or generated. If not provided (default), a temporary directory is used.
(optional) Path of the directory in which Sentinel-2
tiles (as generated by s2_translate()
) are searched and/or generated.
If not provided (default), a temporary directory is used, and files
are generated as virtual rasters; otherwise, they are generated in
the format specified with outformat
parameter.
(optional) Path of the directory in which Sentinel-2
tiles merged by orbit (as generated by s2_merge()
) are searched and/or
generated.
If not provided (default), a temporary directory is used, and files
are generated as virtual rasters; otherwise, they are generated in
the format specified with outformat
parameter.
(optional) Path of the directory in which Sentinel-2 output products are searched and/or generated. If not provided (default), a temporary directory is used.
(optional) Path of the directory in RGB products
are searched and/or generated.
If not provided (default), path_out
is used.
(optional) Path of the directory in which files of
spectral indices are searched and/or generated.
If not provided (default), path_out
is used.
(optional) Logical: if TRUE (default), a directory
for each output product or spectral index is generated within
path_tiles
, path_merged
, path_out
and path_indices
; if FALSE,
products are put directly within them.
(optional) Logical: if TRUE (default), a thumbnail is
added for each product created. Thumbnails are JPEG or PNG georeferenced
small images (width or height of 1024 pixels) with default colour palettes
(for more details, see the help window in the GUI). They are placed in
a subdirectory of the products names "thumbnails"
.
If FALSE, they are not created.
(optional) Logical or integer: setting to TRUE, the processing
is executed using multiple cores in order to speed up the execution.
Parallelisation is performed on groups of dates.
The number of cores is automatically determined; specifying it is also
possible (e.g. parallel = 4
).
If FALSE (default), the processing chain is forced to run with a single core
(this can be useful if multiple sen2r()
instances are run in parallel).
(optional) Character string: order used to execute the processing chain (this affects the speed of computation and the usage of system resources). Values can be one of the followings:
"4"
or "by_groups"
(default):
it provides a good compromise between processing speed and disk usage.
Processing is done as follows:
the list of required SAFE and output product names is computed;
the required dates are grouped in $g$ groups, where $g$ is the number of dates divided by the number of CPU;
groups are then processed sequentially; for each group:
the required SAFE archives are downloaded;
Sen2Cor is applied in parallel using one core per L1C SAFE archive;
the remaining processing operations are executed using parallel R sessions (one core for each date).
"2"
or "by_date"
:
this allows minimising the requirements of disk usage
(in particular if SAFE archives are deleted after processing).
It is similar to the default execution, but each group is composed
by a single date: so the disk space occupied by SAFE archives
and temporary files is lower,
but it is generally slower than the default one because
parallel computation over dates for products' generation is not possible.
"3"
or "mixed"
:
this allows maximising CPU usage and processing speed.
The cycle on groups is ignored, and all the required SAFE are
first of all downloaded and/or produced, and then dates are
processed in parallel.
This mode is faster than the default mode, but it requires
all SAFE archives to be downloaded and processed before performing
subsequent steps, thus increasing disk space requirements.
"1"
or "by_step"
:
this is the legacy mode, in which the cycle on groups is ignored
as well as the parallel computation over dates.
All SAFE archives are first downloaded/processed,
then the processing steps are performed sequentially.
This mode is similar to the previous one in terms of disk usage
but it is slightly slower; its advantage are the lower RAM requirements.
Deprecated argument
(optional) Path where intermediate files will be created.
Default is a temporary directory (unless outformat = "VRT"
: in this case,
default is a subdirectory named ".vrt" within path_out
).
(optional) Logical: should temporary files be removed?
(Default: TRUE). rmtmp
is forced to FALSE
if outformat = "VRT"
.
(optional) Character string with the path where the package messages will be redirected. Default (NA) is not to redirect (use standard output). A two-length character with two paths (which can also coincide) can be used to redirect also the output: in this case, the first path is the path for messages, the second one for the output.
A vector with the paths of the files which were created (excluded the temporary files); NULL otherwise. The vector includes some attributes:
cloudcovered
with the list of images not created due to the higher
percentage of cloud covered pixels;
missing
with the list of images not created due to other reasons;
procpath
with the path of a json parameter file, created after each
sen2r()
run, containing the parameters used in the execution of the
function;
ltapath
with the path of a json file containing the list of the
SAFE Sentinel-2 archives eventually ordered in Long Term Archive.
status
with a data.frame summarising the status of the processing (see
sen2r_process_report()
).
License: GPL 3.0
L. Ranghetti, M. Boschetti, F. Nutini, L. Busetto (2020). "sen2r": An R toolbox for automatically downloading and preprocessing Sentinel-2 satellite data. Computers & Geosciences, 139, 104473. doi:10.1016/j.cageo.2020.104473 , URL: https://sen2r.ranghetti.info/.
# \donttest{
# Open an interactive section
if (interactive()) {
sen2r()
}
# Launch a processing from a saved JSON file (here we use an internal function
# to create a testing json file - this is not intended to be used by final users)
json_path <- build_example_param_file()
if (is_gcloud_configured()) {
out_paths_2 <- sen2r(json_path)
} else {
out_paths_2 <- character(0)
}
#> [2023-11-09 22:27:28] #### Starting sen2r execution. ####
#> Spherical geometry (s2) switched off
#> Loading required namespace: stringi
#> [2023-11-09 22:27:30] Searching for available SAFE products...
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> [2023-11-09 22:27:30] Querying Google Cloud (this can take a very long
#> time)...
#> [2023-11-09 22:27:39] Computing output names...
#> [2023-11-09 22:27:40] Starting to download the required level-2A SAFE
#> products.
#> [2023-11-09 22:27:40] Check if products are available for download...
#> [2023-11-09 22:27:40] Downloading Sentinel-2 image 1 of 1
#> (S2B_MSIL2A_20200801T100559_N0214_R022_T32TNS_20200801T135302.SAFE)...
#> [2023-11-09 22:27:44] Download of level-2A SAFE products terminated.
#> [2023-11-09 22:27:44] Starting to download the required level-1C SAFE
#> products.
#> No L1C images are needed.
#> [2023-11-09 22:27:44] Download of level-1C SAFE products terminated.
#> [2023-11-09 22:27:44] Updating output names...
#> [2023-11-09 22:27:44] Starting to translate SAFE products in custom
#> format.
#> Using UTM zone 32N.
#> 2 output files were correctly created.
#> [2023-11-09 22:27:45] Starting to merge tiles by orbit.
#> [2023-11-09 22:27:45] Starting to edit geometry (clip, reproject,
#> rescale).
#> [2023-11-09 22:27:45] Producing required RGB images.
#> [2023-11-09 22:27:45] Generating image
#> S2B2A_20200801_022_sen2r_RGB432B_10.tif...
#> [2023-11-09 22:27:46] Generating image
#> S2B2A_20200801_022_sen2r_RGB843B_10.tif...
#> 2 output RGB files were correctly created.
#> [2023-11-09 22:27:49] Computing required spectral indices.
#> [2023-11-09 22:27:49] Computing index MSAVI2 on date 2020-08-01...
#> [2023-11-09 22:27:50] Computing index NDVI on date 2020-08-01...
#> [2023-11-09 22:27:51] Generating thumbnails.
#> 6 output files were correctly created.
#> ╔══════════════════════════════════════════════════════════════════════
#> ║ sen2r Processing Report
#> ╟──────────────────────────────────────────────────────────────────────
#> ║ Dates to be processed based on processing parameters: 1
#> ║ Processing completed for: all expected dates.
#> ╚══════════════════════════════════════════════════════════════════════
#> [2023-11-09 22:27:53] #### sen2r session terminated. ####
#> The processing chain can be re-launched with the command:
#> sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20231109_222728.json")
#> Spherical geometry (s2) switched on
# Notice that passing the path of a JSON file results in launching
# a session without opening the gui, unless gui = TRUE is passed.
# Launch a processing using function arguments
safe_dir <- file.path(dirname(attr(load_binpaths(), "path")), "safe")
out_dir_3 <- tempfile(pattern = "Barbellino_")
if (is_gcloud_configured()) {
out_paths_3 <- sen2r(
gui = FALSE,
server = "gcloud",
step_atmcorr = "l2a",
extent = system.file("extdata/vector/barbellino.geojson", package = "sen2r"),
extent_name = "Barbellino",
timewindow = as.Date("2020-08-01"),
list_prods = c("TOA","BOA","SCL","OAA"),
list_indices = c("NDVI","MSAVI2"),
list_rgb = c("RGB432T", "RGB432B", "RGB843B"),
mask_type = "cloud_medium_proba",
max_mask = 80,
path_l1c = safe_dir,
path_l2a = safe_dir,
path_out = out_dir_3
)
} else {
out_paths_3 <- character(0)
}
#> [2023-11-09 22:27:54] #### Starting sen2r execution. ####
#> Spherical geometry (s2) switched off
#> [2023-11-09 22:27:55] Searching for available SAFE products...
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> [2023-11-09 22:27:55] Querying Google Cloud (this can take a very long
#> time)...
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> old-style crs object detected; please recreate object with a recent sf::st_crs()
#> [2023-11-09 22:28:06] Querying Google Cloud (this can take a very long
#> time)...
#> [2023-11-09 22:28:14] Computing output names...
#> [2023-11-09 22:28:16] Starting to download the required level-2A SAFE
#> products.
#> Images
#> S2B_MSIL2A_20200801T100559_N0214_R022_T32TNS_20200801T135302.SAFE are
#> already on your system and will be skipped. Set "overwrite_safe" to
#> TRUE to re-download them.
#> No L2A images are needed.
#> [2023-11-09 22:28:16] Download of level-2A SAFE products terminated.
#> [2023-11-09 22:28:16] Starting to download the required level-1C SAFE
#> products.
#> [2023-11-09 22:28:16] Check if products are available for download...
#> [2023-11-09 22:28:16] Downloading Sentinel-2 image 1 of 1
#> (S2B_MSIL1C_20200801T100559_N0209_R022_T32TNS_20200801T130136.SAFE)...
#> [2023-11-09 22:28:19] Download of level-1C SAFE products terminated.
#> [2023-11-09 22:28:19] Updating output names...
#> [2023-11-09 22:28:20] Starting to translate SAFE products in custom
#> format.
#> Using UTM zone 32N.
#> 1 output files were correctly created.
#> Using UTM zone 32N.
#> 1 output angle files were correctly created.
#> 3 output files were correctly created.
#> [2023-11-09 22:28:21] Starting to merge tiles by orbit.
#> [2023-11-09 22:28:21] Starting to edit geometry (clip, reproject,
#> rescale).
#> [2023-11-09 22:28:21] Starting to apply cloud masks.
#> [2023-11-09 22:28:21] Masking file
#> S2B1C_20200801_022_Barbellino_TOA_10.tif...
#> [2023-11-09 22:28:28] Masking file
#> S2B2A_20200801_022_Barbellino_BOA_10.tif...
#> [2023-11-09 22:28:35] Producing required RGB images.
#> [2023-11-09 22:28:35] Generating image
#> S2B1C_20200801_022_Barbellino_RGB432T_10.tif...
#> 1 output RGB files were correctly created.
#> [2023-11-09 22:28:36] Generating image
#> S2B2A_20200801_022_Barbellino_RGB432B_10.tif...
#> [2023-11-09 22:28:37] Generating image
#> S2B2A_20200801_022_Barbellino_RGB843B_10.tif...
#> 2 output RGB files were correctly created.
#> [2023-11-09 22:28:40] Computing required spectral indices.
#> [2023-11-09 22:28:40] Computing index NDVI on date 2020-08-01...
#> [2023-11-09 22:28:40] Computing index MSAVI2 on date 2020-08-01...
#> [2023-11-09 22:28:40] Generating thumbnails.
#> 9 output files were correctly created.
#> ╔══════════════════════════════════════════════════════════════════════
#> ║ sen2r Processing Report
#> ╟──────────────────────────────────────────────────────────────────────
#> ║ Dates to be processed based on processing parameters: 1
#> ║ Processing completed for: all expected dates.
#> ╚══════════════════════════════════════════════════════════════════════
#> [2023-11-09 22:28:44] #### sen2r session terminated. ####
#> The processing chain can be re-launched with the command:
#> sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20231109_222754.json")
#> Spherical geometry (s2) switched on
if (is_gcloud_configured()) {
# Show outputs (loading thumbnails)
# Generate thumbnails names
thumb_3 <- file.path(dirname(out_paths_3), "thumbnails", gsub("tif$", "jpg", basename(out_paths_3)))
thumb_3[grep("SCL", thumb_3)] <-
gsub("jpg$", "png", thumb_3[grep("SCL", thumb_3)])
oldpar <- par(mfrow = c(1,2), mar = rep(0,4))
image(stars::read_stars(thumb_3[grep("BOA", thumb_3)]), rgb = 1:3, useRaster = TRUE)
image(stars::read_stars(thumb_3[grep("SCL", thumb_3)]), rgb = 1:3, useRaster = TRUE)
par(mfrow = c(1,2), mar = rep(0,4))
image(stars::read_stars(thumb_3[grep("MSAVI2", thumb_3)]), rgb = 1:3, useRaster = TRUE)
image(stars::read_stars(thumb_3[grep("NDVI", thumb_3)]), rgb = 1:3, useRaster = TRUE)
par(mfrow = c(1,2), mar = rep(0,4))
image(stars::read_stars(thumb_3[grep("RGB432B", thumb_3)]), rgb = 1:3, useRaster = TRUE)
image(stars::read_stars(thumb_3[grep("RGB843B", thumb_3)]), rgb = 1:3, useRaster = TRUE)
par(oldpar)
}
# }
if (FALSE) {
# Launch a processing based on a JSON file, but changing some parameters
# (e.g., the same processing on a different extent)
out_dir_4 <- tempfile(pattern = "Scalve_")
out_paths_4 <- sen2r(
param_list = json_path,
extent = system.file("extdata/vector/scalve.kml", package = "sen2r"),
extent_name = "Scalve",
path_out = out_dir_4
)
}