Algoritma Landsat

Struktur koleksi Landsat

USGS menghasilkan data dalam 3 tingkat (kategori) untuk setiap satelit:

  • Tingkat 1 (T1) - Data yang memenuhi persyaratan kualitas geometris dan radiometrik
  • Tingkat 2 (T2) - Data yang tidak memenuhi persyaratan Tingkat 1
  • Real Time (RT) - Data yang belum dievaluasi (memerlukan waktu hingga satu bulan).

Lihat dokumentasi USGS di Tingkat Pengumpulan 2 untuk mengetahui informasi selengkapnya.

Untuk mengizinkan akses ke data T1 yang divalidasi dan data real-time terbaru secara bersamaan, kami telah mengelompokkan scene ke dalam koleksi berdasarkan tingkat dan satelit. Contoh untuk Landsat 8 adalah sebagai berikut:

ID Deskripsi
LANDSAT/LC08/C02/T1_RT Landsat 8, Koleksi 2, Tingkat 1 + Real Time
LANDSAT/LC08/C02/T1 Khusus Landsat 8, Koleksi 2, Tingkat 1
LANDSAT/LC08/C02/T2 Khusus Landsat 8, Koleksi 2, Tingkat 2

Tampilan yang baru diperoleh ditambahkan ke koleksi T1_RT setiap hari. Setelah scene RT diproses ulang dan dikategorikan sebagai T1 atau T2, scene tersebut akan dihapus dari koleksi T1_RT dan versi baru akan ditambahkan ke koleksi yang sesuai. Jika pekerjaan Anda sensitif terhadap penghapusan atau berpotensi salah mendaftarkan scene, sebaiknya gunakan koleksi T1, tetapi secara umum, sangat jarang terjadi kesalahan pendaftaran yang cukup besar untuk diamati pada scene yang baru diperoleh.

Setiap koleksi sebelumnya berisi data mentah (yaitu, radiance pada sensor yang diskalakan). Selain itu, untuk setiap koleksi yang berisi gambar T1 atau T2, produk TOA (pantulan bagian atas atmosfer), SR (pantulan permukaan), dan LST (suhu permukaan tanah) ditawarkan. Tabel berikut menjelaskan ID koleksi untuk koleksi TOA dan SR/LST menggunakan data Landsat 8 sebagai contoh.

ID Deskripsi
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Koleksi 2, Tingkat 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Koleksi 2, khusus Tingkat 1, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8, Collection 2, khusus Tingkat 1, SR dan LST
LANDSAT/LC08/C02/T2_TOA Landsat 8, Koleksi 2, khusus Tingkat 2, TOA

Data ini tersedia untuk Landsat 4, 5, 7, 8, dan 9. Ganti 'LC08' dalam definisi koleksi sebelumnya dengan ID dari tabel berikut untuk mengambil koleksi untuk berbagai satelit.

ID Deskripsi
LT04 Landsat 4, Thematic Mapper (TM)
LT05 Landsat 5, Thematic Mapper (TM)
LE07 Landsat 7, Enhanced Thematic Mapper Plus (ETM+)
LC08 Landsat 8, Operational Land Imager (OLI)
LC09 Landsat 9, Operational Land Imager 2 (OLI-2)

Status koleksi Landsat

Pre-Collection 1: tidak lagi diproduksi atau didistribusikan oleh USGS, tidak didukung oleh Earth Engine, dan akan dihapus dari Katalog Data pada tahun 2024.

Collection 1: tidak lagi diproduksi atau didistribusikan oleh USGS, tidak didukung oleh Earth Engine, dan akan dihapus dari Katalog Data pada tahun 2024. Gunakan panduan migrasi untuk mengupdate skrip, modul, dan aplikasi Earth Engine ke Collection 2 paling lambat 1 Juli 2024 untuk menghindari permintaan yang gagal.

Koleksi 2: koleksi saat ini yang dibuat oleh USGS. Ketersediaan penuh di Katalog Data Earth Engine.

Metode pemrosesan Landsat

Earth Engine berisi berbagai metode pemrosesan khusus Landsat. Secara khusus, ada metode untuk menghitung radian di sensor, pantulan top-of-atmosphere (TOA), pantulan permukaan (SR), skor awan, dan komposit bebas awan.

Radiasi di sensor dan pantulan TOA

Tampilan "mentah" di Earth Engine berisi gambar dengan angka digital (DN) yang mewakili radian yang diskalakan. Konversi DN ke radian di sensor adalah transformasi linear menggunakan koefisien yang disimpan dalam metadata scene (Chander et al. 2009). Metode ee.Algorithms.Landsat.calibratedRadiance() melakukan konversi ini. Konversi ke pantulan TOA (atau di sensor) adalah transformasi linear yang memperhitungkan elevasi matahari dan jarak Bumi-Matahari yang bervariasi secara musiman. Konversi TOA ditangani oleh metode ee.Algorithms.Landsat.TOA(). Metode TOA mengonversi band termal menjadi suhu kecerahan. Lihat Chander et al. (2009) (atau situs USGS ini untuk Landsat 8) guna mengetahui informasi selengkapnya tentang penghitungan pantulan TOA atau suhu kecerahan. Contoh berikut menunjukkan konversi dari data mentah menjadi luminans dan pantulan TOA untuk gambar Landsat 8:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Pantulan permukaan

Data pantulan permukaan (SR) Landsat tersedia di Earth Engine sebagai salinan arsip USGS Collection 2, Level 2. Perhatikan bahwa data SR Landsat 4, 5, dan 7 dibuat menggunakan algoritma LEDAPS, sedangkan data SR Landsat 8 dan 9 dibuat menggunakan algoritma LaSRC. Pelajari algoritma ini dan perbedaannya dengan USGS.

Anda dapat mengakses gambar Landsat 8 USGS Collection 2, Level 2 seperti ini:

Editor Kode (JavaScript)

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

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

import ee
import geemap.core as geemap

Colab (Python)

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

Set data pantulan permukaan untuk Landsat 4 hingga 9 Collection 2 adalah:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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')

Skor cloud sederhana

Untuk memberi skor piksel Landsat berdasarkan kekeruhan relatifnya, Earth Engine menyediakan algoritma penskoran awan dasar dalam metode ee.Algorithms.Landsat.simpleCloudScore(). (Untuk mengetahui detail tentang penerapan, lihat skrip contoh Code Editor ini). Contoh berikut menggunakan algoritma penskoran cloud untuk menyamarkan awan dalam gambar Landsat 8:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Jika Anda menjalankan contoh ini di Code Editor, coba ubah visibilitas lapisan TOA untuk membandingkan perbedaan antara gambar yang disamarkan dan tidak disamarkan. (Lihat bagian Pengelola Lapisan dalam dokumen Editor Kode untuk mengetahui petunjuk cara melakukannya). Perhatikan bahwa input ke simpleCloudScore() adalah satu scene TOA Landsat. Perhatikan juga bahwa simpleCloudScore() menambahkan band yang disebut 'cloud' ke gambar input. Band awan berisi skor awan dari 0 (tidak berawan) hingga 100 (paling berawan). Contoh sebelumnya menggunakan nilai minimum arbitrer (20) pada skor awan untuk menyamarkan piksel berawan. Untuk menerapkan algoritma ini ke mosaik Earth Engine dari scene Landsat, tetapkan properti SENSOR_ID:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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 adalah properti dari setiap gambar. Saat membuat mosaik dari banyak gambar, Earth Engine harus menghapus metadata setiap gambar, termasuk properti SENSOR_ID. Untuk memberikan skor awan pada mosaik, Earth Engine akan mencari properti tersebut, tetapi tidak dapat menemukannya, sehingga menyebabkan error. Tetapkan properti secara manual untuk menghindarinya. ID sensor Landsat 5, 7, dan 8(9) masing-masing adalah 'TM', 'ETM', dan 'OLI_TIRS'.

Komposit sederhana

Untuk membuat komposit Landsat sederhana yang bebas awan, Earth Engine menyediakan metode ee.Algorithms.Landsat.simpleComposite(). Metode ini memilih subset scene di setiap lokasi, mengonversi ke pantulan TOA, menerapkan skor awan sederhana, dan mengambil median piksel yang paling berawan. Contoh ini membuat komposit sederhana menggunakan parameter default dan membandingkannya dengan komposit menggunakan parameter kustom untuk nilai minimum skor cloud dan persentil:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Perhatikan bahwa input ke gabungan sederhana adalah kumpulan gambar mentah. Perhatikan juga bahwa secara default, output band reflektif adalah pantulan yang diskalakan ke 8-bit dan output band termal adalah Kelvin minus 100, agar sesuai dengan rentang 8-bit. Anda dapat mengubah perilaku ini dengan menetapkan parameter asFloat ke true, untuk mendapatkan output float yang tidak diskalakan dan tidak digeser.