स्केल

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

पिरामिड
पहली इमेज. Earth Engine में इमेज डेटासेट को ग्राफ़िक के तौर पर दिखाया गया है. डैश वाली लाइनें, चार पिक्सल के 2x2 ब्लॉक को एग्रीगेट करने के लिए पिरामिड बनाने की नीति दिखाती हैं. Earth Engine, आउटपुट में बताए गए स्केल का इस्तेमाल करके, इमेज पिरामिड के सही लेवल का पता लगाता है, ताकि उसे इनपुट के तौर पर इस्तेमाल किया जा सके.

इमेज पिरामिड

Earth Engine में इमेज एसेट, कई स्केल पर मौजूद होती हैं. ये इमेज पिरामिड में होती हैं. पिरामिड बनाने की नीति (यह नीति, पहले चित्र में डैश वाली लाइनों से दिखाई गई है) से यह तय होता है कि पिरामिड के किसी लेवल पर मौजूद हर पिक्सल का हिसाब, अगले लेवल पर मौजूद पिक्सल के 2x2 ब्लॉक के एग्रीगेशन से कैसे लगाया जाता है. लगातार वैल्यू वाली इमेज के लिए, पिरामिड के ऊपरी लेवल की पिक्सल वैल्यू, अगले निचले लेवल के पिक्सल की औसत होती हैं. अलग-अलग वैल्यू वाली इमेज के लिए, पिरामिड के ऊपरी लेवल की पिक्सल वैल्यू, अगले लेवल के पिक्सल का सैंपल होती हैं. आम तौर पर, यह सबसे ऊपर बाएं पिक्सल होता है.

इमेज पिरामिड का सबसे निचला लेवल, इमेज डेटा को नेटिव रिज़ॉल्यूशन में दिखाता है. ऐसा तब होता है, जब इमेज डेटा को Earth Engine में डाला जाता है. डेटा डालने के दौरान, पिरामिड के ज़्यादा लेवल बनाने के लिए, डेटा को इकट्ठा किया जाता है. ऐसा, पिरामिड बनाने की नीति के मुताबिक किया जाता है. डेटा तब तक इकट्ठा किया जाता है, जब तक कि पूरी इमेज 256x256 पिक्सल वाली टाइल में फ़िट न हो जाए. जब कोड में किसी इमेज का इस्तेमाल किया जाता है, तो Earth Engine पिरामिड का वह लेवल चुनता है जिसका स्केल, विश्लेषण में बताए गए स्केल से कम या उसके बराबर हो. साथ ही, ज़रूरत के हिसाब से रीसैंपल करता है (डिफ़ॉल्ट रूप से, नेियरेस्ट नेबर का इस्तेमाल करके).

विश्लेषण का स्केल

Earth Engine में विश्लेषण का स्केल, "पुल" के आधार पर तय किया जाता है. आउटपुट से यह तय होता है कि किसी कैलकुलेशन के लिए, इनपुट का अनुरोध किस स्केल पर करना है. उदाहरण के लिए, अगर आपने कोड एडिटर या geemap मैप एलिमेंट में कोई इमेज जोड़ी है, तो मैप के ज़ूम लेवल से यह तय होता है कि इमेज पिरामिड से किस स्केल पर इनपुट का अनुरोध किया जाए. अन्य कैलकुलेशन के लिए, आपको scale को आर्ग्युमेंट के तौर पर बताना होगा. उदाहरण के लिए, Landsat इमेज के एनआईआर बैंड का इस्तेमाल करना, जिसका नेटिव रिज़ॉल्यूशन 30 मीटर है:

कोड एडिटर (JavaScript)

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4');

var printAtScale = function(scale) {
  print('Pixel value at '+scale+' meters scale',
    image.reduceRegion({
      reducer: ee.Reducer.first(),
      geometry: image.geometry().centroid(),
      // The scale determines the pyramid level from which to pull the input
      scale: scale
  }).get('B4'));
};

printAtScale(10); // 0.10394100844860077
printAtScale(30); // 0.10394100844860077
printAtScale(50); // 0.09130698442459106
printAtScale(70); // 0.1150854229927063
printAtScale(200); // 0.102478988468647
printAtScale(500); // 0.09072770178318024

Python सेटअप

Python API के बारे में जानकारी पाने और इंटरैक्टिव डेवलपमेंट के लिए geemap का इस्तेमाल करने के लिए, Python एनवायरमेंट पेज देखें.

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4')


def print_at_scale(scale):
  display(
      f'Pixel value at {scale} meters scale',
      image.reduceRegion(
          reducer=ee.Reducer.first(),
          geometry=image.geometry().centroid(),
          # The scale determines the pyramid level from which to pull the input
          scale=scale,
      ).get('B4'),
  )


print_at_scale(10)  # 0.10394100844860077
print_at_scale(30)  # 0.10394100844860077
print_at_scale(50)  # 0.09130698442459106
print_at_scale(70)  # 0.1150854229927063
print_at_scale(200)  # 0.102478988468647
print_at_scale(500)  # 0.09072770178318024

इस उदाहरण में, ध्यान दें कि किसी एक जगह (इमेज के सेंट्राइड) पर पिक्सल की वैल्यू, स्केल के हिसाब से अलग-अलग होती है. ऐसा इसलिए होता है, क्योंकि अलग-अलग स्केल के लिए, पिरामिड के अलग-अलग लेवल चुने जाते हैं. मिलते-जुलते स्केल के लिए, नेबरहुड रिसैंपलिंग की वजह से, एक ही पिक्सल वैल्यू दिखती है. अहम बात यह है कि स्केल में बदलाव करके, अलग-अलग इमेज इनपुट का अनुरोध किया जाता है.

जब किसी इमेज को मैप में जोड़कर विज़ुअलाइज़ किया जाता है, तो Earth Engine, ज़ूम लेवल से स्केल तय करता है. यहां एक आसान उदाहरण दिया गया है, जिसमें Landsat की इमेज दिख रही है:

कोड एडिटर (JavaScript)

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.centerObject(image, 17);
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.35}, 'image');

Python सेटअप

Python API के बारे में जानकारी पाने और इंटरैक्टिव डेवलपमेंट के लिए geemap का इस्तेमाल करने के लिए, Python एनवायरमेंट पेज देखें.

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
m = geemap.Map()
m.center_object(image, 17)
m.add_layer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 0.35}, 'image')
m

मैप को ज़ूम करके दिखाया जाता है, ताकि नेटिव रिज़ॉल्यूशन के पिक्सल साफ़ तौर पर दिखें. ज़ूम आउट करने पर, वही पिक्सल नहीं दिखेंगे. इसके बजाय, इमेज पिरामिड के ज़्यादा लेवल दिखेंगे. यह भी ध्यान देने वाली बात है कि कोड एडिटर और geemap मैप, maps mercator (EPSG:3857) प्रोजेक्शन का इस्तेमाल करते हैं. इसलिए, इमेज पिरामिड के सही लेवल को दिखाने से पहले, उसे फिर से प्रोजेक्ट करना ज़रूरी है. इस बारे में ज़्यादा जानें कि Earth Engine, प्रोजेक्शंस दस्तावेज़ से प्रोजेक्शन को कैसे मैनेज करता है.