Skip to content

Repository files navigation

JMART (Joint Multi-Altimetry Radar processing Toolkit)

Description

JMART is a altimeter data processor toolkit written in Python 3 (3.9.6). It implements in particular the fully-focused SAR (FF-SAR) processing to process Sentinel-3/Sentinel-6 L1a products.

Input

  1. Sentinel-3/Sentinel-6 L1A netCDF4 products for reading pulse signals.
  2. Sentinel-3/Sentinel-6 L2 netCDF4 products for geophysical corrections.
  3. configuration file.

Input Data Downloading

  1. Sentinel-3 L1A/L2 altimetry data from Copernicus (https://dataspace.copernicus.eu/). The data can be obtained via the copernicus api, see https://documentation.dataspace.copernicus.eu/APIs/SentinelHub.html on how to use it.

  2. Sentinel-6 L1A/L2 altimetry data from EUMETSAT (https://data.eumetsat.int/). The data can be obtained via the EUMETSAT Data Access Client (EUMDAC) client, see https://user.eumetsat.int/resources/user-guides/eumetsat-data-access-client-eumdac-guide on how to set it up.

Output

  1. L1b and L2 auto-descriptive netCDF4 files,
  2. Command files to launch l1b and l2 processing,
  3. log files for l1b and l2 processing.
  4. slurm files if use HPC

Prerequisites

  • Users are required to install a distribution of Python, such as miniconda and create an environment including Python 3.9.6.

  • Once the installation of miniconda is completed, create a specific environment (e.g. named "jmart"):

	conda create -n jmart python=3.9.6
  • The environment shall then be activated with:
	conda activate jmart
  • In the activated environment, please install the following python packages :

On Linux:

  pip install numpy==1.21.3
  pip install scipy==1.7.1
  pip install netcdf4==1.5.7
  pip install pyproj==3.3.0
  pip install pyshp==2.1.3
  pip install tqdm==4.62.3
  pip install numexpr==2.7.3
  pip install matplotlib==3.4.3

on HPC (example in JSC):

  module --force purge

  module load Stages/2023
  module load StdEnv/2023

  module load SciPy-bundle
  module load netcdf4-python
  module load pyproj
  module load Cartopy 
  module load tqdm
  • Once the environment is created, we suggested to put the bash script for calling the environment into file loadenv.

Get starting

To process sequentially all L1a products of a specific folder with JMART, point the directory of the processor and do:

    python launch_jmart_processor.py -c config/test.cfg

Specific options

  • -c : to specify the path to the configuration file, as an example:
python launch_jmart_processor.py -c config/config.cfg

will launch all the L1a files of input directory indicated in the configuration file (input_dir)

  • -slurm : creates a slurm job in slurm using srun to control jobs
python launch_jmart_processor.py -c config/config.cfg -slurm
  • -dryrun : creates bash command files only, as an example:
python launch_jmart_processor.py -c config/config.cfg -dryrun

will create the bash command file(s) without launching them.

  • -ncpu : numer of cpus per task been used, mainly for l2 processing, as an example:
python launch_jmart_processor.py -c config/config.cfg -ncpu 8
  • -a : account for job in HPC

  • -p : partition for job in HPC

  • -t : walltime for job in HPC, HH:MM:SS

  • -TMPDIR : TMPDIR for job running first in HPC, if not given, using default ./data/temp/

As a complete example running in HPC for submiting the slurm automatically:

python launch_jmart_processor.py -c config/config.cfg -ncpu 8 -a myproject -p batch -t 04:00:00 -TMPDIR ./data/temp/ -slurm

References

  • Joint Multi-Altimeter Reprocessing Toolkits (JMART/v1.0)
  • Sentinel-3/Sentinel-6 Product L2
  • IPF-SR-1 07.07 Processing Guide

Contact Information

FFSAR Level 1B Non-Time Critical Product Description

Product Overview

This document describes the Sentinel-3A/-3B SRAL (Synthetic Aperture Radar Altimeter) Level 1B Non-Time Critical (NT) product. The product filename is based on S3A_SR_1_BFF_BS_*.nc.

Basic Information

  • Mission: Sentinel-3A/-3B
  • Sensors:
    • Primary: SRAL (Synthetic Aperture Radar Altimeter)
    • Secondary: GNSS, DORIS
  • Product Type: Altimeter L1B Non Time Critical
  • Processing Institution: Uni-Bonn IGG|APMG
  • Processing Software: IPF-SR-1 07.07
  • Reference Ellipsoid: WGS84
  • Semi-major Axis: 6378137.0 m
  • Ellipsoid Flattening: 0.00335281066474748

Temporal Information

  • First Measurement Time: start time of the satellite measurement
  • Last Measurement Time: stop time of the satellite measurement
  • Time Reference: Seconds since 2000-01-01 00:00:00 (UTC)

Product Characteristics

  • Posting Rate: 80 Hz
  • Range Extension Factor: 1
  • Zero-padding Factor (zp): 2
  • Hamming Window:
    • Azimuth: Applied
    • Range: Not applied
  • Number of Burst Blocks: 180
  • Surface Types:
    • 0: Open ocean or semi-enclosed seas
    • 1: Enclosed seas or lakes
    • 2: Continental ice
    • 3: Land

Data Groups

1. Main Data Group (/data/ku)

Contains multi-looked waveforms and associated parameters:

Key Variables:
  • time: UTC time of measurement (seconds since 2000-01-01)
  • latitude, longitude: Satellite position (degrees)
  • altitude: Satellite height above ellipsoid (meters)
  • power_waveform: Oversampled power waveforms (128 samples × 256 oversampled)
  • msc: Magnitude Squared Coherence of single-looks (0-1)
  • doppler_freqs: Doppler frequencies for each look (Hz)
  • thermal_noise: Estimated thermal noise level (dB)
  • surface_classification_flag: Surface type classification
  • tracker_range_calibrated: 1-way range from satellite to surface (m)

2. Single-Look Complex Data Group (/data_sl/ku)

Contains single-look complex (SLC) data:

Key Variables:
  • i_slc, q_slc: In-phase and quadrature components of SLC waveforms
  • iq_scale_factor: Scaling factor to convert I/Q samples to voltage
  • time: UTC time of SLC measurements

Variable Details

Platform Parameters

Variable Description Units
altitude Satellite height above reference ellipsoid meters
latitude/longitude Satellite position degrees
position_vector Satellite position in ITRF (x,y,z) meters
velocity_vector Satellite velocity in ITRF (x,y,z) m/s
off_nadir_[pitch/roll/yaw]_angle_pf Platform pointing angles degrees

Waveform Parameters

Variable Description Units
power_waveform Calibrated multi-looked power waveform counts
i_slc/q_slc Single-look complex components counts
iq_scale_factor I/Q scaling factor volts
pulse_repetition_interval Time between pulses seconds
sig0_scaling_factor Scaling for sigma0 calculation dB
rcs_scaling_factor Scaling for RCS calculation dBsm

Geophysical Parameters

Variable Description Units
tracker_range_calibrated 1-way range to surface meters
radial_velocity Platform velocity toward surface m/s
separation_between_waveform Along-track waveform spacing meters

Processing Notes

  1. Waveform Scaling: Power waveforms are scaled to fit 2-byte integers
  2. Time Reference: All times are referenced to UTC with TAI-UTC difference of 37s
  3. Coordinate System: ITRF for position/velocity, WGS84 for geodetic coordinates
  4. Surface Classification: Based on MODIS and GlobCover data

Power Waveform from counts to watt

The real waveform in watt can be derived from the power_waveform and sig0_scaling_factor using the following formula:

Conversion Formula

$$ P_{\mathrm{waveform}} = \mathrm{power_waveform} \times 10^{\frac{\mathrm{sig0_scaling_factor}}{10}} $$


FFSAR Level 2 Non-Time Critical Product Documentation

Product Identification

  • Filename: S3A_SR_2_BFF_HY_*.nc
  • Mission: Sentinel-3A/-3B
  • Sensor: SRAL (Synthetic Aperture Radar Altimeter)
  • Processing Level: L2 (Non-Time Critical)
  • Institution: Uni-Bonn IGG|APMG

Temporal Coverage

  • Start Time: start time of the satellite measurement
  • End Time: stop time of the satellite measurement
  • Time Reference: Seconds since 2000-01-01 00:00:00 UTC

Spatial Coverage

  • Latitude Range: latitude processing range
  • Longitude Range: longitude processing range
  • Reference Ellipsoid: WGS84
    • Semi-major axis: 6,378,137.0 m
    • Flattening: 0.00335281066474748

Processing Information

  • Software Version: IPF-SR-1 07.07
  • Retracking Algorithms:
    • OCOG_SAR (Offset Center of Gravity)
    • PTR (Point Target response)
    • SAM+ (SAMOSA+ model)
  • OCOG Threshold: 0.8
  • Posting Rate: 80 Hz
  • Range Extension Factor: 1
  • Zero-padding Factor: 2

Data Groups

1. Main Data Group (/data/ku)

Contains geophysical parameters derived from retracking algorithms:

Geophysical Parameters
Variable Description Units Scale Factor
altitude Satellite height above ellipsoid m 0.0001
latitude/longitude Satellite position degrees 1e-06
sig0_scaling_factor Sigma0 scaling factor dB 1e-06
rcs_scaling_factor Radar cross-section scaling dBsm 1e-06
tracker_range_calibrated 1-way range to surface m 0.0001
Retracker Outputs

OCOG Retracker:

  • range_ocog: Corrected range (m)
  • sig0_ocog: Backscatter coefficient (dB)
  • amplitude_ocog: Waveform amplitude
  • epoch_ocog: Retracking epoch (s)

PTR Retracker:

  • range_ptr: Corrected range (m)
  • sig0_ptr: Backscatter coefficient (dB)
  • amplitude_ptr: Waveform amplitude
  • epoch_ptr: Retracking epoch (s)
  • misfit_ptr: Model misfit error

SAM+ Retracker:

  • range_samp: Corrected range (m)
  • sig0_samp: Backscatter coefficient (dB)
  • swh_samp: Significant wave height (m)
  • amplitude_samp: Waveform amplitude
  • epoch_samp: Retracking epoch (s)
  • misfit_samp: Model misfit error

2. Geophysical Data Group (/data_01)

Contains environmental corrections and auxiliary data:

Altimeter Corrections
Correction Description Units Scale Factor
iono_cor_gim Ionospheric (GIM) m 0.0001
iono_cor_alt Ionospheric (altimeter) m 0.0001
model_wet_tropo_cor_zero_altitude Wet tropospheric (model) m 0.0001
model_dry_tropo_cor_zero_altitude Dry tropospheric (model) m 0.0001
sea_state_bias Sea state bias m 0.0001
dac Dynamic atmospheric correction m 0.0001
Tide Models
  • Ocean Tides:
    • ocean_tide_sol1 Solution 1 (GOT4.10)
    • ocean_tide_sol2 Solution 2 (FES2014)
    • Includes load tide and equilibrium components
  • Solid Earth Tide: solid_earth_tide using Cartwright and Tayler tables
  • Pole Tide: pole_tide using Desai model
Auxiliary Data
Variable Description Units Scale Factor
geoid Geoid height (EGM2008) m 0.0001
mean_sea_surface MSS height (DTU21) m 0.0001
wind_speed_alt Altimeter wind speed m/s 0.01
rain_flag Precipitation flag - -
distance_to_coast Distance to nearest coast m 100

Quality Flags

  • surface_classification_flag:
    • 0: Open ocean/semi-enclosed seas
    • 1: Enclosed seas/lakes
    • 2: Continental ice
    • 3: Land
  • oceanlike_flag:
    • 1: Open ocean
    • 0: Non-open ocean
  • rain_flag:
    • 0: No rain
    • 1: Rain
    • 2-5: Various probability levels

Usage Notes

  1. Range Corrections: Apply all relevant corrections to obtain sea surface height: $$ \begin{aligned} \text{SSH} &= \text{altitude} - \text{range}_{\text{ocog/ptr/samp}} - \text{Correction} \ \text{Correction} &= \text{Geophysical Correction} + \text{Tide Correction} \ \text{Geophysical Correction} &= \text{iono_cor_gim} + \text{wet_tropo} + \text{dry_tropo} \ \text{Tide Correction} &= \text{solid_earth_tide} + \text{pole_tide} + \text{ocean_tide} + \text{dac} + \text{sea_state_bias} \end{aligned} $$
  2. Sigma0 Calculation: Backscatter coefficients are already fully calibrated

$$ \sigma^{0} = \mathrm{sig0}_{\mathrm{ocog/ptr/samp}} + \mathrm{sig0_scaling_factor} $$

  1. Retracker Selection: SAM+ is recommended. oceanlike_flag can be used for selecting the good waveform from Ocean.

About

JMART is a altimeter data processor toolkit written in Python 3 (3.9.6). It implements in particular the fully-focused SAR (FF-SAR) processing to process Sentinel-3/Sentinel-6 L1a products.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages