आपने पहले यह सीखा था कि इस तरह के कोड का इस्तेमाल करके, Landsat के अलग-अलग सीन कैसे पाए जाते हैं,
जहां l8
और point
, Landsat 8 TOA कलेक्शन और दिलचस्पी वाली जगह की ज्यामिति को दिखाते हैं:
कोड एडिटर (JavaScript)
// 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 + लाल). इससे 1 से -1 के बीच की संख्या मिलती है. इसमें, फ़ोटोसिंथेटिक गतिविधि वाले पिक्सल का एनडीवीआई ज़्यादा होता है. Earth Engine में NDVI का हिसाब लगाने का एक तरीका यह है:
कोड एडिटर (JavaScript)
// 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');
नतीजा, कुछ इस तरह दिखना चाहिए. ध्यान दें कि एनआईआर और रेड बैंड पाने के लिए, हमने select()
फ़ंक्शन का इस्तेमाल किया है. इसके बारे में आपने मास्किंग के बारे में बताने वाले पिछले सेक्शन में सीखा था. इसके बाद, हमने इमेज के गणितीय ऑपरेटरों का इस्तेमाल करके, एनडीवीआई का हिसाब लगाया है. इनके बारे में आपने Image
गणित के बारे में बताने वाले सेक्शन में पहले भी देखा था. आखिर में, इमेज को पैलेट के साथ दिखाएं. यहां हमने पैलेट में हेक्स स्ट्रिंग के बजाय रंगों के नाम इस्तेमाल किए हैं. (ज़्यादा जानकारी के लिए, सीएसएस के रंग के बारे में यह बाहरी रेफ़रंस देखें.)

रिमोट सेंसिंग में, सामान्य किए गए अंतर की कार्रवाई इतनी आम है कि ee.Image
पर एक शॉर्टकट फ़ंक्शन होता है. यह पिछले उदाहरण में कोड को आसान बनाने के लिए काम आता है:
कोड एडिटर (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
किसी कलेक्शन पर फ़ंक्शन को मैप करना
मान लें कि अब आपको इमेज कलेक्शन में मौजूद हर इमेज में NDVI जोड़ना है. Earth Engine में ऐसा करने के लिए, कलेक्शन पर किसी फ़ंक्शन को map()
किया जाता है.
map()
को Map
ऑब्जेक्ट के साथ भ्रमित न करें. पहला, कलेक्शन पर लागू होने वाला एक तरीका है. इसमें पैरलल कंप्यूटिंग के हिसाब से map का इस्तेमाल किया जाता है. इसका मतलब है कि कलेक्शन के हर एलिमेंट पर एक फ़ंक्शन लागू किया जाता है. यह फ़ंक्शन, उन कार्रवाइयों को तय करता है जो कलेक्शन के हर एलिमेंट पर लागू होंगी. आपने JavaScript ट्यूटोरियल में एक सामान्य फ़ंक्शन देखा है. अब हम एक ऐसा फ़ंक्शन बनाने जा रहे हैं जिसमें Earth Engine की सुविधा शामिल होगी. उदाहरण के लिए,
पिछले एनडीवीआई कोड को ऐसे फ़ंक्शन में कॉपी करें जो एनडीवीआई बैंड के साथ इनपुट इमेज दिखाता है:
कोड एडिटर (JavaScript)
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 बैंड जोड़ा जा सके. फ़ंक्शन को आज़माने से पहले, अक्सर यह सलाह दी जाती है कि उसे किसी एक इमेज पर आज़माएं. इससे यह पक्का किया जा सकता है कि फ़ंक्शन आपकी उम्मीद के मुताबिक काम कर रहा है या नहीं. किसी इमेज पर फ़ंक्शन की जांच करने के बाद, अगर आपको लगता है कि यह आपकी ज़रूरत के मुताबिक काम कर रहा है, तो इसे कलेक्शन पर मैप किया जा सकता है:
कोड एडिटर (JavaScript)
var withNDVI = l8.map(addNDVI);
यह पुष्टि करने के लिए कि इस कलेक्शन की हर इमेज में NDVI बैंड मौजूद है, मैप में withNDVI
कलेक्शन जोड़ें. इसके बाद, Inspector टैब की मदद से, किसी भी जगह के बारे में क्वेरी करें. आपको दिखेगा कि कलेक्शन में मौजूद हर इमेज में अब NDVI
नाम का एक बैंड है.
सबसे हरे पिक्सल का कंपोज़िट बनाना
अब आपने एक ऐसा इमेज कलेक्शन बना लिया है जिसमें हर इमेज में एनडीवीआई बैंड है. इसलिए, हम कंपोज़िट बनाने का एक नया तरीका एक्सप्लोर कर सकते हैं: qualityMosaic()
. आपने देखा होगा कि मीडियन पिक्सल कंपोज़िट में भी, Landsat के पाथ के बीच में अंतर होता है. इसकी एक वजह यह हो सकती है कि आस-पास के पाथ की इमेज अलग-अलग समय पर (खास तौर पर, आठ दिनों के अंतर पर) इकट्ठा की गई हैं. इससे फ़िनोलॉजी में अंतर आ सकता है. इस समस्या को कम करने का एक तरीका यह है कि कंपोज़िट में पिक्सल वैल्यू को फ़िनोलॉजिकल स्टेज के हिसाब से सेट किया जाए. उदाहरण के लिए, पौधों के सबसे ज़्यादा हरे होने के समय (जब पत्तियां मौजूद हों और उनमें फ़ोटोसिंथेटिक गतिविधि हो रही हो). अगर हम सबसे ज़्यादा एनडीवीआई को सबसे ज़्यादा हरियाली के तौर पर तय करते हैं, तो हम qualityMosaic()
का इस्तेमाल करके एक ऐसा कंपोज़िट बना सकते हैं जिसमें हर पिक्सल में, कलेक्शन का सबसे ज़्यादा एनडीवीआई पिक्सल शामिल हो.
अब अपने withNDVI
कलेक्शन में जोड़े गए NDVI बैंड का इस्तेमाल किया जा सकता है:
कोड एडिटर (JavaScript)
// 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');
इस कोड का नतीजा, इमेज 9 में दिखाए गए नतीजे जैसा होना चाहिए. छठी इमेज में दिखाए गए मीडियन कंपोज़िट की तुलना में, नौवीं इमेज में दिखाया गया सबसे हरा-भरा पिक्सल कंपोज़िट वाकई में ज़्यादा हरा-भरा है. हालांकि, जलाशयों की बारीकी से जांच करने पर, एक अलग समस्या का पता चलना चाहिए. खास तौर पर, अब जल निकायों की इमेज धुंधली दिखती हैं. ऐसा qualityMosaic()
मेथड के काम करने के तरीके की वजह से होता है: हर जगह, पूरी टाइम सीरीज़ की जांच की जाती है. इसके बाद, एनडीवीआई बैंड में सबसे ज़्यादा वैल्यू वाले पिक्सल को कंपोज़िट वैल्यू के तौर पर सेट किया जाता है. बादलों के ऊपर NDVI की वैल्यू, पानी के ऊपर NDVI की वैल्यू से ज़्यादा होती है. इसलिए, पानी वाले इलाकों में बादलों वाले पिक्सल दिखते हैं. वहीं, वनस्पति वाले सभी इलाके हरे दिखते हैं, क्योंकि पिक्सल में मौजूद वनस्पति के फ़ोटोसिंथेटिक रूप से सक्रिय होने पर NDVI की वैल्यू सबसे ज़्यादा होती है.

अब आपने Earth Engine में इमेज को कंपोज़िट और मोज़ेक करने के कई तरीके देख लिए हैं. समय और जगह के हिसाब से फ़िल्टर की गई इमेज या कलेक्शन में मौजूद सभी इमेज से, हाल की वैल्यू, मीडियन या सबसे हरे पिक्सल वाले कंपोज़िट बनाए जा सकते हैं. आपने इमेज पर कैलकुलेशन करने और जानकारी निकालने का तरीका सीखा है. अगले पेज पर, Earth Engine से जानकारी पाने के तरीकों के बारे में बताया गया है. उदाहरण के लिए, चार्ट के तौर पर या Google Drive फ़ोल्डर में एक्सपोर्ट किए गए डेटासेट के तौर पर.