Landsat 8 TOA প্রতিফলন সংগ্রহটি l8
নামক একটি ভেরিয়েবলে লোড করার সাথে, আপনি দেখেছেন যে নিম্নলিখিত কোডটি একটি সাম্প্রতিক-মানের সংমিশ্রণে পরিণত হয়েছে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31'); Map.addLayer(landsat2016, visParams, 'l8 collection');
এই কম্পোজিটের সমস্যাগুলির মধ্যে একটি হল এটি মেঘে পূর্ণ। সংগ্রহে শুধুমাত্র শেষ পিক্সেল নেওয়ার পরিবর্তে (যখন আপনি মানচিত্রে একটি সংগ্রহ যোগ করেন, আর্থ ইঞ্জিন স্পষ্টভাবে এটিতে mosaic()
কল করে), আপনি ImageCollection
কমাতে পারেন ( চিত্র সংগ্রহ হ্রাস সম্পর্কে আরও জানুন )।
Reducers সঙ্গে কম্পোজিটিং
একটি চিত্র অঞ্চলে পরিসংখ্যান পাওয়ার জন্য আপনাকে প্রথমে রিডুসারদের সাথে পরিচয় করিয়ে দেওয়া হয়েছিল। এটি একটি স্থানিক হ্রাস ছিল। একটি চিত্র সংগ্রহকে একটি চিত্রে হ্রাস করা একটি সাময়িক হ্রাস যখন সংগ্রহটি সময়ের সাথে চিত্রগুলিকে উপস্থাপন করে। আপনি যে ধরনের Reducer
ব্যবহার করেন তা নির্ধারণ করে কিভাবে আর্থ ইঞ্জিন ওভারল্যাপিং পিক্সেল পরিচালনা করে। ল্যান্ডস্যাট 8 প্রতি 16 দিনে পৃথিবীর একই স্থান পরিদর্শন করে। এর মানে হল যে 6 মাসের সময়কালে, প্রায় 12টি ছবি থাকবে (এবং আরও যেখানে দৃশ্যগুলি ওভারল্যাপ হয়)। মানচিত্রের প্রতিটি পিক্সেল পিক্সেলের একটি স্ট্যাক থেকে প্রাপ্ত - সংগ্রহে প্রদর্শিত প্রতিটি চিত্র থেকে একটি।
শুধুমাত্র ম্যাপে সংগ্রহ যোগ করার ফলে সবচেয়ে সাম্প্রতিক পিক্সেল নির্বাচন করা হয় - স্ট্যাকের সাম্প্রতিক চিত্র থেকে একটি। আর্থ ইঞ্জিন রিডুসার ব্যবহার করে এই আচরণ পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ, স্ট্যাক থেকে সাম্প্রতিক পিক্সেল নেওয়ার পরিবর্তে, আর্থ ইঞ্জিনকে স্ট্যাকের মধ্যম মান বাছাই করার নির্দেশ দেওয়া যেতে পারে। এটি মেঘ (যার উচ্চ মান আছে) এবং ছায়া (যার মান কম) অপসারণের সুবিধা রয়েছে। যখন মিডিয়ান রিডুসার ব্যবহার করে একটি চিত্র সংগ্রহ হ্রাস করা হয়, তখন যৌগিক মানটি সময়ের সাথে সাথে প্রতিটি ব্যান্ডের মধ্যম হয়। উদাহরণস্বরূপ, 2016 সালে ল্যান্ডস্যাট দৃশ্য ব্যবহার করে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Get the median over time, in each band, in each pixel. var median = l8.filterDate('2016-01-01', '2016-12-31').median(); // Make a handy variable of visualization parameters. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; // Display the median composite. Map.addLayer(median, visParams, 'median');
এই কোডের নতুন জিনিস হল median()
পদ্ধতিটি একটি চিত্র সংগ্রহে প্রয়োগ করা হয়েছে। ফিল্টারিং পদ্ধতির মতো, এটি ইমেজ সংগ্রহে আরও সাধারণ reduce()
পদ্ধতির জন্য একটি শর্টকাট যা একটি ee.Reducer()
একটি যুক্তি হিসেবে নেয়। সমস্ত আর্থ ইঞ্জিন হ্রাসকারীর তালিকা দেখতে কোড এডিটরের ডক্স ট্যাবে ee.Reducer
প্যাকেজটি দেখুন। একটি চিত্র সংগ্রহের জন্য একটি হ্রাসকারী বিবেচনা করার সময়, মনে রাখবেন যে আউটপুটটি একটি চিত্র, তাই অ-সংখ্যাসূচক আউটপুট সহ রিডুসারগুলি, উদাহরণস্বরূপ histogram
বা toList
রিডুসারগুলি, একটি চিত্র সংগ্রহের সাথে কাজ করবে না।

আপনি যখন মধ্যম কম্পোজিট জুম আউট করেন, তখন আপনি চিত্র 6 এর মত কিছু দেখতে পাবেন। এটি আপনার পূর্বে তৈরি সাম্প্রতিক মান কম্পোজিট থেকে যথেষ্ট ভাল দেখা উচিত। এই মুহুর্তে, এটি পিছিয়ে যাওয়া এবং সেই মধ্যক কম্পোজিট করার জন্য কী করা হয়েছে তা বিবেচনা করা মূল্যবান। আর্থ ইঞ্জিন মহাদেশীয় মার্কিন যুক্তরাষ্ট্রে সমগ্র ল্যান্ডস্যাট 8 সংগ্রহ লোড করেছে, এবং প্রতি পিক্সেলের জন্য মধ্যম গণনা করেছে। এটা অনেক ডাটা! অবশ্যই, আপনি বার্ষিক মিডিয়ান গণনা করতে পারেন, প্রথমে সংগ্রহটি ফিল্টার করে, যেমন আপনি আগে করেছেন ৷ বিন্দু হল যে আপনি যদি সেই সমস্ত চিত্র ডাউনলোড করে এই সংমিশ্রণটি তৈরি করতে চান তবে এটি একটি বড় প্রকল্প হবে। আর্থ ইঞ্জিনের সাথে, আপনি সেকেন্ডের মধ্যে একটি ফলাফল পাবেন!
এখানে কম্পোজিটিং এবং মোজাইকিং সম্পর্কে আরও জানুন।
মাস্কিং
যদিও মিডিয়ান কম্পোজিট সাম্প্রতিক-মানের কম্পোজিটের তুলনায় একটি উন্নতি, আপনি চিত্রের অংশগুলিকে মাস্ক করতে চাইতে পারেন। একটি ছবিতে পিক্সেল মাস্ক করা সেই পিক্সেলগুলিকে স্বচ্ছ করে এবং বিশ্লেষণ থেকে বাদ দেয়। একটি ছবির প্রতিটি ব্যান্ডের প্রতিটি পিক্সেলের একটি মুখোশ থাকে। যাদের মুখোশের মান 0 বা তার কম তারা স্বচ্ছ হবে। যাদের মাস্ক 0 এর উপরে যেকোন মানের হবে তাদের রেন্ডার করা হবে। image1.mask(image2)
এর মত একটি কল ব্যবহার করে একটি ছবির মাস্ক সেট করা হয়। এই কলটি image2
এর মান নেয় এবং তাদেরকে image1
এর মাস্ক করে তোলে। image2
এর যেকোনো পিক্সেল যার মান 0 আছে তা image1
এ স্বচ্ছ করা হবে।
উদাহরণস্বরূপ, ধরুন আপনি মধ্যম কম্পোজিটের সমস্ত জলের পিক্সেলকে মাস্ক করতে চান। হ্যানসেন এট আল দ্বারা বর্ণিত ডেটাসেট ব্যবহার করে একটি জলের মুখোশ তৈরি করা যেতে পারে। (2013) যা আর্থ ইঞ্জিন ডেটা ক্যাটালগে রয়েছে। ( এই টিউটোরিয়ালে হ্যানসেন এবং অন্যান্য ডেটাসেট সম্পর্কে আরও জানুন।) এই ডেটাসেটে, জলের মান 2, জমির মান 1 এবং 'কোন ডেটা নেই'-এর মান 0 রয়েছে। একটি মুখোশ চিত্র তৈরি করতে কিছুটা যুক্তি ব্যবহার করুন যেখানে শূন্য রয়েছে যেখানে কোনও জমি নেই:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load or import the Hansen et al. forest change dataset. var hansenImage = ee.Image('UMD/hansen/global_forest_change_2015'); // Select the land/water mask. var datamask = hansenImage.select('datamask'); // Create a binary mask. var mask = datamask.eq(1); // Update the composite mask with the water mask. var maskedComposite = median.updateMask(mask); Map.addLayer(maskedComposite, visParams, 'masked');
এই কোডে কয়েকটি নতুন জিনিস রয়েছে যা বিস্তারিতভাবে উল্লেখ করার মতো। প্রথমত, select()
ফাংশনটি একটি ইমেজ থেকে আগ্রহের ব্যান্ড বের করার জন্য উপযোগী। এখানে, আমরা শুধুমাত্র সেই ব্যান্ডটি নির্বাচন করি যা আমরা যত্ন করি: datamask
। পরবর্তী নতুন জিনিস হল লজিক্যাল অপারেটর eq()
যার অর্থ "equals"। আমরা একটি বাইনারি ইমেজ তৈরি করতে eq(1)
ব্যবহার করি যাতে datamask
ব্যান্ডে 1 এর মান নেই এমন সমস্ত পিক্সেল (যেগুলি জল বা ডেটা নেই) ফলে চিত্রটিতে 0 এর মান পায়।
এই মাস্কিংয়ের ফলস্বরূপ, মধ্যক কম্পোজিটের সমস্ত পিক্সেল যেগুলি জমির উপরে রয়েছে ( হ্যানসেন এট আল। ডেটাসেট অনুসারে) দৃশ্যমান, তবে জলের উপরে থাকা (বা নোডাটা) স্বচ্ছ এবং maskedComposite
চিত্রে আপনি যে কোনও বিশ্লেষণ থেকে বাদ দেওয়া হবে।
মোজাইকিং
ইমেজ সংগ্রহ, লজিক্যাল অপারেটর, মাস্কিং এবং কম্পোজিংয়ের ধারণাগুলিকে একত্রিত করে, আপনি আকর্ষণীয় কার্টোগ্রাফিক ফলাফল অর্জন করতে পারেন। উদাহরণস্বরূপ, ধরুন আপনি এমন একটি চিত্র চান যাতে ল্যান্ড পিক্সেলগুলি সত্য-রঙে প্রদর্শিত হয় এবং অন্যান্য সমস্ত পিক্সেল নীল রঙে প্রদর্শিত হয়, আপনি এরকম কিছু করতে পারেন:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Make a water image out of the mask. var water = mask.not(); // Mask water with itself to mask all the zeros (non-water). water = water.mask(water); // Make an image collection of visualization images. var mosaic = ee.ImageCollection([ median.visualize(visParams), water.visualize({palette: '000044'}), ]).mosaic(); // Display the mosaic. Map.addLayer(mosaic, {}, 'custom mosaic');
সেই কোডে অনেক কিছু চলছে, তাই এর ব্যবচ্ছেদ করা যাক। প্রথমত, আমরা আগে তৈরি করা মাস্কটিকে উল্টাতে not()
লজিক্যাল অপারেটর ব্যবহার করি। বিশেষভাবে, not()
সমস্ত শূন্যকে এক এবং সমস্ত অ-শূন্যকে শূন্যে পরিণত করে। এই পরিবর্তনশীল water
বলা সম্পূর্ণরূপে সঠিক নয় কারণ এতে কিছু নোডাটা পিক্সেলও রয়েছে, তবে বর্তমান কার্টোগ্রাফিক প্রসঙ্গে এটি ঠিক আছে। পরের জিনিসটি নিজের সাথে "জল" মাস্ক করা। এর ফলে এমন একটি চিত্র দেখা যায় যেখানে সমস্ত জলের পিক্সেল 1 এর এবং বাকি সবকিছু মুখোশযুক্ত। চূড়ান্ত পদক্ষেপ হল ছবিগুলিকে mosaic()
দিয়ে একত্রিত করা। যেহেতু mosaic()
একটি ইমেজ কালেকশনে কাজ করে, তাই আমরা ইমেজ কালেকশন কনস্ট্রাক্টরের সাথে একত্রিত করতে চাই এমন ইমেজগুলির একটি তালিকা পাস করি, তারপর mosaic()
চূড়ান্ত ধাপ হিসেবে কল করি। সেই তালিকার ছবির ক্রম গুরুত্বপূর্ণ। বিশেষত, আউটপুট ইমেজ ইনপুট সংগ্রহের ইমেজের স্ট্যাক থেকে শেষ আনমাস্কড পিক্সেল ধারণ করবে। এই ক্ষেত্রে, এটি কাজ করে কারণ জলের স্তরটি সংগ্রহের শেষ (শীর্ষ) চিত্র, এবং যেখানে জল আসে সেখানে শুধুমাত্র মুখোশবিহীন পিক্সেল থাকে৷
উল্লেখ্য যে সংগ্রহে থাকা ছবিগুলো ভিজ্যুয়ালাইজেশন ইমেজ । যখন আপনি একটি চিত্রে visualize()
কল করেন, তখন আপনি যে ভিজ্যুয়ালাইজেশন প্যারামিটারগুলি পাস করেন সে অনুযায়ী এটি একটি 3-ব্যান্ড, 8-বিট ছবিতে পরিণত হয়৷ ডিফল্ট ভিজ্যুয়ালাইজেশন প্যারামিটারগুলি 3-ব্যান্ড, 8-বিট চিত্রগুলির জন্য ভাল কাজ করে, তাই আপনি মানচিত্রে চিত্রটি যুক্ত করার সময় আপনার ভিজ্যুয়ালাইজেশন প্যারামিটারের প্রয়োজন নেই৷ ফলাফল চিত্র 7 এর মত হওয়া উচিত।

এই মুহুর্তে, আপনি সাম্প্রতিক-মূল্যের কম্পোজিট হিসাবে চিত্র সংগ্রহগুলিকে কল্পনা করার উপায়গুলি, রিডিউসার ব্যবহার করে চিত্র সংগ্রহগুলিকে কম্পোজ করার পদ্ধতি এবং চিত্রগুলির একটি সংগ্রহকে মাস্কিং এবং মোজাইক করে কাস্টম কম্পোজিট তৈরি করার পদ্ধতিগুলি দেখেছেন৷ পরবর্তী পৃষ্ঠায়, একটি সংগ্রহের প্রতিটি ছবিতে কীভাবে একটি উদ্ভিদ সূচক যুক্ত করতে হয় এবং একটি "সবুজ পিক্সেল" সংমিশ্রণ করতে সূচকটি ব্যবহার করতে হয় তা শিখুন৷