আগে, আপনি শিখেছেন কীভাবে এইরকম কিছু করে স্বতন্ত্র Landsat দৃশ্য পেতে হয়,
যেখানে l8 এবং point হল Landsat 8 TOA
সংগ্রহ এবং আগ্রহের ক্ষেত্র জ্যামিতির প্রতিনিধিত্বকারী ইম্পোর্ট:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Define a point of interest. Use the UI Drawing Tools to import a point // geometry and name it "point" or set the point coordinates with the // ee.Geometry.Point() function as demonstrated here. var point = ee.Geometry.Point([-122.292, 37.9018]); // Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Get the least cloudy image in 2015. var image = ee.Image( l8.filterBounds(point) .filterDate('2015-01-01', '2015-12-31') .sort('CLOUD_COVER') .first() );
ধরুন, আপনি Landsat ছবি থেকে নরমালাইজড ডিফারেন্স ভেজিটেশন ইনডেক্স (NDVI) ছবি গণনা করতে চান। গাছপালা ইলেক্ট্রোম্যাগনেটিক স্পেকট্রামের নিয়ার-ইনফ্রারেড (NIR) অংশে আলো প্রতিফলিত করে এবং লাল অংশে আলো শোষণ করে (গাছপালা থেকে NIR প্রতিফলন সম্পর্কে আরও জানুন)। NDVI এটি ব্যবহার করে একটি একক মান তৈরি করে যা মোটামুটিভাবে একটি পিক্সেলে ঘটে যাওয়া সালোকসংশ্লেষীয় কার্যকলাপকে প্রতিফলিত করে। গণনাটি হল (NIR - লাল) / (NIR + লাল)। এর ফলে ১ থেকে -১-এর মধ্যে একটি সংখ্যা পাওয়া যায়, যেখানে উচ্চ সালোকসংশ্লেষ অ্যাক্টিভিটি সহ পিক্সেলের NDVI বেশি হয়। Earth Engine-এ NDVI গণনা করার এটি একটি উপায়:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Compute the Normalized Difference Vegetation Index (NDVI). var nir = image.select('B5'); var red = image.select('B4'); var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI'); // Display the result. Map.centerObject(image, 9); var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']}; Map.addLayer(ndvi, ndviParams, 'NDVI image');
ফলাফলটি চিত্র ৮-এর মতো দেখতে হবে। মনে রাখবেন যে আমরা NIR এবং লাল ব্যান্ড পেতে select()
ফাংশন ব্যবহার করি, যার ব্যাপারে আপনি মাস্কিং সংক্রান্ত
আগের বিভাগে জেনেছেন, তারপর ইমেজ ম্যাথমেটিক্যাল অপারেটর ব্যবহার করে NDVI গণনা করি, যার ব্যাপারে আপনি আগেও
Image ম্যাথ সংক্রান্ত বিভাগে দেখেছেন। শেষে, প্যালেট সহ ছবিটি দেখাও। এখানে
আমরা প্যালেটে হেক্স স্ট্রিংয়ের পরিবর্তে রঙের নাম ব্যবহার করেছি। (বিস্তারিত জানতে
CSS কালার সম্পর্কে এই এক্সটার্নাল
রেফারেন্স দেখুন।)
রিমোট সেন্সিংয়ে নরমালাইজড ডিফারেন্স অপারেশন এতটাই সর্বব্যাপী যে
ee.Image-এ একটি
শর্টকাট ফাংশন আছে যা আগের উদাহরণের কোড সরল করার জন্য উপযোগী:
কোড এডিটর (জাভাস্ক্রিপ্ট)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
কালেকশনের উপর ফাংশন ম্যাপ করা
এখন ধরুন, আপনি কোনও ইমেজ কালেকশনের প্রতিটি ছবিতে NDVI যোগ করতে চান। Earth Engine-এ
এটি করার উপায় হল, সংগ্রহের উপর একটি ফাংশন map() করা।
map()-কে Map অবজেক্টের সাথে গুলিয়ে ফেলবেন না। প্রথমটি হল একটি কালেকশনের
পদ্ধতি এবং এটি ম্যাপ ব্যবহার করে
প্যারালাল কম্পিউটিং সেন্স-এ
একটি কালেকশনের প্রতিটি এলিমেন্টে একটি ফাংশন প্রয়োগ করে। ফাংশনটি সেইসব অপারেশনকে সংজ্ঞায়িত করে
যা সংগ্রহের প্রতিটি এলিমেন্টে প্রয়োগ করা হবে। আপনি
JavaScript টিউটোরিয়ালে একটি সহজ ফাংশন দেখেছেন, কিন্তু
এখন আমরা এমন একটি ফাংশন তৈরি করতে চলেছি যাতে Earth Engine-এর কার্যকারিতা অন্তর্ভুক্ত আছে। যেমন,
আগের NDVI কোডটি এমন একটি ফাংশনে কপি করুন যা NDVI ব্যান্ড সহ ইনপুট ছবি রিটার্ন করে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // Test the addNDVI function on a single image. var ndvi = addNDVI(image).select('NDVI');
এই কোডটি একটি ছবির জন্য NDVI গণনা করার জন্য ততটা কার্যকর নাও হতে পারে, তবে এই
ফাংশনটি map()-এর আর্গুমেন্ট হিসেবে ব্যবহার করা যেতে পারে যাতে সংগ্রহের প্রতিটি ছবিতে
একটি NDVI ব্যান্ড যোগ করা যায়। ফাংশনটি আপনার প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করতে, প্রথমে একটি
ছবিতে ফাংশনটি পরীক্ষা করা প্রায়শই কার্যকর হয়। আপনি কোনও একটি ছবিতে ফাংশনটি পরীক্ষা করে
দেখেছেন এবং এটি আপনার পছন্দমতো কাজ করে বলে নির্ধারণ করেছেন, আপনি এটি
কালেকশন জুড়ে ম্যাপ করতে পারেন:
কোড এডিটর (জাভাস্ক্রিপ্ট)
var withNDVI = l8.map(addNDVI);
এই কালেকশনের প্রতিটি ছবিতে এটি সত্যিই একটি NDVI ব্যান্ড যোগ করছে কিনা তা যাচাই করতে,
আপনি ম্যাপে withNDVI কালেকশন যোগ করতে পারেন এবং Inspector ট্যাবের মাধ্যমে
যেকোনও লোকেশন কোয়েরি করতে পারেন। আপনি লক্ষ্য করবেন যে, সংগ্রহের প্রতিটি ছবিতে এখন
NDVI নামে একটি ব্যান্ড আছে।
সবচেয়ে সবুজ পিক্সেল কম্পোজিট তৈরি করুন
এখন আপনি এমন একটি ছবির কালেকশন তৈরি করেছেন যেখানে প্রতিটি ছবিতে একটি NDVI ব্যান্ড আছে, আমরা
কম্পোজিট তৈরি করার একটি নতুন উপায় এক্সপ্লোর করতে পারি: qualityMosaic()। আপনি হয়ত লক্ষ্য করেছেন যে
Landsat পাথের মধ্যে ধারাবাহিকতা নেই, এমনকি মিডিয়ান পিক্সেল কম্পোজিটেও। এর একটি কারণ হতে পারে
ফেনোলজি-এর পার্থক্য, কারণ
সংলগ্ন পথের ছবিগুলি বিভিন্ন সময়ে (বিশেষ করে, ৮ দিনের ব্যবধানে) সংগ্রহ করা হয়। এটি কমানোর
একটি উপায় হল, কম্পোজিটে পিক্সেল ভ্যালু মোটামুটি একই ফেনোলজিক্যাল স্টেজ থেকে সেট করার চেষ্টা করা,
যেমন, উদ্ভিদের সর্বাধিক সবুজ থাকার সময় (যখন পাতা থাকে এবং
সালোকসংশ্লেষের জন্য সক্রিয় থাকে)। আমরা যদি সর্বাধিক NDVI-এর মাধ্যমে সর্বাধিক সবুজতা নির্ধারণ করি, তাহলে
qualityMosaic() ব্যবহার করে
এমন একটি কম্পোজিট তৈরি করতে পারি যেখানে প্রতিটি পিক্সেলে সংগ্রহ থেকে সর্বাধিক NDVI পিক্সেল থাকে।
এখন আপনি নিজের withNDVI সংগ্রহে যোগ করা NDVI ব্যান্ড ব্যবহার করতে পারবেন:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Make a "greenest" pixel composite. var greenest = withNDVI.qualityMosaic('NDVI'); // Display the result. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(greenest, visParams, 'Greenest pixel composite');
এই কোডের ফলাফল চিত্র ৯-এর মতো দেখতে হবে। ছবি ৬-এ দেখানো মিডিয়ান কম্পোজিটের সাথে
ছবি ৯-এর তুলনা করে
দেখুন যে সবচেয়ে সবুজ পিক্সেল কম্পোজিটটি সত্যিই অনেক বেশি সবুজ। তবে, জলাশয়গুলি
ভালোভাবে পরীক্ষা করলে অন্য একটি সমস্যা স্পষ্ট হয়ে উঠবে। বিশেষ করে,
জলাশয় এখন মেঘলা দেখায়। qualityMosaic()
পদ্ধতি যেভাবে কাজ করে তার কারণে এটি হয়: প্রতিটি লোকেশনে, সম্পূর্ণ টাইম সিরিজ পরীক্ষা করা হয় এবং NDVI ব্যান্ডে সর্বাধিক মান সহ পিক্সেলকে
কম্পোজিট ভ্যালু হিসেবে সেট করা হয়। NDVI-এর মান জলের চেয়ে মেঘের উপর বেশি হওয়ার কারণে, জলাশয়গুলি মেঘলা পিক্সেল হিসেবে দেখা যায়, অন্যদিকে গাছপালাযুক্ত অঞ্চলগুলি সবুজ দেখায়
কারণ পিক্সেলের গাছপালা সালোকসংশ্লেষের দিক থেকে সক্রিয় থাকলে NDVI-এর মান সবচেয়ে বেশি হয়।
এখন আপনি Earth Engine-এ কম্পোজিট ও মোজাইক ছবি তৈরি করার বিভিন্ন উপায় দেখেছেন। আপনি সময় ও স্থান অনুযায়ী ফিল্টার করা ছবি অথবা সংগ্রহের সব ছবি থেকে সাম্প্রতিক-ভ্যালু, মিডিয়ান অথবা গ্রিনেস্ট-পিক্সেল কম্পোজিট তৈরি করতে পারবেন। আপনি শিখেছেন কীভাবে ইমেজারিতে কম্পিউটেশন করতে হয় এবং তথ্য এক্সট্র্যাক্ট করতে হয়। পরবর্তী পৃষ্ঠায় Earth Engine থেকে তথ্য পাওয়ার উপায় সম্পর্কে আলোচনা করা হয়েছে, যেমন, আপনার Google Drive ফোল্ডারে এক্সপোর্ট করা চার্ট বা ডেটাসেট।