Sentinel-1 के एल्गोरिदम

Sentinel-1 एक ऐसा अंतरिक्ष मिशन है जिसे यूरोपीय संघ से फ़ंड मिलता है. साथ ही, इसे कॉपरनिकस प्रोग्राम के तहत, यूरोपियन स्पेस एजेंसी (ईएसए) मैनेज करती है. सेंटिनल-1, अलग-अलग पोलराइज़ेशन और रिज़ॉल्यूशन में सी-बैंड सिंथेटिक एपर्चर रडार (एसएआर) इमेज इकट्ठा करता है. रडार डेटा से कैलिब्रेट की गई और ऑर्थोरेकटफ़ाइड इमेज पाने के लिए, कई खास एल्गोरिदम की ज़रूरत होती है. इसलिए, इस दस्तावेज़ में Earth Engine में Sentinel-1 डेटा की प्री-प्रोसेसिंग के बारे में बताया गया है.

Sentinel-1 का डेटा, कई अलग-अलग इंस्ट्रूमेंट कॉन्फ़िगरेशन, रिज़ॉल्यूशन, और बैंड कॉम्बिनेशन के साथ इकट्ठा किया जाता है. ऐसा, ऑर्बिट के ऊपर और नीचे जाने के दौरान किया जाता है. इस वजह से, डेटा को प्रोसेस करने से पहले, आम तौर पर उसे एक जैसे सबसेट में फ़िल्टर करना ज़रूरी होता है. इस प्रोसेस के बारे में यहां बताया गया है. इसके लिए, मेटाडेटा और फ़िल्टर करना सेक्शन पर जाएं.

मेटाडेटा और फ़िल्टर करना

Sentinel-1 डेटा का एक जैसा सबसेट बनाने के लिए, आम तौर पर मेटाडेटा प्रॉपर्टी का इस्तेमाल करके कलेक्शन को फ़िल्टर करना ज़रूरी होगा. फ़िल्टर करने के लिए इस्तेमाल किए जाने वाले आम मेटाडेटा फ़ील्ड में ये प्रॉपर्टी शामिल हैं:

  1. transmitterReceiverPolarisation: ['VV'], ['HH'], ['VV', 'VH'] या ['HH', 'HV']
  2. instrumentMode: 'IW' (इंटरफ़ेरोमेट्रिक वाइड स्वैथ), 'EW' (एक्सट्रा वाइड स्वैथ) या 'SM' (स्ट्रिप मैप). ज़्यादा जानकारी के लिए, यह रेफ़रंस देखें.
  3. orbitProperties_pass: 'ASCENDING' या 'DESCENDING'
  4. resolution_meters: 10, 25 या 40
  5. resolution: 'M' (मीडियम) या 'H' (ज़्यादा). ज़्यादा जानकारी के लिए, यह रेफ़रंस देखें.

यहां दिया गया कोड, transmitterReceiverPolarisation, instrumentMode, और orbitProperties_pass प्रॉपर्टी के हिसाब से, Sentinel-1 कलेक्शन को फ़िल्टर करता है. इसके बाद, कई ऑब्ज़र्वेशन कॉम्बिनेशन के लिए कंपोजिट का हिसाब लगाता है. ये कॉम्बिनेशन, मैप में दिखाए जाते हैं, ताकि यह दिखाया जा सके कि इन विशेषताओं का डेटा पर क्या असर पड़ता है.

कोड एडिटर (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 के बारे में जानकारी पाने और इंटरैक्टिव डेवलपमेंट के लिए geemap का इस्तेमाल करने के लिए, Python एनवायरमेंट पेज देखें.

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

सेंटिनल-1 प्रीप्रोसेसिंग

Earth Engine 'COPERNICUS/S1_GRD' Sentinel-1 ImageCollection में मौजूद इमेज में, लेवल-1 ग्राउंड रेंज डिटेक्ट (GRD) वाले सीन होते हैं. इन्हें डेसिबल (dB) में बैकस्कैटर कोएफ़िशिएंट (σ°) के तौर पर प्रोसेस किया जाता है. बैकस्कैटर कोएफ़िशिएंट, ज़मीन के हर यूनिट एरिया के लिए, टारगेट बैकस्कैटरिंग एरिया (रडार क्रॉस-सेक्शन) को दिखाता है. यह कई ऑर्डर के हिसाब से अलग-अलग हो सकता है. इसलिए, इसे 10*log10σ° के तौर पर dB में बदला जाता है. इससे यह पता चलता है कि रेडिएटेड टेरेन, इन्सिडेंट माइक्रोवेव रेडिएशन को SAR सेंसर से दूर (dB < 0) या SAR सेंसर की ओर (dB > 0) स्कैटर करता है या नहीं. यह स्कैटरिंग व्यवहार, इलाके की भौतिक विशेषताओं पर निर्भर करता है. मुख्य रूप से, इलाके के एलिमेंट की ज्यामिति और उनकी इलेक्ट्रोमैग्नेटिक विशेषताओं पर.

Earth Engine, हर पिक्सल में बैकस्कैटर कोएफ़िशिएंट का पता लगाने के लिए, प्रीप्रोसेसिंग के इन चरणों का इस्तेमाल करता है. ये चरण, Sentinel-1 टूलबॉक्स के ज़रिए लागू किए जाते हैं:

  1. ऑर्बिट फ़ाइल लागू करना
    • ऑर्बिट मेटाडेटा को, वापस लाई गई ऑर्बिट फ़ाइल के साथ अपडेट करता है. अगर वापस लाई गई ऑर्बिट फ़ाइल उपलब्ध नहीं है, तो सटीक ऑर्बिट फ़ाइल के साथ अपडेट करता है.
  2. GRD बॉर्डर से ग़ैर-ज़रूरी आवाज़ें हटाना
    • यह सुविधा, सीन के किनारों पर मौजूद कम इंटेंसिटी वाले शोर और अमान्य डेटा को हटाती है. (12 जनवरी, 2018 तक)
  3. थर्मल नॉइज़ रिमूवल
    • यह सब-स्वाथ में अतिरिक्त शोर को हटाता है, ताकि मल्टी-स्वाथ ऐक्वज़िशन मोड में, स्क्रीन के अलग-अलग हिस्सों के बीच के अंतर को कम किया जा सके. (यह कार्रवाई, जुलाई 2015 से पहले ली गई इमेज पर लागू नहीं की जा सकती)
  4. रेडियोमेट्रिक कैलिब्रेशन वैल्यू का इस्तेमाल करना
    • जीआरडी मेटाडेटा में सेंसर कैलिब्रेशन पैरामीटर का इस्तेमाल करके, बैकस्कैटर इंटेंसिटी का हिसाब लगाता है.
  5. इलाके में हुए बदलावों को ठीक करना (ऑर्थोरेटिकफ़िकेशन)
    • यह फ़ंक्शन, ग्राउंड रेंज ज्यामिति से डेटा को σ° में बदलता है. ग्राउंड रेंज ज्यामिति में, इलाके की जानकारी शामिल नहीं होती. यह फ़ंक्शन, ज़्यादा अक्षांश (60° से ज़्यादा या -60° से कम) के लिए, SRTM 30 मीटर डीईएम या ASTER डीईएम का इस्तेमाल करता है.

डेटासेट के बारे में नोट

  • पहाड़ की ढलानों पर आर्टफ़ैक्ट की वजह से, रेडियोमेट्रिक टेरेन फ़्लैटनिंग लागू नहीं की जा रही है.
  • यूनिट के बिना बैकस्कैटर कोएफ़िशिएंट को ऊपर बताए गए तरीके से dB में बदला जाता है.
  • फ़िलहाल, Sentinel-1 SLC डेटा को डाला नहीं जा सकता, क्योंकि Earth Engine, मुश्किल वैल्यू वाली इमेज के साथ काम नहीं करता. ऐसा इसलिए है, क्योंकि पिरामिड बनाने के दौरान, फ़ेज़ की जानकारी को बनाए रखते हुए उनका औसत नहीं निकाला जा सकता.
  • जीआरडी एसएम ऐसेट को डाला नहीं जाता, क्योंकि S1 टूलबॉक्स में बॉर्डर के शोर को हटाने के ऑपरेशन में मौजूद computeNoiseScalingFactor() फ़ंक्शन, एसएम मोड के साथ काम नहीं करता.