Алгоритмы Sentinel-1

Sentinel-1 — космическая миссия, финансируемая Европейским Союзом и осуществляемая Европейским космическим агентством (ЕКА) в рамках программы «Коперник». Sentinel-1 собирает изображения радара с синтезированной апертурой (SAR) C-диапазона с различными поляризациями и разрешениями. Поскольку радиолокационные данные требуют нескольких специализированных алгоритмов для получения калиброванных ортотрансформированных изображений, в этом документе описывается предварительная обработка данных Sentinel-1 в Earth Engine.

Данные Sentinel-1 собираются с помощью нескольких различных конфигураций приборов, разрешений и комбинаций диапазонов как на восходящей, так и на нисходящей орбите. Из-за этой неоднородности перед началом обработки обычно необходимо отфильтровать данные до однородного подмножества. Этот процесс описан ниже в разделе «Метаданные и фильтрация» .

Метаданные и фильтрация

Чтобы создать однородное подмножество данных Sentinel-1, обычно необходимо отфильтровать коллекцию с использованием свойств метаданных. Общие поля метаданных, используемые для фильтрации, включают следующие свойства:

  1. transmitterReceiverPolarisation : ['VV'], ['HH'], ['VV', 'VH'] или ['HH', 'HV']
  2. instrumentMode : «IW» (интерферометрическая широкая полоса обзора), «EW» (сверхширокая полоса обзора) или «SM» (полосовая карта). Подробнее см. в этой ссылке .
  3. orbitProperties_pass : «ВОСХОДЯЩИЙ» или «ВНИЗУЮЩИЙ»
  4. resolution_meters : 10, 25 или 40
  5. resolution : «M» (среднее) или «H» (высокое). Подробнее см. в этой ссылке .

Следующий код фильтрует коллекцию Sentinel-1 по свойствам transmitterReceiverPolarisation , instrumentMode и orbitProperties_pass , а затем вычисляет составные значения для нескольких комбинаций наблюдений, которые отображаются на карте, чтобы продемонстрировать, как эти характеристики влияют на данные.

Редактор кода (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

Настройка Python

См. страницу «Среда Python» для получения информации об API Python и использовании geemap для интерактивной разработки.

import ee
import geemap.core as geemap

Колаб (Питон)

# 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

Предварительная обработка Sentinel-1

Изображения в Earth Engine 'COPERNICUS/S1_GRD' ImageCollection Sentinel-1 состоит из сцен уровня 1 с обнаружением расстояния до земли (GRD), обработанных с учетом коэффициента обратного рассеяния (σ°) в децибелах (дБ). Коэффициент обратного рассеяния представляет собой целевую площадь обратного рассеяния (поперечное сечение радара) на единицу площади земли. Поскольку оно может изменяться на несколько порядков, оно преобразуется в дБ как 10*log 10 σ°. Он измеряет, рассеивает ли излучаемая местность падающее микроволновое излучение преимущественно в сторону от датчика SAR (дБ < 0) или в сторону датчика SAR (дБ > 0). Такое поведение рассеяния зависит от физических характеристик местности, прежде всего от геометрии элементов местности и их электромагнитных характеристик.

Earth Engine использует следующие шаги предварительной обработки (реализованные Sentinel-1 Toolbox ) для получения коэффициента обратного рассеяния в каждом пикселе:

  1. Применить файл орбиты
    • Обновляет метаданные орбиты с помощью восстановленного файла орбиты (или файла точной орбиты, если восстановленный файл недоступен).
  2. Удаление шума границ GRD
    • Удаляет шум низкой интенсивности и неверные данные по краям сцены. (По состоянию на 12 января 2018 г.)
  3. Удаление теплового шума
    • Удаляет аддитивный шум в дополнительных полосах, чтобы помочь уменьшить разрывы между дополнительными полосами для сцен в режимах съемки с несколькими полосами. (Эту операцию нельзя применить к изображениям, созданным до июля 2015 г.)
  4. Применение значений радиометрической калибровки
    • Вычисляет интенсивность обратного рассеяния, используя параметры калибровки датчика в метаданных GRD.
  5. Коррекция рельефа (орторектификация)
    • Преобразует данные из геометрии наземного диапазона, которая не учитывает рельеф местности, в σ° с использованием SRTM 30-метровой матрицы высот или ASTER DEM для высоких широт (больше 60° или меньше -60°).

Примечания к набору данных

  • Радиометрическое выравнивание ландшафта не применяется из-за артефактов на горных склонах.
  • Безразмерный коэффициент обратного рассеяния преобразуется в дБ, как описано выше.
  • Данные SLC Sentinel-1 в настоящее время не могут быть приняты, поскольку Earth Engine не поддерживает изображения со сложными значениями из-за невозможности усреднить их во время построения пирамид без потери информации о фазе.
  • Ресурсы GRD SM не принимаются, поскольку функция computeNoiseScalingFactor() в операции удаления граничного шума в наборе инструментов S1 не поддерживает режим SM.