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.
- Sentinel-3/Sentinel-6 L1A netCDF4 products for reading pulse signals.
- Sentinel-3/Sentinel-6 L2 netCDF4 products for geophysical corrections.
- configuration file.
-
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.
-
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.
- L1b and L2 auto-descriptive netCDF4 files,
- Command files to launch l1b and l2 processing,
- log files for l1b and l2 processing.
- slurm files if use HPC
-
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.3on 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.
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-c: to specify the path to the configuration file, as an example:
python launch_jmart_processor.py -c config/config.cfgwill 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 -dryrunwill 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- Joint Multi-Altimeter Reprocessing Toolkits (JMART/v1.0)
- Sentinel-3/Sentinel-6 Product L2
- IPF-SR-1 07.07 Processing Guide
- Author: Jiaming Chen
- Contact: chenjiaming@uni-bonn.de
- Contributor: Luciana Fenoglio
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.
- 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
- 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)
- 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
Contains multi-looked waveforms and associated parameters:
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 classificationtracker_range_calibrated: 1-way range from satellite to surface (m)
Contains single-look complex (SLC) data:
i_slc,q_slc: In-phase and quadrature components of SLC waveformsiq_scale_factor: Scaling factor to convert I/Q samples to voltagetime: UTC time of SLC measurements
| 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 |
| 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 |
| 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 |
- Waveform Scaling: Power waveforms are scaled to fit 2-byte integers
- Time Reference: All times are referenced to UTC with TAI-UTC difference of 37s
- Coordinate System: ITRF for position/velocity, WGS84 for geodetic coordinates
- Surface Classification: Based on MODIS and GlobCover data
The real waveform in watt can be derived from the power_waveform and sig0_scaling_factor using the following formula:
- 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
- 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
- Latitude Range: latitude processing range
- Longitude Range: longitude processing range
- Reference Ellipsoid: WGS84
- Semi-major axis: 6,378,137.0 m
- Flattening: 0.00335281066474748
- 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
Contains geophysical parameters derived from retracking algorithms:
| 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 |
OCOG Retracker:
range_ocog: Corrected range (m)sig0_ocog: Backscatter coefficient (dB)amplitude_ocog: Waveform amplitudeepoch_ocog: Retracking epoch (s)
PTR Retracker:
range_ptr: Corrected range (m)sig0_ptr: Backscatter coefficient (dB)amplitude_ptr: Waveform amplitudeepoch_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 amplitudeepoch_samp: Retracking epoch (s)misfit_samp: Model misfit error
Contains environmental corrections and auxiliary data:
| 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 |
- Ocean Tides:
ocean_tide_sol1Solution 1 (GOT4.10)ocean_tide_sol2Solution 2 (FES2014)- Includes load tide and equilibrium components
- Solid Earth Tide:
solid_earth_tideusing Cartwright and Tayler tables - Pole Tide:
pole_tideusing Desai model
| 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 |
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
- 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} $$
- Sigma0 Calculation: Backscatter coefficients are already fully calibrated
- Retracker Selection: SAM+ is recommended.
oceanlike_flagcan be used for selecting the good waveform from Ocean.