আসুন, এমন একটি ব্যান্ড তৈরি করার জন্য প্রয়োজনীয় গণনা দিয়ে শুরু করা যাক যা পিক্সেল দেখায় যেখানে Hansen et al. ডেটা ক্ষতি এবং লাভ উভয়ই দেখায়।
Hansen et al. ডেটাসেটে একটি ব্যান্ড আছে যার পিক্সেল হল ১ যেখানে ক্ষতি হয়েছে এবং
অন্যথায় ০ (loss) এবং একটি ব্যান্ড যা হল ১ যেখানে লাভ হয়েছে এবং অন্যথায়
০ (gain)। এমন একটি ব্যান্ড তৈরি করতে যেখানে loss এবং
gain উভয় ব্যান্ডের পিক্সেল ১, আপনি ছবিতে
and() লজিক্যাল পদ্ধতি ব্যবহার করতে পারেন। and() পদ্ধতিটি
image1.and(image2)-এর মতো করে কল করা হয় এবং এমন একটি ছবি রিটার্ন করে যেখানে পিক্সেল হল ১, image1 এবং image2 উভয়ই ১ এবং অন্য কোথাও ০:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load the data and select the bands of interest. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var gainImage = gfc2014.select(['gain']); // Use the and() method to create the lossAndGain image. var gainAndLoss = gainImage.and(lossImage); // Show the loss and gain image. Map.addLayer(gainAndLoss.updateMask(gainAndLoss), {palette: 'FF00FF'}, 'Gain and Loss');
ফলাফল, স্যাটেলাইট ভিউ সহ আরকানসাসে জুম-ইন করা, চিত্র ১-এর মতো কিছু দেখতে হবে।
এই উদাহরণটি আগের বিভাগ থেকে পাওয়া ফলাফলের সাথে একত্রিত করে, টিউটোরিয়ালের শুরু থেকে চিত্রটি আবার তৈরি করা এখন সম্ভব:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Displaying forest, loss, gain, and pixels where both loss and gain occur. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var gainImage = gfc2014.select(['gain']); var treeCover = gfc2014.select(['treecover2000']); // Use the and() method to create the lossAndGain image. var gainAndLoss = gainImage.and(lossImage); // Add the tree cover layer in green. Map.addLayer(treeCover.updateMask(treeCover), {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover'); // Add the loss layer in red. Map.addLayer(lossImage.updateMask(lossImage), {palette: ['FF0000']}, 'Loss'); // Add the gain layer in blue. Map.addLayer(gainImage.updateMask(gainImage), {palette: ['0000FF']}, 'Gain'); // Show the loss and gain image. Map.addLayer(gainAndLoss.updateMask(gainAndLoss), {palette: 'FF00FF'}, 'Gain and Loss');
আগ্রহের অঞ্চলে জঙ্গলের পরিবর্তন পরিমাপ করা
এখন আপনি Hansen et al. ডেটাসেটের ব্যান্ড সম্পর্কে আরও ভালভাবে জানেন, তাই আমরা
এখনও পর্যন্ত শেখা ধারণা ব্যবহার করে আগ্রহের অঞ্চলে বনভূমি বৃদ্ধি ও হ্রাসের ব্যাপারে
পরিসংখ্যান গণনা করতে পারি। এর জন্য আমাদের ভেক্টর ডেটা (পয়েন্ট, লাইন ও পলিগন) ব্যবহার করতে হবে। Earth Engine-এ
ভেক্টর ডেটাসেটকে FeatureCollection হিসেবে দেখানো হয়।
(ফিচার কালেকশন এবং কীভাবে ভেক্টর ডেটা ইমপোর্ট করতে হয় সেই সম্পর্কে আরও জানুন।)
এই বিভাগে, আমরা ২০১২ সালে কঙ্গো প্রজাতন্ত্রে মোট বনভূমি ধ্বংসের পরিমাণের সাথে একই সময়ে দেশের সংরক্ষিত এলাকার মধ্যে বনভূমি ধ্বংসের পরিমাণের তুলনা করব।
Earth Engine API টিউটোরিয়াল থেকে আপনি যেমন জেনেছেন, কোনও ছবির অঞ্চলে পরিসংখ্যান গণনা করার মূল পদ্ধতি হল
reduceRegion()। (ছবির অঞ্চল কমানো সম্পর্কে
আরও জানুন।) যেমন, ধরুন আমরা স্টাডি পিরিয়ডে বনভূমি ধ্বংসের পরিমাণ দেখানোর জন্য
আনুমানিক পিক্সেলের সংখ্যা গণনা করতে চাই। সেই উদ্দেশ্যে, নিম্নলিখিত কোডটি
বিবেচনা করুন:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); // Sum the values of forest loss pixels in the Congo Republic. var stats = lossImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30 }); print(stats);
এই উদাহরণে congo ফিচারের মধ্যে lossImage-এ পিক্সেলের ভ্যালু যোগ করতে ee.Reducer.sum() রিডিউসার ব্যবহার করা হয়। যেহেতু
lossImage-এ এমন পিক্সেল আছে যার ভ্যালু ১ বা ০ (যথাক্রমে ক্ষতি বা ক্ষতি না হওয়ার জন্য),
এইসব ভ্যালুর যোগফল ওই অঞ্চলে ক্ষতির পিক্সেলের সংখ্যার
সমান।
স্ক্রিপ্টটি যেমন আছে তেমনভাবে রান করলে এই ধরনের সমস্যা হতে পারে:
reduceRegion()-এ ডিফল্ট সর্বাধিক পিক্সেল সংখ্যা হল
১ কোটি। এই
সমস্যার মেসেজ থেকে বোঝা যায় যে কঙ্গো প্রজাতন্ত্র প্রায় ৩৮৩ মিলিয়ন ল্যান্ডস্যাট
পিক্সেল কভার করে। ভাগ্যক্রমে, reduceRegion()
অনেক প্যারামিটার নেয়, যার মধ্যে একটি (maxPixels) আপনাকে গণনাতে কতগুলি
পিক্সেল ব্যবহার করা হবে তা নিয়ন্ত্রণ করতে দেয়। এই প্যারামিটার উল্লেখ করলে কম্পিউটেশন সফল হয়:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); // Sum the values of forest loss pixels in the Congo Republic. var stats = lossImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30, maxPixels: 1e9 }); print(stats);
কনসোলে প্রিন্ট করা অবজেক্টটি বড় করে দেখুন যে ফলাফল হল
৪৮৯৭৯৩৩ পিক্সেল বনভূমি ধ্বংস হয়েছে। আপনি কনসোলে প্রিন্টআউট কিছুটা পরিষ্কার করতে পারেন
আউটপুট লেবেল করে এবং reduceRegion()-এর মাধ্যমে ফেরত আসা ডিকশনারি থেকে
আগ্রহের ফলাফল পেয়ে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
print('pixels representing loss: ', stats.get('loss'));
পিক্সেল এরিয়া গণনা করা হচ্ছে
কঙ্গো প্রজাতন্ত্রে কতটা এলাকা নষ্ট হয়েছে এবং তার মধ্যে কতটা সুরক্ষিত এলাকা ছিল,
সেই প্রশ্নের উত্তর দেওয়ার জন্য আপনি প্রায় প্রস্তুত। বাকি অংশটি হল পিক্সেলকে
আসল এলাকায় কনভার্ট করা। এই কনভার্সন গুরুত্বপূর্ণ কারণ reduceRegion()-এ ইনপুট করা পিক্সেলের সাইজ
আমরা নাও জানতে পারি। এরিয়া গণনা করতে সাহায্য করার জন্য, Earth
Engine-এ ee.Image.pixelArea() পদ্ধতি আছে যা এমন একটি ছবি তৈরি করে
যেখানে প্রতিটি পিক্সেলের ভ্যালু হল বর্গ মিটারে পিক্সেলের এরিয়া। এই এলাকার ছবির সাথে
ক্ষতির ছবি গুণ করে এবং তারপর ফলাফল যোগ করলে আমরা এলাকার পরিমাপ
পাই:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var areaImage = lossImage.multiply(ee.Image.pixelArea()); // Sum the values of forest loss pixels in the Congo Republic. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30, maxPixels: 1e9 }); print('pixels representing loss: ', stats.get('loss'), 'square meters');
এখন ফলাফল হল, সমীক্ষার সময়সীমা জুড়ে ৪,৩৭২,৫৭৫,০৫২ বর্গ মিটার হারিয়ে গেছে।
এই বিভাগের শুরুতে যে প্রশ্নটি করা হয়েছিল, আপনি এখন সেটির উত্তর দেওয়ার জন্য প্রস্তুত - ২০১২ সালে কঙ্গো প্রজাতন্ত্রে কতটা বনাঞ্চল ধ্বংস হয়েছিল এবং তার মধ্যে কতটা সংরক্ষিত এলাকা ছিল?
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = ee.Feature( countries .filter(ee.Filter.eq('country_na', 'Rep of the Congo')) .first() ); // Subset protected areas to the bounds of the congo feature // and other criteria. Clip to the intersection with congo. var protectedAreas = ee.FeatureCollection('WCMC/WDPA/current/polygons') .filter(ee.Filter.and( ee.Filter.bounds(congo.geometry()), ee.Filter.neq('IUCN_CAT', 'VI'), ee.Filter.neq('STATUS', 'proposed'), ee.Filter.lt('STATUS_YR', 2010) )) .map(function(feat){ return congo.intersection(feat); }); // Get the loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossIn2012 = gfc2014.select(['lossyear']).eq(12); var areaImage = lossIn2012.multiply(ee.Image.pixelArea()); // Calculate the area of loss pixels in the Congo Republic. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo.geometry(), scale: 30, maxPixels: 1e9 }); print( 'Area lost in the Congo Republic:', stats.get('lossyear'), 'square meters' ); // Calculate the area of loss pixels in the protected areas. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: protectedAreas.geometry(), scale: 30, maxPixels: 1e9 }); print( 'Area lost in protected areas:', stats.get('lossyear'), 'square meters' );
আউটপুট থেকে বোঝা যায় যে ২০১২ সালে কঙ্গো প্রজাতন্ত্রে ৩৪৮,০৩৬,২৯৫ বর্গ মিটার বনাঞ্চল ধ্বংস হয়েছে, যার মধ্যে ১১,৮৮০,৯৭৬ বর্গ মিটার সুরক্ষিত এলাকায় ছিল, যেমনটি সুরক্ষিত এলাকার বিশ্ব ডেটাবেস টেবিলে দেখানো হয়েছে।
এই স্ক্রিপ্ট এবং ঠিক আগের স্ক্রিপ্টের মধ্যে একমাত্র পরিবর্তন হল সুরক্ষিত এলাকার তথ্য যোগ করা এবং স্ক্রিপ্টটি সামগ্রিক ক্ষতির পরিবর্তে ২০১২ সালের ক্ষতির দিকে নজর দেওয়ার জন্য পরিবর্তন করা। এর জন্য দুটি পরিবর্তন করতে হবে। প্রথমে, একটি নতুন lossIn2012
ছবি আছে যেখানে ২০১২ সালে ক্ষতি রেকর্ড করা হয়েছে সেখানে ১ আছে, অন্যথায় ০ আছে। দ্বিতীয়ত, ব্যান্ডের নাম আলাদা হওয়ার কারণে (loss-এর পরিবর্তে lossyear) প্রিন্ট স্টেটমেন্টে প্রপার্টির নাম পরিবর্তন করতে হয়েছে।
পরবর্তী বিভাগে, আমরা প্রতি বছরের জন্য বনভূমি ধ্বংসের পরিমাণ গণনা এবং চার্ট করার কিছু উন্নত পদ্ধতি অন্বেষণ করব, এই বিভাগে আমরা যেমন করেছি, শুধু এক বছরের জন্য নয়।