आइए, उस बैंड को बनाने के लिए ज़रूरी कैलकुलेशन से शुरू करते हैं जो उन पिक्सल को दिखाता है जहां हैन्सन वगैरह के डेटा में, जंगल के नुकसान और फ़ायदे, दोनों को दिखाया गया है.
हैनसेन और अन्य लोगों के डेटासेट में एक ऐसा बैंड है जिसके पिक्सल 1 हैं. ऐसा तब होता है, जब वनस्पति का नुकसान हुआ हो. इसके अलावा, अन्य मामलों में पिक्सल 0 होते हैं (loss
). साथ ही, एक ऐसा बैंड है जिसके पिक्सल 1 हैं. ऐसा तब होता है, जब वनस्पति में बढ़ोतरी हुई हो. इसके अलावा, अन्य मामलों में पिक्सल 0 होते हैं (gain
). loss
और gain
, दोनों बैंड में पिक्सल को 1 पर सेट करने के लिए, इमेज पर and()
लॉजिकल तरीके का इस्तेमाल किया जा सकता है. and()
तरीके को image1.and(image2)
कहा जाता है. यह एक ऐसी इमेज दिखाता है जिसमें पिक्सल 1 होते हैं. ऐसा तब होता है, जब image1 और image2, दोनों 1 हों. इसके अलावा, अन्य जगहों पर पिक्सल 0 होते हैं:
कोड एडिटर (JavaScript)
// 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');
ज़ूम इन करके अरकंसास का सैटेलाइट व्यू देखने पर, नतीजे में दिखने वाली इमेज कुछ इस तरह की होनी चाहिए.

इस उदाहरण को पिछले सेक्शन के नतीजे के साथ मिलाकर, अब ट्यूटोरियल की शुरुआत में दिए गए फ़िगर को फिर से बनाया जा सकता है:
कोड एडिटर (JavaScript)
// 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
के तौर पर दिखाया जाता है.
(फ़ीचर कलेक्शन और वेक्टर डेटा इंपोर्ट करने के तरीके के बारे में ज़्यादा जानें.)
इस सेक्शन में, हम साल 2012 में कांगो गणराज्य में हुई वन क्षेत्र की कुल कमी की तुलना, उसी समय देश के संरक्षित क्षेत्रों में हुई वन क्षेत्र की कमी से करेंगे.
आपने Earth Engine API के ट्यूटोरियल में सीखा था कि किसी इमेज के क्षेत्र में आंकड़ों का हिसाब लगाने का मुख्य तरीका reduceRegion()
है. (इमेज के क्षेत्रों को कम करने के बारे में ज़्यादा जानें.) उदाहरण के लिए, मान लें कि हमें स्टडी की अवधि के दौरान जंगल के नुकसान को दिखाने के लिए अनुमानित पिक्सल की संख्या का हिसाब लगाना है. इसके लिए, यहां दिया गया कोड देखें:
कोड एडिटर (JavaScript)
// 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
में ऐसे पिक्सल होते हैं जिनकी वैल्यू 1 या 0 होती है. 1 का मतलब है कि पिक्सल में बदलाव हुआ है और 0 का मतलब है कि बदलाव नहीं हुआ है. इसलिए, इन वैल्यू का योग, इलाके में बदलाव वाले पिक्सल की संख्या के बराबर होता है.
माफ़ करें, स्क्रिप्ट को ऐसे ही चलाने पर, इस तरह की गड़बड़ी होती है:
reduceRegion()
में पिक्सल की डिफ़ॉल्ट संख्या 1 करोड़ होती है. इस गड़बड़ी के मैसेज से पता चलता है कि कॉन्गो रिपब्लिक में Landsat के करीब 38.3 करोड़ पिक्सल शामिल हैं. अच्छी बात यह है कि reduceRegion()
फ़ंक्शन में कई पैरामीटर इस्तेमाल किए जा सकते हैं. इनमें से एक पैरामीटर (maxPixels
) की मदद से, यह कंट्रोल किया जा सकता है कि कैलकुलेशन में कितने पिक्सल इस्तेमाल किए जाएं. इस पैरामीटर को सेट करने से, कैलकुलेशन सही तरीके से हो पाती है:
कोड एडिटर (JavaScript)
// 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);
कंसोल में प्रिंट किए गए ऑब्जेक्ट को बड़ा करके देखें कि नतीजे में, 48,97,933 पिक्सल का जंगल नष्ट हुआ है. कंसोल में प्रिंटआउट को थोड़ा सा बेहतर बनाया जा सकता है. इसके लिए, आउटपुट को लेबल करें और reduceRegion()
से मिले डिक्शनरी से अपनी पसंद का नतीजा पाएं:
कोड एडिटर (JavaScript)
print('pixels representing loss: ', stats.get('loss'));
पिक्सल एरिया का हिसाब लगाना
अब आपके पास इस सवाल का जवाब देने के लिए ज़रूरी जानकारी है कि कॉन्गो गणराज्य में कितना वन क्षेत्र खत्म हुआ और उसमें से कितना हिस्सा संरक्षित क्षेत्रों में था. बाकी काम, पिक्सल को असल एरिया में बदलना है. यह कन्वर्ज़न ज़रूरी है, क्योंकि हमें यह नहीं पता होता कि reduceRegion()
में इनपुट किए गए पिक्सल का साइज़ क्या है. क्षेत्रफल का हिसाब लगाने के लिए, Earth Engine में ee.Image.pixelArea()
तरीका उपलब्ध है. इससे एक ऐसी इमेज जनरेट होती है जिसमें हर पिक्सल की वैल्यू, वर्ग मीटर में पिक्सल का क्षेत्रफल होती है. इस एरिया इमेज को लॉस इमेज से गुणा करने के बाद, नतीजे को जोड़ने पर हमें एरिया का मेज़रमेंट मिलता है:
कोड एडिटर (JavaScript)
// 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');
अब नतीजे में बताया गया है कि स्टडी की अवधि के दौरान, 4,37,25,75,052 स्क्वेयर मीटर जंगल नष्ट हो गया.
अब इस सेक्शन की शुरुआत में पूछे गए सवाल का जवाब देने के लिए तैयार हो जाएं. सवाल यह था कि साल 2012 में, कॉन्गो गणराज्य में कितना वन क्षेत्र नष्ट हुआ था और उसमें से कितना क्षेत्र संरक्षित क्षेत्रों में था?
कोड एडिटर (JavaScript)
// 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' );
आउटपुट से पता चलता है कि साल 2012 में कॉन्गो रिपब्लिक में 34,80,36,295 वर्ग मीटर जंगल नष्ट हुआ था. इसमें से 1,18,80,976 वर्ग मीटर जंगल, संरक्षित क्षेत्रों में था. इसकी जानकारी संरक्षित क्षेत्रों के बारे में वर्ल्ड डेटाबेस टेबल में दी गई है.
इस स्क्रिप्ट और इससे ठीक पहले वाली स्क्रिप्ट में सिर्फ़ ये बदलाव किए गए हैं: सुरक्षित क्षेत्र की जानकारी जोड़ी गई है और स्क्रिप्ट को कुल नुकसान के बजाय, 2012 में हुए नुकसान पर फ़ोकस करने के लिए बदला गया है. इसके लिए, दो बदलाव करने पड़े. सबसे पहले, एक नई lossIn2012
इमेज है. इसमें 2012 में जहां नुकसान हुआ था वहां 1 लिखा है. बाकी जगहों पर 0 लिखा है. दूसरी बात, बैंड का नाम अलग होने की वजह से (loss
के बजाय lossyear
), प्रिंट स्टेटमेंट में प्रॉपर्टी का नाम बदलना पड़ा.
अगले सेक्शन में, हम हर साल जंगल के नुकसान का हिसाब लगाने और उसे चार्ट में दिखाने के कुछ बेहतर तरीकों के बारे में जानेंगे. इस सेक्शन में, हमने सिर्फ़ एक साल के डेटा का इस्तेमाल किया था.