Landsat एल्गोरिदम

लैंडसैट कलेक्शन का स्ट्रक्चर

USGS हर सैटलाइट के लिए, तीन टीयर (कैटगरी) में डेटा उपलब्ध कराता है:

  • टियर 1 (T1) - ऐसा डेटा जो ज्यामितीय और रेडियोमेट्रिक क्वालिटी की ज़रूरी शर्तों को पूरा करता है
  • टीयर 2 (T2) - ऐसा डेटा जो टीयर 1 की ज़रूरी शर्तों को पूरा नहीं करता
  • रीयल टाइम (RT) - ऐसा डेटा जिसका अभी तक आकलन नहीं किया गया है. इसमें एक महीने तक का समय लग सकता है.

ज़्यादा जानकारी के लिए, कलेक्शन 2 टीयर के बारे में USGS का दस्तावेज़ देखें.

पुष्टि किए गए T1 डेटा और सबसे नए रीयल-टाइम डेटा, दोनों को एक साथ ऐक्सेस करने की अनुमति देने के लिए, हमने स्क्रीन को टीयर और सैटलाइट के हिसाब से कलेक्शन में बांटा है. Landsat 8 के लिए उदाहरण यहां दिए गए हैं:

आईडी ब्यौरा
LANDSAT/LC08/C02/T1_RT Landsat 8, Collection 2, Tier 1 + Real Time
LANDSAT/LC08/C02/T1 Landsat 8, Collection 2, सिर्फ़ टियर 1
LANDSAT/LC08/C02/T2 Landsat 8, कलेक्शन 2, सिर्फ़ टियर 2

नए-नए सीन, T1_RT कलेक्शन में हर दिन जोड़े जाते हैं. जब किसी आरटी सीन को फिर से प्रोसेस किया जाता है और उसे T1 या T2 के तौर पर कैटगरी में रखा जाता है, तो उसे T1_RT कलेक्शन से हटा दिया जाता है. साथ ही, नया वर्शन सही कलेक्शन में जोड़ दिया जाता है. अगर आपका काम संवेदनशील है और वीडियो से किसी सीन को हटाने की संभावना है या किसी सीन को गलत तरीके से रजिस्टर किया गया है, तो हो सकता है कि आप T1 कलेक्शन का इस्तेमाल करना चाहें. हालांकि, आम तौर पर, ऐसा बहुत कम होता है कि किसी सीन को गलत तरीके से रजिस्टर किया गया हो और वह नए वीडियो में दिखे.

पिछले हर कलेक्शन में रॉ डेटा (जैसे, स्केल किया गया, सेंसर पर रेडिएंस) होता है. इसके अलावा, जिन कलेक्शन में T1 या T2 इमेज शामिल होती हैं उनके लिए, TOA (वायुमंडल के ऊपरी हिस्से से परावर्तित होने वाली रोशनी), SR (सतह से परावर्तित होने वाली रोशनी), और LST (ज़मीन की सतह का तापमान) प्रॉडक्ट उपलब्ध कराए जाते हैं. इस टेबल में, उदाहरण के तौर पर लैंडसेट 8 के डेटा का इस्तेमाल करके, TOA और SR/LST कलेक्शन के लिए कलेक्शन आईडी के बारे में बताया गया है.

आईडी ब्यौरा
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Collection 2, Tier 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Collection 2, सिर्फ़ टियर 1, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8, कलेक्शन 2, सिर्फ़ टियर 1, एसआर और एलएसटी
LANDSAT/LC08/C02/T2_TOA Landsat 8, Collection 2, सिर्फ़ टियर 2, TOA

यह डेटा, Landsat 4, 5, 7, 8, और 9 के लिए मौजूद है. अलग-अलग सैटलाइट के लिए कलेक्शन वापस पाने के लिए, ऊपर दी गई कलेक्शन की परिभाषाओं में 'LC08' को नीचे दी गई टेबल के आईडी से बदलें.

आईडी ब्यौरा
LT04 Landsat 4, थीमैटिक मैपिंग (TM)
LT05 Landsat 5, थीमैटिक मैपर (TM)
LE07 Landsat 7, बेहतर थीमैटिक मैपर प्लस (ETM+)
LC08 Landsat 8, ऑपरेशनल लैंड इमेजर (ओएलआई)
LC09 Landsat 9, ऑपरेशनल लैंड इमेजर 2 (OLI-2)

Landsat कलेक्शन का स्टेटस

प्री-कलेक्शन 1: इसे USGS अब जनरेट या डिस्ट्रिब्यूट नहीं करता. Earth Engine में इसका इस्तेमाल नहीं किया जा सकता. इसे 2024 में डेटा कैटलॉग से हटा दिया जाएगा.

कलेक्शन 1: इसे USGS अब जनरेट या डिस्ट्रिब्यूट नहीं करता. साथ ही, Earth Engine में इसका इस्तेमाल नहीं किया जा सकता. इसे 2024 में डेटा कैटलॉग से हटा दिया जाएगा. माइग्रेशन गाइड का इस्तेमाल करके, 1 जुलाई, 2024 तक अपनी Earth Engine स्क्रिप्ट, मॉड्यूल, और ऐप्लिकेशन को कलेक्शन 2 पर अपडेट करें, ताकि आपके अनुरोध पूरे किए जा सकें.

कलेक्शन 2: USGS का मौजूदा कलेक्शन. Earth Engine डेटा कैटलॉग में पूरी तरह से उपलब्ध होना.

Landsat प्रोसेसिंग के तरीके

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

सेंसर पर रेडिएंस और TOA रिफ़्लेक्शन

Earth Engine में "रॉ" सीन में, डिजिटल नंबर (डीएन) वाली इमेज होती हैं. ये इमेज, स्केल किए गए रेडियंस को दिखाती हैं. डीएन को सेंसर पर रेडिएंस में बदलना, एक ऐसा रेखीय ट्रांसफ़ॉर्मेशन है जिसमें सीन के मेटाडेटा में सेव किए गए गुणांक का इस्तेमाल किया जाता है (Chander et al. 2009). ee.Algorithms.Landsat.calibratedRadiance() तरीका, इस कन्वर्ज़न को पूरा करता है. टीओए (या सेंसर पर) रिफ़्लेक्शन में बदलाव करना एक ऐसा रेखीय ट्रांसफ़ॉर्मेशन है जिसमें सूर्य की ऊंचाई और ऋतु के हिसाब से धरती और सूर्य के बीच की दूरी का हिसाब रखा जाता है. TOA कन्वर्ज़न को ee.Algorithms.Landsat.TOA() तरीके से मैनेज किया जाता है. टीओए (थर्मल ऑब्जेक्ट एलिमेंट) का तरीका, थर्मल बैंड को रोशनी के तापमान में बदलता है. टोए रिफ़्लेक्टान्स या चमक के तापमान का हिसाब लगाने के बारे में ज़्यादा जानकारी के लिए, Chander et al. (2009) (या Landsat 8 के लिए USGS की यह साइट) देखें. नीचे दिए गए उदाहरण में, Landsat 8 इमेज के लिए रॉ डेटा को रेडियंस और टोए रिफ़्लेक्शन में बदलने का तरीका बताया गया है:

कोड एडिटर (JavaScript)

// Load a raw Landsat scene and display it.
var raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');
Map.centerObject(raw, 10);
Map.addLayer(raw, {bands: ['B4', 'B3', 'B2'], min: 6000, max: 12000}, 'raw');

// Convert the raw data to radiance.
var radiance = ee.Algorithms.Landsat.calibratedRadiance(raw);
Map.addLayer(radiance, {bands: ['B4', 'B3', 'B2'], max: 90}, 'radiance');

// Convert the raw data to top-of-atmosphere reflectance.
var toa = ee.Algorithms.Landsat.TOA(raw);

Map.addLayer(toa, {bands: ['B4', 'B3', 'B2'], max: 0.2}, 'toa reflectance');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a raw Landsat scene and display it.
raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')
m = geemap.Map()
m.center_object(raw, 10)
m.add_layer(
    raw, {'bands': ['B4', 'B3', 'B2'], 'min': 6000, 'max': 12000}, 'raw'
)

# Convert the raw data to radiance.
radiance = ee.Algorithms.Landsat.calibratedRadiance(raw)
m.add_layer(radiance, {'bands': ['B4', 'B3', 'B2'], 'max': 90}, 'radiance')

# Convert the raw data to top-of-atmosphere reflectance.
toa = ee.Algorithms.Landsat.TOA(raw)

m.add_layer(toa, {'bands': ['B4', 'B3', 'B2'], 'max': 0.2}, 'toa reflectance')
m

सतह से प्रकाश का परावर्तन

Earth Engine में, लैंडसेट के सतह के रेफ़्लेक्शन (एसआर) का डेटा, USGS के कलेक्शन 2, लेवल 2 के संग्रह की कॉपी के तौर पर उपलब्ध है. ध्यान दें कि Landsat 4, 5, और 7 एसआर डेटा, LEDAPS एल्गोरिदम का इस्तेमाल करके जनरेट किया जाता है. वहीं, Landsat 8 और 9 एसआर डेटा, LaSRC एल्गोरिदम का इस्तेमाल करके जनरेट किया जाता है. इन एल्गोरिदम और USGS से उनके अंतर के बारे में जानें.

USGS कलेक्शन 2, लेवल 2 की लैंडसेट 8 इमेज को इस तरह ऐक्सेस किया जा सकता है:

कोड एडिटर (JavaScript)

var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

sr_image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028')

कलेक्शन 2 लैंडसैट 4 से 9 के लिए, सतह की रिफ़्लेक्शन डेटासेट ये हैं:

कोड एडिटर (JavaScript)

var surfaceReflectanceL4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2');
var surfaceReflectanceL5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');
var surfaceReflectanceL7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2');
var surfaceReflectanceL8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2');
var surfaceReflectanceL9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

surface_reflectance_l4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2')
surface_reflectance_l5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
surface_reflectance_l7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2')
surface_reflectance_l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
surface_reflectance_l9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')

क्लाउड का आसान स्कोर

लैंडसैट पिक्सल को उनके बादल के घनेपन के हिसाब से स्कोर करने के लिए, Earth Engine ee.Algorithms.Landsat.simpleCloudScore() तरीके में, बादल के घनेपन का स्कोर तय करने वाला बुनियादी एल्गोरिदम उपलब्ध कराता है. (लागू करने के बारे में जानकारी के लिए, Code Editor की यह सैंपल स्क्रिप्ट देखें). इस उदाहरण में, Landsat 8 इमेज में मौजूद बादलों को मास्क करने के लिए, क्लाउड स्कोरिंग एल्गोरिदम का इस्तेमाल किया गया है:

कोड एडिटर (JavaScript)

// Load a cloudy Landsat scene and display it.
var cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926');
Map.centerObject(cloudy_scene);
Map.addLayer(cloudy_scene, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'TOA', false);

// Add a cloud score band.  It is automatically called 'cloud'.
var scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene);

// Create a mask from the cloud score and combine it with the image mask.
var mask = scored.select(['cloud']).lte(20);

// Apply the mask to the image and display the result.
var masked = cloudy_scene.updateMask(mask);
Map.addLayer(masked, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'masked');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a cloudy Landsat scene and display it.
cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926')
m = geemap.Map()
m.center_object(cloudy_scene)
m.add_layer(
    cloudy_scene, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'TOA', False
)

# Add a cloud score band.  It is automatically called 'cloud'.
scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene)

# Create a mask from the cloud score and combine it with the image mask.
mask = scored.select(['cloud']).lte(20)

# Apply the mask to the image and display the result.
masked = cloudy_scene.updateMask(mask)
m.add_layer(masked, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'masked')
m

अगर इस उदाहरण को कोड एडिटर में चलाया जाता है, तो मास्क की गई और बिना मास्क वाली इमेज के बीच के अंतर की तुलना करने के लिए, TOA लेयर की दिखने की सेटिंग को टॉगल करें. (ऐसा करने का तरीका जानने के लिए, कोड एडिटर के दस्तावेज़ों में लेयर मैनेजर सेक्शन देखें). ध्यान दें कि simpleCloudScore() के लिए इनपुट, एक Landsat TOA सीन है. यह भी ध्यान दें कि simpleCloudScore(), इनपुट इमेज में 'cloud' नाम का एक बैंड जोड़ता है. क्लाउड बैंड में, क्लाउड स्कोर होता है. यह स्कोर 0 (बिना बादल) से 100 (ज़्यादातर बादल) तक हो सकता है. पिछले उदाहरण में, बादल वाले पिक्सल को मास्क करने के लिए, क्लाउड स्कोर पर मनमुताबिक थ्रेशोल्ड (20) का इस्तेमाल किया गया है. Landsat से मिले स्क्रीन के Earth Engine मोज़ेक पर, इस एल्गोरिदम को लागू करने के लिए, SENSOR_ID प्रॉपर्टी को सेट करें:

कोड एडिटर (JavaScript)

// Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property.
var mosaic = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterDate('2019-06-01', '2019-06-16').mosaic()
  .set('SENSOR_ID', 'OLI_TIRS');

// Cloud score the mosaic and display the result.
var scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic);
Map.addLayer(scored_mosaic, {bands: ['B4', 'B3', 'B2'], max: 0.4},
    'TOA mosaic');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property.
mosaic = (
    ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filterDate('2019-06-01', '2019-06-16')
    .mosaic()
    .set('SENSOR_ID', 'OLI_TIRS')
)

# Cloud score the mosaic and display the result.
scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic)
m = geemap.Map()
m.add_layer(
    scored_mosaic,
    {'bands': ['B4', 'B3', 'B2'], 'max': 0.4},
    'TOA mosaic',
)
m

SENSOR_ID, अलग-अलग इमेज की प्रॉपर्टी है. जब Earth Engine कई इमेज का एक साथ इस्तेमाल करके, मोज़ेक बनाता है, तो उसे हर इमेज का मेटाडेटा हटाना पड़ता है. इसमें SENSOR_ID प्रॉपर्टी भी शामिल है. किसी मोज़ेक को क्लाउड स्कोर करने के लिए, Earth Engine उस प्रॉपर्टी को ढूंढता है. अगर वह प्रॉपर्टी नहीं मिलती है, तो गड़बड़ी का मैसेज दिखता है. इससे बचने के लिए, प्रॉपर्टी को मैन्युअल तरीके से सेट करें. Landsat 5, 7, और 8(9) के सेंसर आईडी, क्रमशः 'TM', 'ETM', और 'OLI_TIRS' हैं.

सिंपल कंपोज़िट

बादल रहित Landsat कंपोजिट बनाने के लिए, Earth Engine में ee.Algorithms.Landsat.simpleComposite() तरीका उपलब्ध है. यह तरीका हर जगह के लिए, स्क्रीन पर दिखने वाले हिस्सों का सबसे छोटा ग्रुप चुनता है. इसके बाद, उसे TOA रेफ़्लेक्शन में बदलता है और बादल के स्कोर को लागू करता है. साथ ही, बादल से सबसे कम छिपे हुए पिक्सल का मीडियन लेता है. इस उदाहरण में, डिफ़ॉल्ट पैरामीटर का इस्तेमाल करके एक आसान कंपोजिट बनाया गया है. साथ ही, क्लाउड स्कोर थ्रेशोल्ड और प्रतिशत के लिए कस्टम पैरामीटर का इस्तेमाल करके बनाए गए कंपोजिट की तुलना की गई है:

कोड एडिटर (JavaScript)

// Load a raw Landsat 5 ImageCollection for a single year.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2010-01-01', '2010-12-31');

// Create a cloud-free composite with default parameters.
var composite = ee.Algorithms.Landsat.simpleComposite(collection);

// Create a cloud-free composite with custom parameters for
// cloud score threshold and percentile.
var customComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: collection,
  percentile: 75,
  cloudScoreRange: 5
});

// Display the composites.
Map.setCenter(-122.3578, 37.7726, 10);
Map.addLayer(composite, {bands: ['B4', 'B3', 'B2'], max: 128}, 'TOA composite');
Map.addLayer(customComposite, {bands: ['B4', 'B3', 'B2'], max: 128},
    'Custom TOA composite');

Python सेटअप

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a raw Landsat 5 ImageCollection for a single year.
collection = ee.ImageCollection('LANDSAT/LT05/C02/T1').filterDate(
    '2010-01-01', '2010-12-31'
)

# Create a cloud-free composite with default parameters.
composite = ee.Algorithms.Landsat.simpleComposite(collection)

# Create a cloud-free composite with custom parameters for
# cloud score threshold and percentile.
custom_composite = ee.Algorithms.Landsat.simpleComposite(
    collection=collection, percentile=75, cloudScoreRange=5
)

# Display the composites.
m = geemap.Map()
m.set_center(-122.3578, 37.7726, 10)
m.add_layer(
    composite, {'bands': ['B4', 'B3', 'B2'], 'max': 128}, 'TOA composite'
)
m.add_layer(
    custom_composite,
    {'bands': ['B4', 'B3', 'B2'], 'max': 128},
    'Custom TOA composite',
)
m

ध्यान दें कि आसान कंपोजिट में, रॉ इमेज का कलेक्शन डाला जाता है. यह भी ध्यान दें कि डिफ़ॉल्ट रूप से, रिफ़्लेक्टिव बैंड का आउटपुट, 8-बिट के हिसाब से रिफ़्लेक्शन के हिसाब से तय होता है. साथ ही, थर्मल बैंड का आउटपुट, 8-बिट की रेंज में फ़िट करने के लिए, केल्विन से 100 घटाया जाता है. इस व्यवहार को बदलने के लिए, asFloat पैरामीटर को 'सही' पर सेट करें. इससे, स्केल न किए गए और शिफ़्ट न किए गए फ़्लोट आउटपुट मिलेगा.