Normlim data flow

Two data flows are possibles:

  • with S1LIAMap only LIA maps are produced,

  • with S1Processor LIA maps are produced if not found, then \(σ^0_{RTC}\) NORMLIM orthorectified files are produced.

NormLim global processing

The following processing is the new default precessing from S1Tiling v1.1.

S1 Tiling processes by looping on all required S2 tiles within the time range.

For each S2 tile,

  1. It downloads a single S1 image: the one with the best footprint coverage of S2 tile, and that is within the specified time range. The download is done on condition the image is not already available in input data cache (Pure LIA producing scenarios)

  2. Then, it makes sure the associated sine LIA map exists (all scenarios),

    1. It selects the first input S1 image that contains orbit information wide enough to cover the full S2 tile. In case case several S1 images match, the one with the best footprint coverage is used.

    2. It prepares a VRT of the DEM files that cover the S2 image.

    3. It projects DEM information (from the VRT) on the S2 geometry.

    4. It project GEOID information on the S2 geometry.

    5. It sums both elevation information on the S2 geometry.

    6. It produces a image of ECEF coordinates for the ground points and their associated satellite positions in the S2 geometry

    7. It computes the normal of each ground point,

    8. It computes the sine LIA map of each ground point,

  3. Then, for each polarisation (S1Processor scenario only),

    1. It calibrates with β° LUT, cuts and orthorectifies all the S1 images onto the S2 grid,

    2. It superposes (concatenates) the orthorectified images into a single S2 tile,

    3. It multiplies the β° orthorectified image with the sine LIA map.

As with the main dataflow for all other calibrations (β°, γ°, or σ°), these tasks are done in parallel in respect of all the dependencies.

LIA specific processings

Complete task flow for processing 33NWC and 33NWB with NORMLIM calibration

Tasks for processing 33NWC and 33NWB with NORMLIM calibration – v1.1 workflow

Agglomerate DEM files in a VRT that covers S2 footprint

Inputs:

All DEM files that intersect the target S2 tile

Output:

A VRT file

Function:

osgeo.gdal.BuildVRT()

StepFactory:

s1tiling.libs.otbwrappers.AgglomerateDEMOnS2

All DEM files that intersect the target S2 tile are agglomerated in a VRT file.

Project DEM on S2 tile

Inputs:

The DEM VRT file over the S2 tile

Output:

The DEM projected on S2 tile

OTBApplication:

gdalwarp

StepFactory:

s1tiling.libs.otbwrappers.ProjectDEMToS2Tile

This step projects the DEM VRT file on the S2 geometry.

Project GEOID on S2 tile

Inputs:
Output:

None: chained in memory with Height computation

OTBApplication:

OTB Superimpose

StepFactory:

s1tiling.libs.otbwrappers.ProjectGeoidToS2Tile

This step projects the DEM VRT file on the S2 geometry.

Compute full height elevation on S2

Inputs:
Output:

The Height projected on S2 tile

OTBApplication:

OTB BandMath

StepFactory:

s1tiling.libs.otbwrappers.SumAllHeights

This step sums both DEM and GEOID information projected in S2 tile geometry.

Compute ECEF ground and satellite positions on S2

Inputs:
Output:

ECEF Ground and satellite positions on the S2 tile.

OTBApplication:

DiapOTB SARDEMProjection

StepFactory:

s1tiling.libs.otbwrappers.ComputeGroundAndSatPositionsOnDEM

This steps computes the ground positions of the pixels in the S2 geometry, and searches their associated zero dopplers to also issue the coordinates of the SAR sensor.

All coordinates are stored in ECEF.

Normals computation

Input:

A XYZ Cartesian coordinates file

Output:

None: chained in memory with LIA maps computation

OTBApplication:

ExtractNormalVector OTB application (developed for the purpose of this project)

Note

Beware, this OTB application isn’t distributed with OTB yet. It has to be installed specifically on your machine. It will be already installed in the docker images though.

StepFactory:

s1tiling.libs.otbwrappers.ComputeNormalsOnS2 (or s1tiling.libs.otbwrappers.ComputeNormalsOnS1 in the deprecated workflow)

This step computes the normal vectors to the ground, in the original input S1 image geometry.

LIA maps computation

Input:
Output:

Local Incidence Angle map, and sine LIA map (or the equivalent in the deprecated workflow)

OTBApplication:

SARComputeLocalIncidenceAngle OTB application (developed for the purpose of this project)

Note

Beware, this OTB application isn’t distributed with OTB yet. It has to be installed specifically on your machine. It will be already installed in the docker images though.

StepFactory:

s1tiling.libs.otbwrappers.ComputeLIAOnS2 (or s1tiling.libs.otbwrappers.ComputeLIAOnS1 in the deprecated workflow)

It computes the Local Incidence Angle map, and sine LIA map between the between the ground normal projected in range plane \(\overrightarrow{n}\) (plane defined by S, T, and Earth’s center) and \(\overrightarrow{TS}\) – where T is the target point on Earth’s surface, and S the SAR sensor position.

Application of LIA maps to β° calibrated S2 images

Inputs:
  • The sine LIA map file associated to the S2 grid

  • A β° calibrated, cut and orthorectified image on the S2 grid

Output:

final S2 tiles, \(σ^0_{RTC}\) calibrated

OTBApplication:

BandMath

StepFactory:

s1tiling.libs.otbwrappers.ApplyLIACalibration

This final step multiplies the sine LIA map (in S2 grid geometry) with β0 calibrated files orthorectified on the S2 grid.

NormLim deprecated global processing

The following processing was the one supported in v1.0 of S1Tiling.

S1 Tiling processes by looping on all required S2 tiles within the time range.

For each S2 tile,

  1. It downloads the necessary S1 images that intersect the S2 tile, within the specified time range, that are not already available in input data cache (all scenarios)

  2. Then, it makes sure the associated sine LIA map exists (all scenarios),

    1. It selects a pair of input S1 images that intersect the S2 tile,

    2. For each input S1 image

      1. It prepares a VRT of the DEM files that cover the image,

      2. It projects the coordinates of the input S1 image onto the geometry of the VRT,

      3. It projects back the cartesian coordinates of each ground point in the origin S1 image geometry,

      4. It computes the normal of each ground point,

      5. It computes the sine LIA map of each ground point,

      6. It orthorectifies the sine LIA map to the S2 tile

    3. It concatenates both files into a single sine LIA map for the S2 tile.

  3. Then, for each polarisation (S1Processor scenario only),

    1. It calibrates with β° LUT, cuts and orthorectifies all the S1 images onto the S2 grid,

    2. It superposes (concatenates) the orthorectified images into a single S2 tile,

    3. It multiplies the β° orthorectified image with the sine LIA map.

As with the main dataflow for all other calibrations (β°, γ°, or σ°), these tasks are done in parallel in respect of all the dependencies.

LIA specific deprecated processings

Complete task flow for processing 33NWC and 33NWB with NORMLIM calibration

Tasks for processing 33NWC and 33NWB with NORMLIM calibration – v1.0 deprecated workflow

Agglomerate DEM files in a VRT that covers S1 footprint

Inputs:

All DEM files that intersect an original input S1 image

Output:

A VRT file

Function:

osgeo.gdal.BuildVRT()

StepFactory:

s1tiling.libs.otbwrappers.AgglomerateDEMOnS1

All DEM files that intersect an original input S1 image are agglomerated in a VRT file.

Project SAR coordinates onto DEM

Inputs:
Output:

A SAR DEM projected file

OTBApplication:

DiapOTB SARDEMProjection

StepFactory:

s1tiling.libs.otbwrappers.SARDEMProjection

This step projects the coordinates of original input S1 image in the geometry of the DEM VRT file.

Project XYZ coordinates onto SAR

Inputs:
Output:

A XYZ Cartesian coordinates file

OTBApplication:

Our patched version of DiapOTB SARCartesianMeanEstimation

StepFactory:

s1tiling.libs.otbwrappers.SARCartesianMeanEstimation

This step estimates the XYZ Cartesian coordinates on the ground in the geometry of the original input S1 image.

Orthorectification of LIA maps

Inputs:

A Sine Local Incidence Angle map, and an optional degrees LIA map in the original S1 image geometry

Output:

The associated LIA map file(s) orthorectified on the target S2 tile.

OTBApplication:

Orthorectification

StepFactory:

s1tiling.libs.otbwrappers.OrthoRectifyLIA

This steps ortho-rectifies the LIA map image(s) in S1 geometry to S2 grid.

It uses the following parameters from the request configuration file:

Concatenation of LIA maps

Inputs:

A pair of LIA map files (sines or degrees) orthorectified on the target S2 tile.

Output:

The LIA map file(s) associated to the S2 grid

OTBApplication:

Synthetize

StepFactory:

s1tiling.libs.otbwrappers.ConcatLIA

This step merges all the images of the orthorectified S1 LIA maps on a given S2 grid. As all orthorectified images are almost exclusive, they are concatenated by taking the first non null pixel.

LIA specific data caches

As with main dataflow, two kinds of data are cached, but only one is regularly cleaned-up by S1 Tiling. The other kind is left along as the software cannot really tell whether they could be reused later on or not.

Important

This means that you may have to regularly clean up this space.