সেন্টিনেল-1 অ্যালগরিদম

সেন্টিনেল-1 হল একটি মহাকাশ মিশন যা ইউরোপীয় ইউনিয়ন দ্বারা অর্থায়ন করে এবং কোপার্নিকাস প্রোগ্রামের মধ্যে ইউরোপীয় মহাকাশ সংস্থা (ESA) দ্বারা পরিচালিত হয়। সেন্টিনেল-1 বিভিন্ন মেরুকরণ এবং রেজোলিউশনে সি-ব্যান্ড সিন্থেটিক অ্যাপারচার রাডার (এসএআর) চিত্র সংগ্রহ করে। যেহেতু রাডার ডেটার ক্যালিব্রেটেড, অর্থোরেক্টিফায়েড ইমেজরি পাওয়ার জন্য বেশ কিছু বিশেষ অ্যালগরিদমের প্রয়োজন হয়, তাই এই নথিটি আর্থ ইঞ্জিনে সেন্টিনেল-1 ডেটার প্রাক-প্রসেসিং বর্ণনা করে।

সেন্টিনেল-1 ডেটা ঊর্ধ্বগামী এবং অবরোহী উভয় কক্ষপথের সময় বিভিন্ন যন্ত্র কনফিগারেশন, রেজোলিউশন, ব্যান্ড সংমিশ্রণ সহ সংগ্রহ করা হয়। এই বৈচিত্র্যের কারণে, প্রক্রিয়াকরণ শুরু করার আগে সাধারণত ডেটা ফিল্টার করে একটি সমজাতীয় উপসেটে নামিয়ে নেওয়া প্রয়োজন। এই প্রক্রিয়াটি নীচে মেটাডেটা এবং ফিল্টারিং বিভাগে বর্ণিত হয়েছে।

মেটাডেটা এবং ফিল্টারিং

সেন্টিনেল-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' (উচ্চ)। বিস্তারিত জানার জন্য এই রেফারেন্স দেখুন.

নিম্নোক্ত কোডটি সেন্টিনেল-1 সংগ্রহকে transmitterReceiverPolarisation , instrumentMode , এবং orbitProperties_pass বৈশিষ্ট্য দ্বারা ফিল্টার করে, তারপরে এই বৈশিষ্ট্যগুলি কীভাবে ডেটাকে প্রভাবিত করে তা দেখানোর জন্য মানচিত্রে প্রদর্শিত বিভিন্ন পর্যবেক্ষণ সংমিশ্রণের জন্য কম্পোজিট গণনা করে।

কোড এডিটর (জাভাস্ক্রিপ্ট)

// 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

পাইথন সেটআপ

পাইথন এপিআই এবং ইন্টারেক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করার জন্য পাইথন এনভায়রনমেন্ট পৃষ্ঠাটি দেখুন।

import ee
import geemap.core as geemap

Colab (পাইথন)

# 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 প্রিপ্রসেসিং

আর্থ ইঞ্জিন 'COPERNICUS/S1_GRD' সেন্টিনেল-1 ImageCollection লেভেল-1 গ্রাউন্ড রেঞ্জ ডিটেক্টেড (জিআরডি) দৃশ্য রয়েছে যা ডেসিবেলে (ডিবি) ব্যাকস্ক্যাটার সহগ (σ°) এ প্রক্রিয়া করা হয়। ব্যাকস্ক্যাটার সহগ প্রতি ইউনিট গ্রাউন্ড এলাকায় লক্ষ্য ব্যাকস্ক্যাটারিং এলাকা (রাডার ক্রস-সেকশন) প্রতিনিধিত্ব করে। কারণ এটি মাত্রার বিভিন্ন ক্রম অনুসারে পরিবর্তিত হতে পারে, এটি 10*log 10 σ° হিসাবে dB তে রূপান্তরিত হয়। এটি পরিমাপ করে যে বিকিরণকৃত ভূখণ্ড ঘটনা মাইক্রোওয়েভ বিকিরণকে SAR সেন্সর dB < 0) থেকে বা SAR সেন্সর dB > 0 এর দিকে অগ্রাধিকারমূলকভাবে ছড়িয়ে দেয় কিনা। এই বিক্ষিপ্ত আচরণ ভূখণ্ডের শারীরিক বৈশিষ্ট্যের উপর নির্ভর করে, প্রাথমিকভাবে ভূখণ্ডের উপাদানগুলির জ্যামিতি এবং তাদের ইলেক্ট্রোম্যাগনেটিক বৈশিষ্ট্যের উপর।

আর্থ ইঞ্জিন প্রতিটি পিক্সেলে ব্যাকস্ক্যাটার সহগ বের করতে নিম্নলিখিত প্রিপ্রসেসিং ধাপগুলি ব্যবহার করে (যেমন সেন্টিনেল-1 টুলবক্স দ্বারা প্রয়োগ করা হয়েছে)

  1. অরবিট ফাইল প্রয়োগ করুন
    • একটি পুনঃস্থাপিত অরবিট ফাইলের সাথে কক্ষপথের মেটাডেটা আপডেট করে (অথবা একটি সুনির্দিষ্ট অরবিট ফাইল যদি পুনঃস্থাপিত না থাকে)।
  2. GRD সীমানা শব্দ অপসারণ
    • দৃশ্যের প্রান্তে কম তীব্রতার শব্দ এবং অবৈধ ডেটা সরিয়ে দেয়। (12 জানুয়ারী, 2018 অনুযায়ী)
  3. তাপীয় শব্দ অপসারণ
    • মাল্টি-সোয়াথ অধিগ্রহণ মোডে দৃশ্যের জন্য সাব-সোয়াথগুলির মধ্যে বিচ্ছিন্নতা কমাতে সাহায্য করার জন্য সাব-সোয়াথগুলিতে সংযোজনীয় শব্দ সরিয়ে দেয়। (এই অপারেশনটি জুলাই 2015 এর আগে উত্পাদিত চিত্রগুলিতে প্রয়োগ করা যাবে না)
  4. রেডিওমেট্রিক ক্রমাঙ্কন মান প্রয়োগ
    • GRD মেটাডেটাতে সেন্সর ক্রমাঙ্কন পরামিতি ব্যবহার করে ব্যাকস্ক্যাটারের তীব্রতা গণনা করে।
  5. ভূখণ্ড সংশোধন (অর্থোরেক্টিফিকেশন)
    • উচ্চ অক্ষাংশের জন্য SRTM 30 মিটার DEM বা ASTER DEM ব্যবহার করে স্থল পরিসরের জ্যামিতি থেকে ডেটা রূপান্তরিত করে, যা ভূখণ্ডকে বিবেচনায় নেয় না (60° এর চেয়ে বেশি বা -60° এর কম)।

ডেটাসেট নোট

  • পাহাড়ের ঢালে শিল্পকর্মের কারণে রেডিওমেট্রিক ভূখণ্ড সমতলকরণ প্রয়োগ করা হচ্ছে না।
  • ইউনিটবিহীন ব্যাকস্ক্যাটার সহগ উপরে বর্ণিত হিসাবে dB তে রূপান্তরিত হয়।
  • সেন্টিনেল-1 এসএলসি ডেটা বর্তমানে ইনজেস্ট করা যাবে না, কারণ আর্থ ইঞ্জিন জটিল মানের ছবিগুলিকে সমর্থন করে না কারণ পিরামিডিংয়ের সময় ফেজ তথ্য না হারিয়ে তাদের গড় করতে অক্ষমতার কারণে।
  • GRD SM সম্পদগুলি গ্রহণ করা হয় না কারণ S1 টুলবক্সে বর্ডার নয়েজ রিমুভাল অপারেশনে computeNoiseScalingFactor() ফাংশন SM মোড সমর্থন করে না৷