Skip to content

Tools \ S1Tiling

S1Tiling
Tool's logo

An open-source project for on demand Ortho-rectification of Sentinel-1 data on Sentinel-2 grid.

Source code

Maturity : Maintained | Categories : Preprocessing, Processing Chains (pipelines) | License : | Producer : CNES


Overview

Sentinel-1 is currently the only system to provide SAR images regularly on all lands on the planet. Access to these time series of images opens an extraordinary range of applications. In order to meet the needs of a large number of users, including our needs, we have created an automatic processing chain to generate “Analysis Ready” time series for a very large number of applications.

With S1Tiling, Sentinel-1 data is ortho-rectified on the Sentinel-2 grid to promote joint use of both missions.

Consecutive S1 images --> σ° calibrated and concatenated orthorectified product over S2 tile (zoomed)
image image

S1Tiling was developed within the CNES radar service, in collaboration with CESBIO, to generate time series of calibrated, ortho-rectified and filtered Sentinel-1 images on any lands on the Earth. The tool benefits for the SAR ortho-rectification application from the Orfeo Tool Box.

The resulting images are registered to Sentinel-2 L2 optical images, using the same MGRS geographic reference grid (S2 tiling system - kml file). This Python software, is based on the Orfeo Tool Box (OTB) image processing library, developed by CNES. Different Sentinel-1 data providers can be used like PEPS or Copernicus Scihub. It can be used on any type of platform, from a large computing cluster to a laptop (the fan will make some noise during processing). It is considerably faster than the ortho-rectification tool in SNAP, and can be easily used in script form.

S1Tiling is currently used for many applications, such deforestation detection in the Amazon, monitoring of rice crops in Southeast Asia or monitoring of water stocks in India. In addition, this software is accessible as an on-demand processing service on the French PEPS collaborative ground segment, in order to make it easier for users to use.

Usage example

Typical usage on TREX

S1Tiling is already installed on TREX and available through s1tiling module.

The most efficient way to use S1Tiling would be to process simultaneously a set of contiguous MGRS tiles that span over a short period of time. This grouping could be done with job arrays.

The following is an excerpt of the documentation dedicated to the execution on TREX

SLURM job

The core SLURM job would look like to the following

#!/bin/bash
#SBATCH --account=...
#SBATCH --partition=cpu2022   # jobs < 72h
#SBATCH --qos=...
#SBATCH -N 1                  # number of nodes (or --nodes=1)
#SBATCH -n 1                  # number of tasks (or --ntasks=1)
#SBATCH --cpus-per-task=20    # number of cpus par task
#SBATCH --mem=160G            # memory per core
#SBATCH --time=00:59:00       # Wall Time 59mn
#SBATCH -J job-s1tiling

# The number of allocated CPUs
NCPUS=${SLURM_CPUS_PER_TASK}
# Let's use 2 threads in each OTB application pipeline
export NB_OTB_THREADS=2
# Let's deduce the number of OTB application pipelines to run in parallel
export NB_OTB_PIPELINES=$(($NCPUS / $NB_OTB_THREADS))
# These two variables have been exported to be automatically used from the
# S1tiling request file.

# Let's use an existing S1Tiling module
ml s1tiling/1.1.0rc1-otb9.0.0

# Expecting S1Processor.cfg in ${SLURM_SUBMIT_DIR}, the logs will be
# produced in a subdirectory named after the the JOB ID.
WORK_DIR="${SLURM_SUBMIT_DIR}/${SLURM_JOB_ID}"
mkdir -p "${WORK_DIR}"
cd "${WORK_DIR}"
S1Processor --cache-before-ortho ../S1Processor.cfg || {
    code=$?
    echo "Echec de l'exécution de programme" >&2
    exit ${code}
}

Execution configuration file

The associated configuration file would contain

[PATHS]
tmp : %(TMPDIR)s/s1tiling
dem_dir : /work/datalake/static_aux/MNT/SRTM_30_hgt
...

[Processing]
cache_dem_by: copy
# Let's use the exported environment variables thanks to "%()s" syntax
nb_parallel_processes: %(NB_OTB_PIPELINES)s
nb_otb_threads: %(NB_OTB_THREADS)s
ram_per_process: 4096
...

Plus the other parameters where you decide the calibration to apply, whether the products shall be despeckled, etc. See the full option list for more information

[DataSource]
# See https://eodag.readthedocs.io/en/latest/intro.html#how-to-configure-authentication-for-available-providers
# eodagConfig : %(HOME)s/.config/eodag/eodag.yml

# Download S1 products (or use local products on disk)
download : True

# Tiles to be processed
tiles : 33NVB, 33NWB

# Time range
first_date : 2020-01-01
last_date : 2020-01-10

[Processing]
# Define the type of calibration: gamma, sigma, beta, or normlim
 calibration: sigma

# Remove thermal noise
remove_thermal_noise: True
# Pixel Size (in meters) of the output images
output_spatial_resolution : 10.

# Grid spacing for the interpolator in the orthorectification process
# for more information, please consult the OTB orthorectification application
# A nice value is 4x output_spatial_resolution
orthorectification_gridspacing : 40

# Interpolation method used in the orthorectification process
# for more information, please consult the OTB orthorectification application
orthorectification_interpolation_method : nn

# Threshold on the image level to be considered as zeros
border_threshold : 0.

[Filtering]
# Speckle filtering method: none/Lee/Frost/Gammamap/Kuan
filter : Lee

# Set the window radius for the spatial filtering
# Take note that it is a radius, i.e. radius=1 means the filter does an 3x3 pixels averaging.
window_radius : 2

# Deramp factor, for Frost filter only
deramp : 0.1

# Number of looks, for all but Frost => Lee, Gammamap and Kuan
nblooks: 1.0

Resources

Tutorials

There is no available tutorial for this tool.

Contacts