reduceRegion
ee.Image
के किसी क्षेत्र में पिक्सल वैल्यू के आंकड़े पाने के लिए, image.reduceRegion()
का इस्तेमाल करें.
इससे क्षेत्र के सभी पिक्सल, आंकड़ों में बदल जाते हैं या क्षेत्र के पिक्सल डेटा को कम जगह में दिखाया जाता है. उदाहरण के लिए, हिस्टोग्राम. क्षेत्र को Geometry
के तौर पर दिखाया जाता है. यह एक ऐसा
पॉलीगॉन हो सकता है जिसमें कई पिक्सल हों या फिर यह एक ऐसा बिंदु हो सकता है जिसमें
क्षेत्र में सिर्फ़ एक पिक्सल हो. दोनों ही मामलों में, जैसा कि पहली इमेज में दिखाया गया है, आउटपुट एक आंकड़ा होता है. यह आंकड़ा, क्षेत्र के पिक्सल से मिलता है.

ee.Reducer
का इलस्ट्रेशन.reduceRegion()
का इस्तेमाल करके, किसी इमेज के किसी इलाके में पिक्सल के आंकड़े पाने के उदाहरण के लिए, सियेरा नेवाडा कॉनिफ़र फ़ॉरेस्ट की सीमाओं के अंदर, पांच साल के Landsat कंपोजिट की औसत स्पेक्ट्रल वैल्यू ढूंढें. इसकी जानकारी, दूसरे चित्र में दी गई है:
// Load input imagery: Landsat 7 5-year composite. var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012'); // Load an input region: Sierra Nevada. var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3') .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada')) .first()); // Reduce the region. The region parameter is the Feature geometry. var meanDictionary = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), scale: 30, maxPixels: 1e9 }); // The result is a Dictionary. Print it. print(meanDictionary);
कैलकुलेशन को फ़ोर्स करने के लिए, नतीजे को प्रिंट करना ही काफ़ी है. कोड एडिटर, नतीजे को कंसोल में Dictionary
के तौर पर दिखाएगा. आउटपुट कुछ ऐसा दिखेगा:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

ध्यान दें कि इस उदाहरण में, reducer
(ee.Reducer.mean()
), geometry
(region.geometry()
), scale
(30 मीटर), और maxPixels
की वैल्यू देकर, रिड्यूसर में इनपुट करने के लिए ज़्यादा से ज़्यादा पिक्सल की संख्या तय की गई है. reduceRegion()
कॉल में हमेशा स्केल तय किया जाना चाहिए. ऐसा इसलिए है, क्योंकि प्रोसेसिंग के जटिल फ़्लो में, अलग-अलग स्केल वाले अलग-अलग सोर्स का डेटा शामिल हो सकता है. ऐसे में, इनपुट से आउटपुट का स्केल साफ़ तौर पर तय नहीं किया जा सकेगा. ऐसे में, स्केल डिफ़ॉल्ट रूप से एक डिग्री पर सेट हो जाता है. इससे आम तौर पर अच्छे नतीजे नहीं मिलते. Earth Engine, स्केल को कैसे मैनेज करता है, इस बारे में ज़्यादा जानने के लिए यह
पेज देखें.
स्केल सेट करने के दो तरीके हैं: scale
पैरामीटर बताकर या सीआरएस और सीआरएस ट्रांसफ़ॉर्म बताकर. (सीआरएस और सीआरएस ट्रांसफ़ॉर्म के बारे में ज़्यादा जानकारी के लिए,
ग्लॉसरी देखें). उदाहरण के लिए, ऊपर बताई गई meanDictionary
की कमी, इनके बराबर है:
// As an alternative to specifying scale, specify a CRS and a CRS transform. // Make this array by constructing a 4326 projection at 30 meters, // then copying the bounds of the composite, from composite.projection(). var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563]; // Perform the reduction, print the result. print(image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), crs: 'EPSG:4326', crsTransform: affine, maxPixels: 1e9 }));
आम तौर पर, स्केल तय करना ही काफ़ी होता है. इससे कोड को आसानी से पढ़ा जा सकता है. Earth Engine, पहले क्षेत्र को रेस्टर करके यह तय करता है कि रिड्यूसर में कौनसे पिक्सल डाले जाएं. अगर सीआरएस के बिना स्केल तय किया जाता है, तो क्षेत्र को इमेज के नेटिव प्रोजेक्शन में रेस्टर किया जाता है और तय किए गए रिज़ॉल्यूशन में स्केल किया जाता है. अगर सीआरएस और स्केल, दोनों की जानकारी दी गई है, तो क्षेत्र को उनके आधार पर रेस्टर किया जाता है.
इलाके में मौजूद पिक्सल
पिक्सल को क्षेत्र में शामिल करने और उनका वज़न तय करने के लिए, यहां दिए गए नियमों का पालन किया जाता है. ये नियम, तय किए गए स्केल और प्रोजेक्शन में लागू होते हैं:
- बिना वज़न वाले रिड्यूसर (उदाहरण के लिए,
ee.Reducer.count()
याee.Reducer.mean().unweighted()
): पिक्सल तब शामिल किए जाते हैं, जब उनका सेंट्राइड क्षेत्र में हो और इमेज का मास्क शून्य से ज़्यादा हो. - वेटेड रिड्यूसर (उदाहरण के लिए,
ee.Reducer.mean()
): पिक्सल तब शामिल किए जाते हैं, जब कम से कम (लगभग) 0.5% पिक्सल क्षेत्र में हों और इमेज का मास्क शून्य से ज़्यादा हो; उनका वज़न, इमेज के मास्क और क्षेत्र में शामिल पिक्सल के (अनुमानित) फ़्रैक्शन में से कम होता है.
कैलकुलेशन पूरा करने के लिए, maxPixels
पैरामीटर की ज़रूरत होती है. अगर इस उदाहरण में
पैरामीटर को शामिल नहीं किया जाता है, तो गड़बड़ी का एक मैसेज दिखता है. यह मैसेज कुछ ऐसा दिखता है:
इन गड़बड़ियों को ठीक करने के कई विकल्प हैं: उदाहरण के तौर पर, maxPixels
को बढ़ाएं, scale
को बढ़ाएं या bestEffort
को
सही पर सेट करें. इससे, maxPixels
से ज़्यादा न हो, इसके लिए स्केल अपने-आप बड़ा हो जाता है. अगर आपने maxPixels
की वैल्यू नहीं दी है, तो डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.