Sentinel-1 Algoritmaları

Sentinel-1, Avrupa Birliği tarafından finanse edilen ve Copernicus Programı kapsamında Avrupa Uzay Ajansı (ESA) tarafından yürütülen bir uzay misyonu. Sentinel-1, çeşitli polarizasyonlarda ve çözünürlüklerde C bandında sentetik açıklıklı radar (SAR) görüntüleri toplar. Radar verileri, kalibre edilmiş ve ortorektif görüntü elde etmek için çeşitli özel algoritmalar gerektirdiğinden bu dokümanda, Earth Engine'da Sentinel-1 verilerinin ön işleme tabi tutulması açıklanmaktadır.

Sentinel-1 verileri, hem artan hem de azalan yörüngelerde çeşitli farklı alet yapılandırmaları, çözünürlükler ve bant kombinasyonlarıyla toplanır. Bu heterojenlik nedeniyle, işleme başlamadan önce verileri genellikle homojen bir alt kümeye göre filtrelemek gerekir. Bu süreç, aşağıda Meta Veriler ve Filtreleme bölümünde özetlenmiştir.

Meta Veriler ve Filtreleme

Sentinel-1 verilerinin homojen bir alt kümesini oluşturmak için genellikle meta veri özelliklerini kullanarak koleksiyonu filtrelemeniz gerekir. Filtreleme için kullanılan yaygın meta veri alanları şunlardır:

  1. transmitterReceiverPolarisation: ['VV'], ['HH'], ['VV', 'VH'] veya ['HH', 'HV']
  2. instrumentMode: "IW" (Interferometric Wide Swath), "EW" (Extra Wide Swath) veya "SM" (Strip Map). Ayrıntılar için bu referans sayfasına bakın.
  3. orbitProperties_pass: "ASCENDING" veya "DESCENDING"
  4. resolution_meters: 10, 25 veya 40
  5. resolution: "M" (orta) veya "Y" (yüksek). Ayrıntılar için bu referans sayfasına bakın.

Aşağıdaki kod, Sentinel-1 koleksiyonunu transmitterReceiverPolarisation, instrumentMode ve orbitProperties_pass özelliklerine göre filtreler, ardından bu özelliklerin verileri nasıl etkilediğini göstermek için haritada görüntülenen çeşitli gözlem kombinasyonları için birleştirmeleri hesaplar.

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Sentinel-1 Ön İşleme

Earth Engine 'COPERNICUS/S1_GRD' Sentinel-1 ImageCollection'deki görüntüler, desibel (dB) cinsinden geri saçılma katsayısına (σ°) göre işlenen 1. Katman Yersel Menzil Algılama (GRD) sahnelerinden oluşur. Geri saçılma katsayısı, birim yer alanı başına hedef geri saçılma alanını (radar kesiti) temsil eder. Çeşitli büyüklük sıralarında değişebileceğinden 10*log10σ° olarak dB'ye dönüştürülür. Işınlanan arazinin, gelen mikrodalga radyasyonunu tercihen SAR sensöründen uzağa (dB < 0) mı yoksa SAR sensörüne doğru (dB > 0) mu dağıttığını ölçer. Bu saçılma davranışı, arazinin fiziksel özelliklerine, özellikle de arazi öğelerinin geometrisine ve elektromanyetik özelliklerine bağlıdır.

Earth Engine, her pikselde geri saçılma katsayısını elde etmek için aşağıdaki ön işleme adımlarını (Sentinel-1 Aracı Kutusu tarafından uygulandığı şekilde) kullanır:

  1. Yörünge dosyasını uygulama
    • Yörünge meta verilerini, yeniden oluşturulmuş bir yörünge dosyasıyla (veya yeniden oluşturulmuş dosya kullanılamıyorsa hassas bir yörünge dosyasıyla) günceller.
  2. GRD kenar gürültü giderme
    • Sahne kenarlarındaki düşük yoğunluklu gürültüyü ve geçersiz verileri kaldırır. (12 Ocak 2018 itibarıyla)
  3. Termal gürültü giderme
    • Çok bantlı görüntüleme modlarındaki sahnelerde alt bantlar arasındaki kesintilerin azaltılmasına yardımcı olmak için alt bantlardaki ek gürültüyü kaldırır. (Bu işlem Temmuz 2015'ten önce üretilen resimlere uygulanamaz.)
  4. Radyometrik kalibrasyon değerlerinin uygulanması
    • GRD meta verilerindeki sensör kalibrasyon parametrelerini kullanarak geri saçılma yoğunluğunu hesaplar.
  5. Arazi düzeltmesi (ortorektifikasyon)
    • Yüksek enlemler (60°'tan büyük veya -60°'tan küçük) için SRTM 30 metrelik DEM veya ASTER DEM'i kullanarak, araziyi dikkate almayan yer aralığı geometrisindeki verileri σ°'ye dönüştürür.

Veri Kümesi Notları

  • Radyometrik arazi düzleştirme, dağ yamaçlarındaki artefaktlar nedeniyle uygulanmıyor.
  • Birimsiz geri saçılma katsayısı, yukarıda açıklandığı şekilde dB'ye dönüştürülür.
  • Earth Engine, faz bilgilerini kaybetmeden piramide oluşturma işlemi sırasında ortalamaları alınamadığı için karmaşık değerlere sahip görüntüleri desteklemediğinden Sentinel-1 SLC verileri şu anda beslenemiyor.
  • S1 araç kutusundaki kenar gürültü giderme işleminde bulunan computeNoiseScalingFactor() işlevi SM modunu desteklemediği için GRD SM öğeleri beslenmez.