Algorithmes Sentinel-1

Sentinel-1 est une mission spatiale financée par l'Union européenne et réalisée par l'Agence spatiale européenne (ESA) dans le cadre du programme Copernicus. Sentinel-1 collecte des images radar à synthèse d'ouverture (SAR) en bande C avec différentes polarisations et résolutions. Étant donné que les données radar nécessitent plusieurs algorithmes spécialisés pour obtenir des images orthorectifiées et calibrées, ce document décrit le prétraitement des données Sentinel-1 dans Earth Engine.

Les données Sentinel-1 sont collectées avec plusieurs configurations d'instruments, résolutions et combinaisons de bandes différentes lors des orbites ascendantes et descendantes. En raison de cette hétérogénéité, il est généralement nécessaire de filtrer les données pour obtenir un sous-ensemble homogène avant de commencer le traitement. Ce processus est décrit ci-dessous dans la section Métadonnées et filtrage.

Métadonnées et filtrage

Pour créer un sous-ensemble homogène de données Sentinel-1, il est généralement nécessaire de filtrer la collection à l'aide de propriétés de métadonnées. Les champs de métadonnées courants utilisés pour le filtrage incluent les propriétés suivantes:

  1. transmitterReceiverPolarisation: ['VV'], ['HH'], ['VV', 'VH'] ou ['HH', 'HV']
  2. instrumentMode: "IW" (Interferometric Wide Swath), "EW" (Extra Wide Swath) ou "SM" (Strip Map). Pour en savoir plus, consultez cette documentation de référence.
  3. orbitProperties_pass: "ASCENDING" ou "DESCENDING"
  4. resolution_meters: 10, 25 ou 40
  5. resolution: "M" (moyenne) ou "H" (élevée). Pour en savoir plus, consultez cette documentation de référence.

Le code suivant filtre la collection Sentinel-1 par propriétés transmitterReceiverPolarisation, instrumentMode et orbitProperties_pass, puis calcule des composites pour plusieurs combinaisons d'observations affichées sur la carte afin de montrer comment ces caractéristiques affectent les données.

Éditeur de code (JavaScript)

// Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations.
var sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD')
                    .filterDate('2020-06-01', '2020-10-01');

// Filter the Sentinel-1 collection by metadata properties.
var vvVhIw = sentinel1
  // Filter to get images with VV and VH dual polarization.
  .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))
  .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
  // Filter to get images collected in interferometric wide swath mode.
  .filter(ee.Filter.eq('instrumentMode', 'IW'));

// Separate ascending and descending orbit images into distinct collections.
var vvVhIwAsc = vvVhIw.filter(
  ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));
var vvVhIwDesc = vvVhIw.filter(
  ee.Filter.eq('orbitProperties_pass', 'DESCENDING'));

// Calculate temporal means for various observations to use for visualization.
// Mean VH ascending.
var vhIwAscMean = vvVhIwAsc.select('VH').mean();
// Mean VH descending.
var vhIwDescMean = vvVhIwDesc.select('VH').mean();
// Mean VV for combined ascending and descending image collections.
var vvIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VV').mean();
// Mean VH for combined ascending and descending image collections.
var vhIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VH').mean();

// Display the temporal means for various observations, compare them.
Map.addLayer(vvIwAscDescMean, {min: -12, max: -4}, 'vvIwAscDescMean');
Map.addLayer(vhIwAscDescMean, {min: -18, max: -10}, 'vhIwAscDescMean');
Map.addLayer(vhIwAscMean, {min: -18, max: -10}, 'vhIwAscMean');
Map.addLayer(vhIwDescMean, {min: -18, max: -10}, 'vhIwDescMean');
Map.setCenter(-73.8719, 4.512, 9);  // Bogota, Colombia

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

import ee
import geemap.core as geemap

Colab (Python)

# Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations.
sentinel_1 = ee.ImageCollection('COPERNICUS/S1_GRD').filterDate(
    '2020-06-01', '2020-10-01'
)

# Filter the Sentinel-1 collection by metadata properties.
vv_vh_iw = (
    sentinel_1.filter(
        # Filter to get images with VV and VH dual polarization.
        ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')
    )
    .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
    .filter(
        # Filter to get images collected in interferometric wide swath mode.
        ee.Filter.eq('instrumentMode', 'IW')
    )
)

# Separate ascending and descending orbit images into distinct collections.
vv_vh_iw_asc = vv_vh_iw.filter(
    ee.Filter.eq('orbitProperties_pass', 'ASCENDING')
)
vv_vh_iw_desc = vv_vh_iw.filter(
    ee.Filter.eq('orbitProperties_pass', 'DESCENDING')
)

# Calculate temporal means for various observations to use for visualization.
# Mean VH ascending.
vh_iw_asc_mean = vv_vh_iw_asc.select('VH').mean()
# Mean VH descending.
vh_iw_desc_mean = vv_vh_iw_desc.select('VH').mean()
# Mean VV for combined ascending and descending image collections.
vv_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VV').mean()
# Mean VH for combined ascending and descending image collections.
vh_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VH').mean()

# Display the temporal means for various observations, compare them.
m = geemap.Map()
m.add_layer(vv_iw_asc_desc_mean, {'min': -12, 'max': -4}, 'vv_iw_asc_desc_mean')
m.add_layer(
    vh_iw_asc_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_desc_mean'
)
m.add_layer(vh_iw_asc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_mean')
m.add_layer(vh_iw_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_desc_mean')
m.set_center(-73.8719, 4.512, 9)  # Bogota, Colombia
m

Prétraitement Sentinel-1

Les images de la collection 'COPERNICUS/S1_GRD' Sentinel-1ImageCollection d'Earth Engine sont constituées de scènes GRD (Ground Range Detected) de niveau 1 traitées en coefficient de rétrodiffusion (σ°) en décibels (dB). Le coefficient de rétrodiffusion représente la zone de rétrodiffusion de la cible (section radar) par unité de surface au sol. Étant donné qu'il peut varier de plusieurs ordres de grandeur, il est converti en dB sous la forme 10*log10σ°. Il mesure si le terrain irradié disperse la radiation micro-onde incidente de préférence loin du capteur SAR (dB < 0) ou vers le capteur SAR (dB > 0). Ce comportement de diffusion dépend des caractéristiques physiques du terrain, principalement de la géométrie des éléments du terrain et de leurs caractéristiques électromagnétiques.

Earth Engine utilise les étapes de prétraitement suivantes (implémentées par la boîte à outils Sentinel-1) pour dériver le coefficient de rétrodiffusion dans chaque pixel:

  1. Appliquer le fichier d'orbite
    • Met à jour les métadonnées d'orbite avec un fichier d'orbite restitué (ou un fichier d'orbite précis si celui restitué n'est pas disponible).
  2. Suppression du bruit au niveau des bordures de la carte de référence géographique
    • Supprime le bruit de faible intensité et les données non valides sur les bords de la scène. (Au 12 janvier 2018)
  3. Suppression du bruit thermique
    • Supprime le bruit additif dans les sous-coupes pour réduire les discontinuités entre les sous-coupes pour les scènes dans les modes d'acquisition multicoupe. (Cette opération ne peut pas être appliquée aux images produites avant juillet 2015.)
  4. Application des valeurs de calibration radiométrique
    • Calcule l'intensité de la rétrodiffusion à l'aide des paramètres de calibration du capteur dans les métadonnées GRD.
  5. Correction du relief (orthorectification)
    • Convertit les données de la géométrie de la plage au sol, qui ne tient pas compte du terrain, en σ° à l'aide du MNT SRTM 30 m ou du MNT ASTER pour les latitudes élevées (supérieures à 60° ou inférieures à -60°).

Remarques sur l'ensemble de données

  • L'aplatissement du terrain radiométrique n'est pas appliqué en raison d'artefacts sur les pentes des montagnes.
  • Le coefficient de rétrodiffusion sans unité est converti en dB comme décrit ci-dessus.
  • Les données SLC de Sentinel-1 ne peuvent pas être ingérées pour le moment, car Earth Engine n'est pas compatible avec les images comportant des valeurs complexes, car il ne peut pas les moyenner lors de la pyramidisation sans perdre les informations de phase.
  • Les éléments SM GRD ne sont pas ingérés, car la fonction computeNoiseScalingFactor() de l'opération de suppression du bruit de bordure dans la boîte à outils S1 n'est pas compatible avec le mode SM.