Sentinel-1
Description
Sentinel-1 images are SAR acquisitions with available in several modes and correction levels. iota2 is only able to use IW GRD data, which are amplitude (real) images provided at 10 m x 10 m pixel spacing.
This data can be freely downloaded from the data provider’s website PEPS.
Using Sentinel-1
chain.s1_path
is the parameter to enable the use of Sentinel-1 products by iota2. This Sentinel-1 data can be used together with the other sensors (ie:Sentinel-2) available in iota2.
chain:
{
...
s1_path:"/absolute/path/s1.cfg"
...
}
Warning
The parameter s1_path
contains a path to a configuration file and not a directory as usual.
About Sentinel-1 data
Sentinel-1 acquisitions are not provided tiled (as the data typically usable by iota2) as these are provided in level 1. The processing performed by iota2 on these data will therefore consist firstly in tiling them according to a grid of interest (for example, the grid of Sentinel-2). This tiling operation will make possible, for example, to superimpose radar data on optical data. To do this, iota2 will rely on reference images that must be available before any processing with Sentinel-1 can be done.
In addition to the geometric processing (tiling and ortho-rectification), iota2 will also perform radiometric corrections. These consist in antenna pattern correction, conversion to backscatter coefficient (gamma naught) and multi-temporal speckle filtering (Quegan filter). See section Sentinel-1 data workflow
All the information about the reference images and/or the Sentinel-1 proessing parameters must be specified in a configuration file. The table below summarises all the fields available in the configuration file.
Contents of the Sentinel-1 configuration file
The configuration file must be provided in configparser format with the following fields and sections:
Name |
Section |
Default Value |
Description |
Type |
Mandatory |
---|---|---|---|---|---|
Paths |
output path to store Sentinel-1 images processed by iota2 (tiled and reprojected) |
str |
True |
||
Paths |
path to the directory containing all Sentinel-1 data |
str |
True |
||
Paths |
path to the directory containing all SRTM data |
str |
True |
||
Paths |
path to the geoid file (egm96.grd) |
str |
True |
||
Processing |
path to the directory containing reference raster to reproject Sentinel-1 data on top of it. |
str |
True |
||
Processing |
pattern used to find reference raster by tile |
str |
True |
||
Processing |
shapefile containing the grid of interest over the globe. |
str |
True |
||
Processing |
shapefile containing the srtm grid over the globe. |
str |
True |
||
Processing |
list of tiles to process |
list |
True |
||
Processing |
10 |
gap (in days) between interpolated data |
int |
False |
|
borderthreshold |
Processing |
1e-3 |
threshold (in dB) above which the data is considered valid |
float |
False |
ramperprocess |
Processing |
5000 |
RAM amount (Mo) to process S1 data |
int |
False |
gapfilling_interpolation |
Processing |
linear |
‘linear’ or ‘spline’ temporal interpolation method |
str |
False |
window_radius |
Filtering |
2 |
window radius of the speckle filter |
int |
False |
output
This directory will contain one directory per tile (e.g. 31TCJ), containing the tree structure :
/path/to/output/31TCJ/
├── filtered
├── outcore_S1_vh_ASC.geom
├── outcore_S1_vh_ASC.tif
├── outcore_S1_vh_DES.geom
├── outcore_S1_vh_DES.tif
├── outcore_S1_vv_ASC.geom
├── outcore_S1_vv_ASC.tif
├── outcore_S1_vv_DES.geom
├── outcore_S1_vv_DES.tif
├── s1a_31TCJ_vh_ASC_20170519t174702.geom
├── s1a_31TCJ_vh_ASC_20170519t174702.tif
├── s1a_31TCJ_vh_DES_20151231t060030.geom
├── s1a_31TCJ_vh_DES_20151231t060030.tif
├── s1a_31TCJ_vv_ASC_20170519t174702_BorderMask.tif
├── s1a_31TCJ_vv_ASC_20170519t174702.geom
├── s1a_31TCJ_vv_ASC_20170519t174702.tif
├── ...
├── s1a_31TCJ_vv_DES_20151231t060030_BorderMask.tif
├── s1a_31TCJ_vv_DES_20151231t060030.geom
├── s1a_31TCJ_vv_DES_20151231t060030.tif
├── S1_vh_ASC_dates.txt
├── S1_vh_DES_dates.txt
├── S1_vv_ASC_dates.txt
└── S1_vv_DES_dates.txt
tiled Sentinel-1 data :
s1a_31TCJ_*_*_YYYYMMDDtHHMMSS.tif
, the associated mask*BorderMask.tif
and the geom file*.geom*
.outcore_*.tif
rasters which are necessary for speckle filtering.dates files :
dates.txt
The filtered
directory is empty by default, but will contain the following tree if the write_outputs parameter is set.
├── enl_S1_vh_ASC.geom
├── enl_S1_vh_ASC.tif
├── enl_S1_vh_DES.geom
├── enl_S1_vh_DES.tif
├── enl_S1_vv_ASC.geom
├── enl_S1_vv_ASC.tif
├── enl_S1_vv_DES.geom
├── enl_S1_vv_DES.tif
├── S1_vh_ASC_Filtered.geom
├── S1_vh_ASC_Filtered.tif
├── S1_vh_DES_Filtered.geom
├── S1_vh_DES_Filtered.tif
├── S1_vv_ASC_Filtered.geom
├── S1_vv_ASC_Filtered.tif
├── S1_vv_DES_Filtered.geom
└── S1_vv_DES_Filtered.tif
enl_*.tif
rasters which are necessary for speckle filtering.S1_*_Filtered.tif
rasters which compose the Sentinel-1 time series after speckle filtering. These stacks are ordered chronologically, the first band corresponding to the first date (see the text files in the tile’s output directory)
s1images
The s1images
parameter must contain all the Sentinel-1 acquisitions that should be used for the execution of iota2. For example, for 3 Sentinel-1 acquisitions, the directory indicated by the parameter must contain:
/path/to/s1images/
├── S1A_IW_GRDH_1SDV_20151231T060030_20151231T060055_009282_00D66B_F0EB.SAFE
│ ├── annotation
│ ├── manifest.safe
│ ├── measurement
│ ├── preview
│ ├── S1A_IW_GRDH_1SDV_20151231T060030_20151231T060055_009282_00D66B_F0EB.SAFE-report-20151231T083359.pdf
│ └── support
├── S1A_IW_GRDH_1SDV_20170519T174702_20170519T174727_016654_01BA3E_B031.SAFE
│ ├── annotation
│ ├── manifest.safe
│ ├── measurement
│ ├── preview
│ ├── S1A_IW_GRDH_1SDV_20170519T174702_20170519T174727_016654_01BA3E_B031.SAFE-report-20170519T201737.pdf
│ └── support
└── S1B_IW_GRDH_1SDV_20170518T175426_20170518T175451_005656_009E79_5C47.SAFE
├── annotation
├── manifest.safe
├── measurement
├── preview
├── S1B_IW_GRDH_1SDV_20170518T175426_20170518T175451_005656_009E79_5C47.SAFE-report-20170518T202822.pdf
└── support
Warning
The directory must contains only IW_GRD rasters.
srtm
In order to reproject Sentinel-1 images as accurately as possible, it is necessary to use the SRTM data. This data is freely available over most of the world.
geoidfile
For the same reason that it is necessary to use SRTM data, it is also necessary to use a geoid file (egm96.grd). A version of the file is available on the OTB repository : https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-data/blob/master/Input/DEM/egm96.grd and https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-data/-/blob/master/Input/DEM/egm96.grd.hdr which must me placed next to the geoid file.
referencesfolder
As indicated in the section about Sentinel-1, iota2 uses images that have already been reprojected into the correct projection so that the Sentinel-1 data can be superimposed. This parameter indicates the directory containing the data that will be used as a reference. For example, in the case where we are only dealing with the T31TCJ tile, it must be constructed as follows:
/path/to/referencesfolder
T31TCJ
├── SENTINEL2A_20151130-105641-486_L2A_T31TCJ_D_V1-0
│ ├── MASKS
│ ├── ...
│ └── SENTINEL2A_20151130-105641-486_L2A_T31TCJ_D_V1-0_FRE_STACK.tif
└── SENTINEL2A_20151203-110846-328_L2A_T31TCJ_D_V1-0
├── MASKS
├── ...
└── SENTINEL2A_20151203-110846-328_L2A_T31TCJ_D_V1-0_FRE_STACK.tif
Where SENTINEL2A_20151130-105641-486_L2A_T31TCJ_D_V1-0
and SENTINEL2A_20151203-110846-328_L2A_T31TCJ_D_V1-0
are 2 acquisitions already processed by iota2 (presence of the raster STACK.tif
). In fact, only one reference image per tile is required.
rasterpattern
This parameter allows to target a particular image in the reference acquisition directory. The raster found will then be the reference image for the reprojection of Sentinel-1 images.
Usually, when the Sentinel-2 data is used as a reference then rasterpattern
is equal to STACK.tif
because these rasters are all of the same resolution and in the same projection regardless of the tile.
tilesshapefile
Shapefile containing the grid of interest over the globe. Sentinel-2 grid is downloadable at https://github.com/CNES/S1Tiling/tree/master/shapefile (files Features.*
)
srtmshapefile
Shapefile containing the SRTM grid over the globe. Downloadable at https://github.com/CNES/S1Tiling/tree/master/shapefile (files srtm.*
)
tiles
List of tiles to process, comma separated and without any empty spaces :
tiles:31TCJ,31TDJ
temporalresolution
iota2 needs to homogenise the number of dates used over the whole area of interest (the number of dates can be different per tile and pixel). To do this, iota2 places all Sentinel-1 data in a common time grid. This parameter will then be the gap between each interpolated Sentinel-1 date.
Note
As example, two Sentinel-1 configuration files are provided s1_minimal.cfg
and s1_full.cfg
which are respectivelly a configuration file using all default values and with all parameters set.
Sentinel-1 data workflow
All Sentinel-1 images are subjected to the gamma calibration phase using the OTB SARCalibration application, and then these images are reprojected onto the grid of interest. Next, we proceed to filter the speckle noise in the images. To filter this noise, we use the multi-temporal filter proposed by Gelas et al. 1 and implemented in 2. It is important to note that to do this filtering, a time series is used and this one is built according to the data acquisition mode (DESCENDING, ASCENDING) and the polarization (VV, VH). Then iota2 resamples the output of the speckle filter to a common time grid for the whole area. Finally, this time series will feed the classification system. If another sensor is used, the data will simply be concatenated.
We can summarise this workflow as follows: