sen2r is an R library which helps to download and preprocess Sentinel-2 optical images. The purpose of the functions contained in the library is to provide the instruments required to easily perform (and eventually automate) all the steps necessary to build a complete Sentinel-2 processing chain, without the need of any manual intervention nor the needing to manually integrate any external tool.

In particular, sen2r allows to:

  • retrieve the list of available products on a selected area (which can be provided by specifying a bounding box, by loading a vector file or by drawing it on a map) in a given time window;
  • download the required SAFE Level-1C products, or retrieve the required SAFE Level-2A products by downloading them (if available) or downloading the corresponding Level-1C and correcting them with Sen2Cor;
  • obtain the required products (Top of Atmosphere radiances, Bottom of Atmosphere reflectances, Surface Classification Maps, True Colour Images) clipped on the specified area (adjacent tiles belonging to the same frame are merged);
  • mask cloudy pixels (using the Surface Classification Map as masking layer);
  • computing spectral indices and RGB images.

Important: since November 2023, Sentinel-2 SAFE archives can be searched and retrieved only from Google Cloud Sentinel-2 bucket; to use it, Google Cloud SDK must be installed and configured following the official instructions. Refer to this post for details about how to install configure the required external dependency Google Cloud SDK. Notice that this mode is not optimal (a modern STAC API approach should be used), and searching products could be a very slow process. Nevertheless, the replacement of the old official data source (ESA Hub) with the new Copernicus Data Space is not planned (this package is no longer actively maintained due to a career change of the developer). Anyone who wants to help can contribute).

Setting the execution of this processing chain is particularly easy using the sen2r GUI, which allows to set the parameters, to directly launch the main function or to save them in a JSON file which can be used to launch the processing at a later stage.

The possibility to launch the processing with a set of parameters saved in a JSON file (or directly passed as function arguments) makes easy to build scripts to automatically update an archive of Sentinel-2 products. Specific processing operations (i.e. applying Sen2Cor on Level-1c SAFE products, merging adjacent tiles, computing spectral indices from existing products) can also be performed using intermediate functions (see usage).

sen2r was published on the ISI journal Computers & Geosciences; the manuscript is available here:

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 .

Users which processed Sentinel-2 data and used them for a scientific work are strongly encouraged to cite this publication within their work (see Credits).

Installation

The package can be installed from CRAN:

install.packages("sen2r", dependencies = TRUE)

For detailed instructions about installing the package (including dependencies), see the Installation page.

A dockerised version of sen2r is available here. For detailed instructions about using it, see the page “Run in a Docker container”.

Usage

The simplest way to use sen2r is to execute it in interactive mode (see this vignette):


Alternatively, sen2r() can be launched with a list of parameters (created with s2_gui()) or passing manually the parameters as arguments of the function (see this vignette for further details).

Other specific functions can be used to run single steps separately. This is a list of the principal processing functions (the complete list can be found in the Reference page):

  • s2_list() to retrieve the list of available Sentinel-2 products based on input parameters;
  • s2_download() to download Sentinel-2 products;
  • s2_order() to order products from the Long Term Archive;
  • sen2cor() to correct level-1C products using Sen2Cor;
  • s2_mask() to apply a cloud mask to Sentinel-2 products;
  • s2_rgb() to generate RGB images from Sentinel-2 Surface Reflectance multiband raster files;
  • s2_calcindices() to compute maps of spectral indices from Sentinel-2 Surface Reflectance multiband raster files.

Output products follow a specific naming convention (see here for details).

Credits

sen2r is being developed by Luigi Ranghetti and Lorenzo Busetto (IREA-CNR), and it is released under the GNU General Public License version 3 (GPL‑3).

The sen2r logo, partially derived from the R logo, is released under the Creative Commons Attribution-ShareAlike 4.0 International license (CC-BY-SA 4.0).

To cite this library, please use the following entry:

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.

@Article{sen2r_cageo,
  title   = {sen2r: An R toolbox for automatically downloading and preprocessing Sentinel-2 satellite data},
  author  = {Luigi Ranghetti and Mirco Boschetti and Francesco Nutini and Lorenzo Busetto},
  journal = {Computers & Geosciences},
  year    = {2020},
  volume  = {139},
  pages   = {104473},
  doi     = {10.1016/j.cageo.2020.104473},
  url     = {https://sen2r.ranghetti.info/},
}

Contributing

This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Users are encouraged to use GitHub issues in case of errors with the package. Before opening a new issue, please read these notes.