Skip to content

sen2vm/sen2vm-core

Repository files navigation

README (current file)

Project Sen2VM (sen2vm-core)

Note

Sen2VM is released under the Apache License, Version 2.0; its licence file can be accessible in LICENSE file.

Its primary function is to create direct location grids, mapping Sentinel-2 Level-1B products in sensor geometry down to the ground geometry (as in L1C). For more details about Sentinel-2 Level-1B format, please refer to Level-1B format description

Additionally, the tool supports the generation of inverse location grids, enabling mapping from a specific ground area back to the corresponding area in sensor geometry.

Please note that Sen2VM exists implemented as a SNAP plugin, which calls the Sen2VM standalone tool during execution.

This documentation is split into 5 parts:

Note

If you want to compile Sen2VM by yourself, please refer to dedicated HOWTO section

Regarding the several git repositories, here is a schema on how they are linked together: Git links

1. Level-1B format description

The Copernicus Sentinel-2 is a European mission that acquires wide-swath, high-resolution, multi-spectral imaging data acquisitions. Due to their worldwide regular acquisitions and accurate geolocation (<5m CE90) , Sentinel-2 satellites offers since several years now a massive quantitative and qualitative resource for the Earth observation community.

A single Sentinel-2 acquisition is generated at multiple levels, with higher levels indicating greater modification or enhancement through scientifical algorithms. Since the beginning of the mission, the only publicly available level was the Level-1C (L1C), which consists of orthorectified images resampled in Top-Of-Atmosphere (TOA) reflectance.

Sentinel-2 L1C products are stored by tiles and one Sentinel-2 acquisition (hereby called Datastrip) cover several L1C tiles. For each acquisition, several L1C tiles are generated, some of which are only partially covered and therefore containg NoData inside. Each tile includes Datastrip metadata (duplicated across all generated L1C tiles), Tile Metadata, and all scientific data (images and masks), all stored within a GRANULE folder.

The previous level, Level-1B (L1B), contains radiance in sensor geometry requiring a high level of expertise, mainly to handle the georeferencing of the product. At L1B (as in L0 and L1A), data is not yet devided in L1C tiles. Instead, data is organised per GRANULE; one granule is an Along-Track portion (including all bands) of one Detector acquisition.

Sentinel-2 Format Intro

Sentinel-2 Format Intro

For more details, please refer to official L1B Documentation and L1B algorithms description.

2. Quickstart

Inputs are split into 2 groups (see Input Description for more details):

  • configuration: all inputs related to product or grids that are required by Sen2VM. Please note that this input is Mandatory.
  • "parallelisation": the detectors/bands to process. If not available, all detectors/bands will be processed.This input is Optional.

Sen2VM jar can be downloaded through Releases or Packages pages on GitHub.

Sen2VM can be called using the following command:

Caution

Sen2VM core depends on java 8 and gdal=3.6.2 with java bindings. Please find below the command line for launching Sen2VM-core

java -jar target/sen2vm-core-<NN.NN.NN>-jar-with-dependencies.jar -c [configuration_filepath] [-p [parameters_filepath]]

Where:

  • <NN.NN.NN> is the version number of Sen2VM launched
  • configuration_filepath: configuration file
  • parameters_filepath: "parallelisation" input

Note

This will only create geolocation grids. Examples of usage can be accessible through §Usage of output grids

Important

As Sen2VM requires specific installation, several tools have been made accessible to help users using Sen2VM:

  • Notebooks, doing generation of grid and examples of usage
  • A Dockerfile that will build a Docker with Sen2VM and all its dependencies installed inside it
  • A build-environment, that can be used to install Sen2VM inside it or use to build Sen2VM from sources. Please refere to HOWTO.

3. Inputs

Inputs required by Sen2VM are:

  • L1B Product (see How to Download L1B Data from CDSE for download instructions),
  • Some GIPP files (parameters files used in operational production),
  • Digital Elevation Model (DEM) (see How to Download DEM Data from CDSE),
  • GEOID model to measure precise surface elevations,
  • IERS bulletin that provides data and standards related to Earth rotation and reference frames,
  • Additional information for configuration.

Note

The orekit-data is required to process the grid. During the first run, the orekit-data is extracted from the JAR file (.jar) and placed in the same directory as the JAR. The orekit-data can be replaced by the user if needed. The official orekit-data is available https://github.com/sen2vm/sen2vm-core/tree/main/orekit-data.

Inputs description can be access at Inputs

4. Outputs

4.1 Output grids of Sen2VM

The output of the Sen2VM tool can be either direct location grids or inverse location grids. Their computation depends on the following parameters:

  • selected detectors and bands,
  • grid step,
  • computation options (e.g. refining).

Please note that only the direct location grids will be included in the input product and handled by gdal. Inverse location grids, as they represent a particulat area on the ground will be exported outside the product, in a folder selected by the user (which can be inside the input product if wanted).

4.2 Usage of output grids

Examples are available:

5. Validation

In a nutshell, validation is split into 2 main parts:

  • Functional tests:

    • Integrated into the CI/CD process,
    • Validate that Sen2VM takes into account the different input provided, and that output grids are consistent with reference ones.
  • Quality tests:

    • Launched manually,
    • Proving, using several TDS, that grids generated by Sen2VM are consistent with the ones generated with the legacy,
    • Proving that those grids can be used to reach equivalent quality at L1C,
    • These processings will also be used to assess the processing performances.

Tests are more detailed in:

  • In /src/test/java/esa/sen2vm/ for functionnal tests,
  • In dedicated Document, for quality tests (which also includes functionnal tests description)

It is to be noted that orthorectification using Sen2VM gave equivalent results than orthorectification of operational L1C products. In image below, no visual shift can be seen (precise mesured in report above; slight differences between L1B radiance and L1C reflectance can be observed: L1B Ortho versus L1C Operationnal Ortho

README (current file)

About

Sen2VM standalone tool that will be also called by Sen2VM SNAP Plugin

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 10