Landsat ETM+ से OLI Harmonization

GitHub पर बदलाव करें
समस्या की शिकायत करें
पेज का इतिहास
लेखक: jdbcode

चेतावनी: Landsat ETM+ और OLI डेटा को एक जैसा बनाने के लिए, इस ट्यूटोरियल में बताई गई प्रोसेस पुरानी हो चुकी हैं. Landsat Collection 2 के सर्फ़ेस रिफ़्लेक्टेंस डेटा के साथ काम करते समय, इन प्रोसेस का इस्तेमाल करने का सुझाव नहीं दिया जाता. साथ ही, इनका इस्तेमाल करना ज़रूरी भी नहीं है. ज़्यादा जानकारी के लिए, Landsat के डेटा को एक जैसा बनाने के बारे में अक्सर पूछे जाने वाले सवाल देखें. Collection 1 का डेटा अब काम नहीं करता. साथ ही, इस ट्यूटोरियल में दिया गया कोड अब काम नहीं करेगा और न ही अपडेट किया जाएगा.

कोड एडिटर में खोलें

इस ट्यूटोरियल में, Landsat ETM+ के सर्फ़ेस रिफ़्लेक्टेंस को Landsat OLI के सर्फ़ेस रिफ़्लेक्टेंस के साथ मैच करने के बारे में बताया गया है. इससे ये सुविधाएं मिलती हैं:

  • स्पेक्ट्रल ट्रांसफ़ॉर्मेशन फ़ंक्शन
  • विश्लेषण के लिए तैयार डेटा बनाने वाले फ़ंक्शन
  • टाइम सीरीज़ विज़ुअलाइज़ेशन का उदाहरण

यह गाइड, Landsat डेटा की 35 से ज़्यादा सालों की क्षेत्रीय टाइम सीरीज़ को एक साथ लाने और विज़ुअलाइज़ करने के बारे में पूरी जानकारी देती है. इसे आपकी दिलचस्पी वाले क्षेत्रों पर तुरंत लागू किया जा सकता है.

ध्यान दें कि ETM+ को OLI में बदलने के लिए इस्तेमाल किए गए कोएफ़िशिएंट, TM पर भी लागू होते हैं. इसलिए, इस ट्यूटोरियल में, ईटीएम+ का मतलब टीएम से है.

Landsat के बारे में जानकारी

Landsat, सैटलाइट से इमेज लेने वाला एक प्रोग्राम है. यह 1972 से, पृथ्वी की सामान्य रिज़ॉल्यूशन वाली इमेज इकट्ठा कर रहा है. यह अंतरिक्ष से धरती की निगरानी करने वाला सबसे पुराना प्रोग्राम है. यह लैंडस्केप में बदलाव के स्पैटियोटेंपोरल रुझानों की पहचान करने के लिए, समय के हिसाब से अहम रिकॉर्ड उपलब्ध कराता है. इस ट्यूटोरियल में, थीमैटिक मैपर (टीएम), एन्हांस्ड थीमैटिक मैपर प्लस (ईटीएम+), और ऑपरेशनल लैंड इमेजर (ओएलआई) इंस्ट्रूमेंट के डेटा का इस्तेमाल किया गया है. ये दोनों डेटासेट एक-दूसरे से काफ़ी मिलते-जुलते हैं. साथ ही, इन्हें एक जैसे टाइम सीरीज़ में आसानी से बदला जा सकता है. इससे 1984 से लेकर अब तक का लगातार रिकॉर्ड मिलता है. हर सेंसर के लिए, 16 दिनों के अंतराल पर डेटा मिलता है. साथ ही, इसमें 30 मीटर का स्पेशल रिज़ॉल्यूशन होता है. मल्टीस्पेक्ट्रल स्कैनर इंस्ट्रूमेंट, Landsat के डेटा को 1972 से रिकॉर्ड कर रहा है. हालांकि, इस ट्यूटोरियल में इसका इस्तेमाल नहीं किया गया है. इसका डेटा काफ़ी अलग होता है. इसलिए, इसे बाद के सेंसर के साथ इंटिग्रेट करना मुश्किल होता है. सभी सेंसर के बीच तालमेल के उदाहरणों के लिए, Savage et al. (2018) और Vogeler et al. (2018) देखें.

डेटा को एक जैसा क्यों बनाया जाता है

रॉय और अन्य (2016) ने दिखाया है कि Landsat ETM+ और OLI की स्पेक्ट्रल विशेषताओं में छोटे, लेकिन संभावित रूप से अहम अंतर होते हैं. ये अंतर, ऐप्लिकेशन के हिसाब से अलग-अलग होते हैं. डेटासेट को एक जैसा बनाने की ये वजहें हो सकती हैं: Landsat TM, ETM+, और OLI से मिले डेटा का इस्तेमाल करके लंबी टाइम सीरीज़ बनाना, ETM+ SLC-ऑफ़ गैप और बादल/छाया की मास्किंग से जुड़ी समस्याओं को कम करने के लिए, साल के अंदर की तारीखों के हिसाब से कंपोज़िट जनरेट करना या टाइम सीरीज़ में ऑब्ज़र्वेशन की फ़्रीक्वेंसी बढ़ाना. ज़्यादा जानकारी के लिए, कृपया ऊपर लिंक किया गया मैन्युस्क्रिप्ट देखें.

निर्देश

फ़ंक्शन

यहां दिए गए फ़ंक्शन, ETM+ को OLI के साथ जोड़ने के लिए ज़रूरी हैं. साथ ही, ये विश्लेषण के लिए तैयार डेटा जनरेट करते हैं. इस डेटा का इस्तेमाल, इस ट्यूटोरियल के ऐप्लिकेशन सेक्शन में किया जाएगा. इससे किसी पिक्सल के स्पेक्ट्रल-टेम्पोरल इतिहास को विज़ुअलाइज़ किया जा सकेगा.

टैक्स के नियमों में एकरूपता लाना

ETM+ स्पेक्ट्रल स्पेस को OLI स्पेक्ट्रल स्पेस में लीनियर ट्रांसफ़ॉर्मेशन के ज़रिए, एक जैसा किया जाता है. यह रॉय वगैरह (2016) की टेबल 2 में दिए गए ओएलएस रिग्रेशन कोएफ़िशिएंट के हिसाब से किया जाता है. बैंड के हिसाब से कोएफ़िशिएंट को इस डिक्शनरी में स्लोप (slopes) और इंटरसेप्ट (itcps) इमेज कॉन्स्टेंट के साथ परिभाषित किया गया है. ध्यान दें कि y-इंटरसेप्ट की वैल्यू को 10,000 से गुणा किया जाता है, ताकि USGS Landsat की सतह के रिफ़्लेक्टेंस डेटा की स्केलिंग से मेल खा सके.

var coefficients = {
  itcps: ee.Image.constant([0.0003, 0.0088, 0.0061, 0.0412, 0.0254, 0.0172])
             .multiply(10000),
  slopes: ee.Image.constant([0.8474, 0.8483, 0.9047, 0.8462, 0.8937, 0.9071])
};

एक ही स्पेक्ट्रल रिस्पॉन्स विंडो के लिए, ETM+ और OLI के बैंड के नाम एक जैसे नहीं हैं. इसलिए, इन्हें स्टैंडर्ड किया जाना चाहिए. नीचे दिए गए फ़ंक्शन, हर डेटासेट से सिर्फ़ रिफ़्लेक्टेंस बैंड और pixel_qa बैंड चुनते हैं. साथ ही, उन्हें वेवलेंथ की उस रेंज के हिसाब से नाम देते हैं जो वे दिखाते हैं.

// Function to get and rename bands of interest from OLI.
function renameOli(img) {
  return img.select(
      ['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'pixel_qa'],
      ['Blue', 'Green', 'Red', 'NIR', 'SWIR1', 'SWIR2', 'pixel_qa']);
}

// Function to get and rename bands of interest from ETM+.
function renameEtm(img) {
  return img.select(
      ['B1', 'B2', 'B3', 'B4', 'B5', 'B7', 'pixel_qa'],
      ['Blue', 'Green', 'Red', 'NIR', 'SWIR1', 'SWIR2', 'pixel_qa']);
}

आखिर में, ट्रांसफ़ॉर्मेशन फ़ंक्शन तय करें. यह फ़ंक्शन, ETM+ डेटा पर लीनियर मॉडल लागू करता है. साथ ही, डेटा टाइप को Int16 के तौर पर दिखाता है, ताकि OLI के साथ एक जैसा डेटा दिखे. इसके अलावा, यह pixel_qa बैंड को फिर से जोड़ता है, ताकि बाद में क्लाउड और शैडो मास्किंग में इसका इस्तेमाल किया जा सके.

function etmToOli(img) {
  return img.select(['Blue', 'Green', 'Red', 'NIR', 'SWIR1', 'SWIR2'])
      .multiply(coefficients.slopes)
      .add(coefficients.itcps)
      .round()
      .toShort()
      .addBands(img.select('pixel_qa'));
}

क्लाउड और शैडो मास्किंग

विश्लेषण के लिए तैयार डेटा में, बादलों और बादलों की परछाइयों को मास्क किया जाना चाहिए. नीचे दिए गए फ़ंक्शन में CFmask (Zhu et al., 2015) pixel_qa बैंड को हर Landsat USGS की सर्फ़ेस रिफ़्लेक्टेंस इमेज के साथ शामिल किया गया है, ताकि बादल और बादल की परछाई के तौर पर पहचाने गए पिक्सल को शून्य पर सेट किया जा सके.

function fmask(img) {
  var cloudShadowBitMask = 1 << 3;
  var cloudsBitMask = 1 << 5;
  var qa = img.select('pixel_qa');
  var mask = qa.bitwiseAnd(cloudShadowBitMask)
                 .eq(0)
                 .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  return img.updateMask(mask);
}

स्पेक्ट्रल इंडेक्स की गिनती

आने वाले समय में उपलब्ध होने वाला ऐप्लिकेशन, जंगल में लगी आग से प्रभावित किसी पिक्सल की स्पेक्ट्रल हिस्ट्री दिखाने के लिए, नॉर्मलाइज़्ड बर्न रेशियो (एनबीआर) स्पेक्ट्रल इंडेक्स का इस्तेमाल करता है. एनबीआर का इस्तेमाल इसलिए किया जाता है, क्योंकि कोहेन और अन्य (2018) ने पाया कि 13 स्पेक्ट्रल इंडेक्स/बैंड में से, एनबीआर में पूरे अमेरिका में जंगल में होने वाली गड़बड़ी (सिग्नल) के संबंध में, सिग्नल से नॉइज़ का सबसे ज़्यादा अनुपात था. इसका हिसाब इस फ़ंक्शन से लगाया जाता है.

function calcNbr(img) {
  return img.normalizedDifference(['NIR', 'SWIR2']).rename('NBR');
}

अपने ऐप्लिकेशन में, स्पेक्ट्रल इंडेक्स का इस्तेमाल किया जा सकता है. यहां अतिरिक्त इंडेक्स में बदलाव किया जा सकता है या उसे जोड़ा जा सकता है.

फ़ंक्शन जोड़ना

हर डेटासेट के लिए एक रैपर फ़ंक्शन तय करें, जो ऊपर दिए गए सभी फ़ंक्शन को एक साथ जोड़ता है, ताकि उन्हें इमेज के अपने-अपने कलेक्शन पर आसानी से लागू किया जा सके.

// Define function to prepare OLI images.
function prepOli(img) {
  var orig = img;
  img = renameOli(img);
  img = fmask(img);
  img = calcNbr(img);
  return ee.Image(img.copyProperties(orig, orig.propertyNames()));
}

// Define function to prepare ETM+ images.
function prepEtm(img) {
  var orig = img;
  img = renameEtm(img);
  img = fmask(img);
  img = etmToOli(img);
  img = calcNbr(img);
  return ee.Image(img.copyProperties(orig, orig.propertyNames()));
}

आपके पास अपने ऐप्लिकेशन में फ़ंक्शन शामिल करने या उन्हें बाहर रखने का विकल्प होता है. इन फ़ंक्शन में ज़रूरत के हिसाब से बदलाव करें.

टाइम सीरीज़ का उदाहरण

ऊपर दिए गए prepOli और prepEtm रैपर फ़ंक्शन को Landsat के सर्फ़ेस रिफ़्लेक्टेंस कलेक्शन पर मैप किया जा सकता है. इससे, अलग-अलग सेंसर से मिले डेटा का विश्लेषण किया जा सकता है. साथ ही, पिक्सल या पिक्सल के किसी क्षेत्र की स्पेक्ट्रल क्रोनोलॉजी को विज़ुअलाइज़ किया जा सकता है. इस उदाहरण में, 35 साल से ज़्यादा की टाइम सीरीज़ बनाई जाएगी. साथ ही, एक पिक्सल के लिए स्पेक्ट्रल हिस्ट्री दिखाई जाएगी. यह पर्टिकुलर पिक्सल, पैसिफ़िक नॉर्थवेस्ट के कॉनिफ़र जंगल के मैच्योर पैच (पहला डायग्राम) के हाल के इतिहास से जुड़ा है. इस जंगल में 1980 और 1990 के दशक में कुछ बदलाव हुए थे. साथ ही, 2011 में यहां आग लगी थी.

पसंद की जगह

पहली इमेज. दिलचस्पी वाली जगह के उदाहरण के लिए, जगह और साइट का वर्ण. अमेरिका के ओरेगॉन में माउंट हुड की उत्तरी ढलान पर, पैसिफ़िक नॉर्थवेस्ट में कटीले पेड़ों का घना जंगल. इमेज उपलब्ध कराने के लिए इनका शुक्रिया: Google Earth, USDA Forest Service, Landsat, और Copernicus.

दिलचस्पी की जगह (एओआई) तय करना

इस ऐप्लिकेशन का नतीजा, किसी पिक्सल के लिए Landsat ऑब्ज़र्वेशन की टाइम सीरीज़ होती है. ee.Geometry.Point ऑब्जेक्ट का इस्तेमाल, पिक्सल की जगह की जानकारी तय करने के लिए किया जाता है.

var aoi = ee.Geometry.Point([-121.70938, 45.43185]);

आपके पास अपने ऐप्लिकेशन में, कोई दूसरा पिक्सल चुनने का विकल्प होता है. इसके लिए, ऊपर दिए गए देशांतर और अक्षांश के निर्देशांक बदलें. इसके अलावा, ee.Geometry.Polygon() और ee.Geometry.Rectangle() जैसे अन्य ee.Geometry ऑब्जेक्ट डेफ़िनिशन का इस्तेमाल करके, पिक्सल के किसी ग्रुप के स्पेक्ट्रल इतिहास की खास जानकारी भी देखी जा सकती है. ज़्यादा जानकारी के लिए, कृपया डेवलपर गाइड का ज्यामिति सेक्शन देखें.

लैंडसैट सेंसर कलेक्शन वापस पाएं

OLI, ETM+, और TM के लिए, Landsat USGS के सर्फ़ेस रिफ़्लेक्टेंस कलेक्शन पाएं.

हर डेटासेट के बारे में ज़्यादा जानने के लिए, लिंक पर जाएं.

var oliCol = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR');
var etmCol = ee.ImageCollection('LANDSAT/LE07/C01/T1_SR');
var tmCol = ee.ImageCollection('LANDSAT/LT05/C01/T1_SR');

इमेज कलेक्शन फ़िल्टर तय करना

इमेज कलेक्शन को फ़िल्टर करने के लिए, फ़िल्टर तय करें. इससे इमेज कलेक्शन को इन आधार पर सीमित किया जा सकता है: दिलचस्पी वाले इलाके की सीमा, फ़ोटोसिंथिसिस का सबसे अच्छा सीज़न, और क्वालिटी.

var colFilter = ee.Filter.and(
    ee.Filter.bounds(aoi), ee.Filter.calendarRange(182, 244, 'day_of_year'),
    ee.Filter.lt('CLOUD_COVER', 50), ee.Filter.lt('GEOMETRIC_RMSE_MODEL', 10),
    ee.Filter.or(
        ee.Filter.eq('IMAGE_QUALITY', 9),
        ee.Filter.eq('IMAGE_QUALITY_OLI', 9)));

अपनी ज़रूरत के हिसाब से, फ़िल्टर करने की इन शर्तों में बदलाव करें. ऊपर दिए गए डेटा के ब्यौरे वाले पेजों के "इमेज की प्रॉपर्टी" टैब में जाकर, फ़िल्टर करने के लिए अन्य प्रॉपर्टी पहचानें.

कलेक्शन तैयार करना

कलेक्शन मर्ज करें, फ़िल्टर लागू करें, और सभी इमेज पर prepImg फ़ंक्शन मैप करें. यहां दिए गए स्निपेट का नतीजा एक ee.ImageCollection है. इसमें OLI, ETM+, और TM सेंसर कलेक्शन की ऐसी इमेज शामिल हैं जो फ़िल्टर करने की शर्तों को पूरा करती हैं. साथ ही, इन्हें विश्लेषण के लिए तैयार NBR में प्रोसेस किया जाता है.

// Filter collections and prepare them for merging.
oliCol = oliCol.filter(colFilter).map(prepOli);
etmCol = etmCol.filter(colFilter).map(prepEtm);
tmCol = tmCol.filter(colFilter).map(prepEtm);

// Merge the collections.
var col = oliCol.merge(etmCol).merge(tmCol);

सभी ऑब्ज़र्वेशन दिखाने वाला टाइम सीरीज़ चार्ट बनाओ

अलग-अलग सेंसर से मिले डेटा में समानता है या नहीं, इसका आकलन करने के लिए, सभी ऑब्ज़र्वेशन को स्कैटर प्लॉट के तौर पर प्लॉट किया जा सकता है. इसमें सेंसर को रंग के हिसाब से दिखाया जाता है. Earth Engine का ui.Chart.feature.groups फ़ंक्शन यह सुविधा देता है. हालांकि, इसके लिए सबसे पहले, देखी गई NBR वैल्यू को हर इमेज में प्रॉपर्टी के तौर पर जोड़ना होगा. इमेज कलेक्शन पर map a region reduce फ़ंक्शन लागू करें. यह फ़ंक्शन, एओआई से इंटरसेक्ट करने वाले सभी पिक्सल के मीडियन की गिनती करता है और नतीजे को इमेज प्रॉपर्टी के तौर पर सेट करता है.

var allObs = col.map(function(img) {
  var obs = img.reduceRegion(
      {geometry: aoi, reducer: ee.Reducer.median(), scale: 30});
  return img.set('NBR', obs.get('NBR'));
});

अगर आपके ऐप्लिकेशन में एओआई एक बड़ा क्षेत्र है, तो scale को बढ़ाया जा सकता है. साथ ही, reduceRegion फ़ंक्शन के लिए bestEffort, maxPixels, tileScale आर्ग्युमेंट तय किए जा सकते हैं. इससे यह पक्का किया जा सकेगा कि ऑपरेशन, ज़्यादा से ज़्यादा पिक्सल, मेमोरी या टाइम आउट की सीमाओं से ज़्यादा न हो. इसके अलावा, मीडियन रिड्यूसर को अपनी पसंद के आंकड़ों से भी बदला जा सकता है. ज़्यादा जानकारी के लिए, डेवलपर गाइड में इमेज के किसी हिस्से के आंकड़े सेक्शन देखें.

अब ui.Chart.feature.groups फ़ंक्शन, कलेक्शन को स्वीकार कर सकता है. इस फ़ंक्शन को चार्ट में मैप करने के लिए, कलेक्शन और कलेक्शन ऑब्जेक्ट प्रॉपर्टी के नामों की ज़रूरत होती है. यहां 'system:time_start' प्रॉपर्टी, x-ऐक्सिस वैरिएबल के तौर पर काम करती है और 'NBR', y-ऐक्सिस वैरिएबल के तौर पर काम करती है. ध्यान दें कि ऊपर दिए गए reduceRegion फ़ंक्शन ने, एनबीआर प्रॉपर्टी का नाम तय किया है. यह नाम, इमेज में कम किए जा रहे बैंड के नाम के आधार पर तय किया गया है. अगर आपने किसी दूसरे बैंड ('NBR' नहीं) का इस्तेमाल किया है, तो y-ऐक्सिस की प्रॉपर्टी के नाम वाले आर्ग्युमेंट को उसके हिसाब से बदलें. आखिर में, ग्रुपिंग (सीरीज़) वैरिएबल को 'SATELLITE' पर सेट करें. इसे अलग-अलग रंग असाइन किए जाते हैं.

var chartAllObs =
    ui.Chart.feature.groups(allObs, 'system:time_start', 'NBR', 'SATELLITE')
        .setChartType('ScatterChart')
        .setSeriesNames(['TM', 'ETM+', 'OLI'])
        .setOptions({
          title: 'All Observations',
          colors: ['f8766d', '00ba38', '619cff'],
          hAxis: {title: 'Date'},
          vAxis: {title: 'NBR'},
          pointSize: 6,
          dataOpacity: 0.5
        });
print(chartAllObs);

कुछ समय बाद, कंसोल में दूसरी इमेज जैसा चार्ट दिखेगा. इन बातों का ध्यान रखें:

  • हर साल कई बार ऑब्ज़र्वेशन किया जाता है.
  • टाइम सीरीज़ में तीन अलग-अलग सेंसर शामिल हैं.
  • सेंसर में कोई खास गड़बड़ी नहीं है.
  • ऑब्ज़र्वेशन की फ़्रीक्वेंसी हर साल बदलती है.
  • साल के अलग-अलग समय में कुछ अंतर होता है. यह अंतर हर साल एक जैसा होता है और काफ़ी कम होता है. NDVI (img.normalizedDifference(['SWIR1', 'NIR']).rename('NDVI');) के साथ इस सुविधा का इस्तेमाल करने पर, साल के अंदर और साल के बीच में रिस्पॉन्स में काफ़ी अंतर दिखता है.
  • ज़्यादातर टाइम सीरीज़ के लिए, NBR ज़्यादा रहता है. हालांकि, कुछ में मामूली बदलाव होते हैं.
  • जंगल में लगी आग की वजह से, एनबीआर में तेज़ी से गिरावट आई है. यह बात
  • हालांकि, ध्यान दें कि आग (डॉलर लेक) सितंबर 2011 में लगी थी. साल का पता लगाने में हुई गड़बड़ी की वजह यह है कि सालाना कंपोज़िट डेटा के लिए तारीख की सीमा जुलाई से अगस्त तक होती है. इस अवधि के बाद होने वाले बदलावों को तब तक नहीं चुना जाता, जब तक कि अगला उपलब्ध नॉन-नल ऑब्ज़र्वेशन न मिल जाए. यह अगले साल या उसके बाद का हो सकता है.
  • एनबीआर में गिरावट का पता चलने के दो साल बाद, वनस्पति की रिकवरी (एनबीआर रिस्पॉन्स में बढ़ोतरी) शुरू हो जाती है.

टाइम सीरीज़ के सभी ऑब्ज़र्वेशन

दूसरी इमेज. एक पिक्सल के लिए स्पेक्ट्रल रिस्पॉन्स टाइम सीरीज़ चार्ट. इसमें Landsat TM, ETM+, और OLI का डेटा दिखाया गया है. टीएम और ईटीएम+ इमेज को लीनियर ट्रांसफ़ॉर्मेशन की मदद से ओएलआई में बदला जाता है. ये इमेज, जुलाई से अगस्त तक की हैं और इन्हें अच्छी क्वालिटी के हिसाब से फ़िल्टर किया गया है.

सालाना मीडियन दिखाने वाला टाइम सीरीज़ चार्ट बनाओ

टाइम सीरीज़ को आसान बनाने और उसमें मौजूद नॉइज़ को हटाने के लिए, साल के अंदर के डेटा में कमी की जा सकती है. यहां मीडियन का इस्तेमाल किया गया है.

पहला चरण, इमेज को साल के हिसाब से ग्रुप करना है. हर इमेज में नई 'year' प्रॉपर्टी जोड़ें. इसके लिए, हर इमेज के ee.Image.Date से 'year' की कलेक्शन सेटिंग को मैप करें.

var col = col.map(function(img) {
  return img.set('year', img.date().get('year'));
});

'साल' प्रॉपर्टी का इस्तेमाल करके, एक ही साल की इमेज को जॉइन करके ग्रुप किया जा सकता है. अलग-अलग इमेज के साल के हिसाब से बनाए गए कलेक्शन और पूरे कलेक्शन को जोड़ने पर, एक ही साल की सूचियां मिलती हैं. इनसे मीडियन में कमी की जा सकती है. पूरे कलेक्शन को साल के हिसाब से अलग-अलग प्रतिनिधियों के सेट में बांटें.

var distinctYearCol = col.distinct('year');

एक फ़िल्टर और एक जॉइन तय करें. इससे अलग-अलग साल के कलेक्शन (distinctYearCol) और पूरे कलेक्शन (col) के बीच मैच करने वाले साल की पहचान की जा सकेगी. मैच करने वाले साल, 'year_matches' नाम की प्रॉपर्टी में सेव किए जाएंगे.

var filter = ee.Filter.equals({leftField: 'year', rightField: 'year'});
var join = ee.Join.saveAll('year_matches');

जॉइन करें और नतीजे के तौर पर मिले FeatureCollection को ImageCollection में बदलें.

var joinCol = ee.ImageCollection(join.apply(distinctYearCol, col, filter));

// Apply median reduction among matching year collections.
var medianComp = joinCol.map(function(img) {
  var yearCol = ee.ImageCollection.fromImages(img.get('year_matches'));
  return yearCol.reduce(ee.Reducer.median())
      .set('system:time_start', img.date().update({month: 8, day: 1}));
});

अगर आपको किसी साल की इमेज के कलेक्शन को दिखाने के लिए, मीडियन के अलावा कोई दूसरा आंकड़ा चाहिए, तो ऊपर दिए गए ee.Reducer को बदलें.

आखिर में, एक ऐसा चार्ट बनाएं जिसमें साल में एक बार गर्मियों में किए गए सर्वे के सेट से, मीडियन एनबीआर वैल्यू दिखाई गई हों. अपनी पसंद के मुताबिक, क्षेत्र के हिसाब से कम हुई संख्या के आंकड़े में बदलाव करें.

var chartMedianComp = ui.Chart.image
                          .series({
                            imageCollection: medianComp,
                            region: aoi,
                            reducer: ee.Reducer.median(),
                            scale: 30,
                            xProperty: 'system:time_start',
                          })
                          .setSeriesNames(['NBR Median'])
                          .setOptions({
                            title: 'Intra-annual Median',
                            colors: ['619cff'],
                            hAxis: {title: 'Date'},
                            vAxis: {title: 'NBR'},
                            lineWidth: 6
                          });
print(chartMedianComp);

कुछ समय बाद, कंसोल में तीसरी इमेज जैसा चार्ट दिखेगा.

टाइम सीरीज़ का मीडियन

तीसरी इमेज. एक पिक्सल के लिए, गर्मियों के दौरान स्पेक्ट्रल रिस्पॉन्स में लगने वाले समय का मीडियन दिखाने वाला टाइम सीरीज़ चार्ट. इसमें Landsat TM, ETM+, और OLI का डेटा शामिल है. टीएम और ईटीएम+ इमेज को लीनियर ट्रांसफ़ॉर्मेशन की मदद से ओएलआई के साथ जोड़ा जाता है. ये इमेज, जुलाई से अगस्त के बीच की हैं और इन्हें अच्छी क्वालिटी के हिसाब से फ़िल्टर किया गया है.

अतिरिक्त जानकारी

ट्रांसफ़ॉर्मेशन के अन्य फ़ंक्शन

रॉय वगैरह (2016) की टेबल 2 में, ईटीएम+ के सर्फ़ेस रिफ़्लेक्टेंस को ओएलआई के सर्फ़ेस रिफ़्लेक्टेंस में बदलने और इसके उलट करने के लिए, ओएलएस और आरएमए रिग्रेशन कोएफ़िशिएंट दिए गए हैं. ऊपर दिए गए ट्यूटोरियल में, सिर्फ़ ओएलएस रिग्रेशन की मदद से ईटीएम+ को ओएलआई में बदलने का तरीका बताया गया है. अनुवाद के सभी विकल्पों के लिए फ़ंक्शन, कोड एडिटर स्क्रिप्ट या GitHub सोर्स स्क्रिप्ट में देखे जा सकते हैं.

डॉलर लेक में लगी आग

इस ट्यूटोरियल में जिस आग का ज़िक्र किया गया है वह डॉलर लेक में लगी आग है. यह आग अमेरिका के ओरेगॉन राज्य में माउंट हुड के उत्तरी ढलानों पर सितंबर 2011 के मध्य में लगी थी. इसके बारे में ज़्यादा जानने के लिए, यह ब्लॉग पोस्ट पढ़ें और Varner et al. (2015) देखें.

रेफ़रंस

Cohen, W. B., ज़ियाओयांग यांग, हीली, एस. P., कैनेडी, आर॰ E., & Gorelick, N. (2018). जंगल में होने वाली गड़बड़ियों का पता लगाने के लिए, LandTrendr मल्टीस्पेक्ट्रल एनसेंबल. Remote sensing of environment, 205, 131-140.

रॉय, डी. P., कोवाल्स्की, वी., Zhang, H. K., वर्मोट, ई॰ F., यान ली, कुमार, एस॰ S., और एगोरव, ए. (2016). Landsat-7 से Landsat-8 तक, रिफ़्लेक्टिव वेवलेंथ और नॉर्मलाइज़्ड डिफ़रेंस वेजिटेशन इंडेक्स की निरंतरता की विशेषताएं. Remote sensing of Environment, 185, 57-70.

Savage, S., लॉरेंस, आर॰, स्क्वायर्स, जे., होलब्रुक, जे., ऑल्सन, एल., ब्रेटन, जे., और कोहेन, डब्ल्यू॰ (2018). मल्टीस्पेक्ट्रल स्कैनर से लेकर ऑपरेशनल लैंड इमेजर तक के लैंडसैट संग्रह का इस्तेमाल करके, उत्तर-पश्चिमी मोंटाना में 1972 से 2015 तक जंगल की संरचना में हुए बदलावों को दिखाया गया है. Forests, 9(4), 157.

Varner, J., Lambert, M. S., हॉर्न, जे. J., लावेर्टी, एस॰, डिज़्नी, एल., बीवर, ई॰ A., & Dearing, M. डी॰ (2015). क्या आपको बहुत ज़्यादा गर्मी लग रही है? जलवायु के हिसाब से संवेदनशील हैबिटैट स्पेशलिस्ट के लिए, आग लगने के पैटर्न और उसकी संख्या पर जंगल की आग के असर का आकलन करना. International Journal of Wildland Fire, 24(7), 921-932.

Vogeler, J. सी॰, Braaten, J. D., स्लेसाक, आर॰ A., & Falkowski, M. जे॰ (2018). Landsat के संग्रह से पूरी वैल्यू निकालना: मिनेसोटा के जंगल के कैनोपी कवर की मैपिंग के लिए, अलग-अलग सेंसर के डेटा को एक जैसा बनाना (1973–2015). Remote sensing of environment, 209, 363-374.

ज़ू, ज़ेड., Wang, S., & Woodcock, C. ई॰ (2015). Fmask एल्गोरिदम को बेहतर बनाया गया है और इसका दायरा बढ़ाया गया है. अब यह Landsat 4–7, 8, और Sentinel 2 की इमेज में बादल, बादलों की परछाई, और बर्फ़ का पता लगा सकता है. Remote Sensing of Environment, 159, 269-277.