Landsat Algoritmaları

Landsat koleksiyonu yapısı

USGS, her bir uydu için 3 katmanda (kategoride) veri üretir:

  • 1. Katman (T1): Geometri ve radyometrik kalite koşullarını karşılayan veriler
  • 2. Katman (T2): 1. Katman koşullarını karşılamayan veriler
  • Gerçek Zamanlı (RT): Henüz değerlendirilmemiş veriler (bir ay kadar sürer).

Daha fazla bilgi için Collection 2 katmanlarıyla ilgili USGS belgelerine bakın.

Hem doğrulanmış T1 verilerine hem de en yeni gerçek zamanlı verilere birlikte erişilmesine izin vermek için sahneleri katmana ve uyduya göre koleksiyonlar halinde gruplandırdık. Landsat 8 için örnekler aşağıda verilmiştir:

Kimlik Açıklama
LANDSAT/LC08/C02/T1_RT Landsat 8, Collection 2, Tier 1 + Real Time
LANDSAT/LC08/C02/T1 Landsat 8, Collection 2, yalnızca 1. Katman
LANDSAT/LC08/C02/T2 Landsat 8, Collection 2, yalnızca 2. Katman

Yeni edinilen sahneler T1_RT koleksiyonuna her gün eklenir. Bir RT sahnesi yeniden işlenip T1 veya T2 olarak sınıflandırıldıktan sonra T1_RT koleksiyonundan kaldırılır ve yeni sürüm uygun koleksiyonlara eklenir. Çalışmanız, kaldırmalara veya yanlış kaydedilmiş olabilecek sahnelere karşı hassassa T1 koleksiyonunu kullanabilirsiniz. Ancak genel olarak, yanlış kayıtların yeni edinilen sahnelerde fark edilecek kadar büyük olması çok nadirdir.

Önceki koleksiyonların her biri ham verileri (ör. ölçeklendirilmiş, sensördeki parlaklık) içerir. Ayrıca, T1 veya T2 görüntüleri içeren her koleksiyon için TOA (atmosferin üst kısmındaki yansıma), SR (yüzey yansıması) ve LST (arazi yüzey sıcaklığı) ürünleri sunulur. Aşağıdaki tabloda, Landsat 8 verileri örnek olarak kullanılarak TOA ve SR/LST koleksiyonlarının koleksiyon kimliği açıklanmaktadır.

Kimlik Açıklama
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Collection 2, Tier 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Collection 2, yalnızca 1. Katman, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8, Collection 2, yalnızca 1. Katman, SR ve LST
LANDSAT/LC08/C02/T2_TOA Landsat 8, Collection 2, yalnızca 2. Katman, TOA

Bu veriler Landsat 4, 5, 7, 8 ve 9 için mevcuttur. Çeşitli uyduların koleksiyonlarını almak için önceki koleksiyon tanımlarındaki "LC08" ifadesini aşağıdaki tablodaki kimliklerle değiştirin.

Kimlik Açıklama
LT04 Landsat 4, Thematic Mapper (TM)
LT05 Landsat 5, Thematic Mapper (TM)
LE07 Landsat 7, Gelişmiş Tematik Tarayıcı Plus (ETM+)
LC08 Landsat 8, Operational Land Imager (OLI)
LC09 Landsat 9, Operational Land Imager 2 (OLI-2)

Landsat koleksiyonu durumu

1. Koleksiyon Öncesi: Artık USGS tarafından üretilmiyor veya dağıtılmıyor, Earth Engine tarafından desteklenmiyor, 2024'te Veri Kataloğu'ndan kaldırılacak.

Koleksiyon 1: Artık USGS tarafından üretilmiyor veya dağıtılmıyor, Earth Engine tarafından desteklenmiyor ve 2024'te Veri Kataloğu'ndan kaldırılacak. Başarısız isteklerin önüne geçmek için Earth Engine komut dosyalarınızı, modüllerinizi ve uygulamalarınızı 1 Temmuz 2024'e kadar Koleksiyon 2'ye güncellemek üzere taşıma kılavuzunu kullanın.

Collection 2: USGS tarafından üretilen mevcut koleksiyon. Earth Engine Veri Kataloğu'nda tam kullanılabilirlik

Landsat işleme yöntemleri

Earth Engine, Landsat'a özgü çeşitli işleme yöntemleri içerir. Daha açık belirtmek gerekirse, algılayıcıdaki parlaklık, atmosferin üst kısmındaki (TOA) yansıma, yüzey yansıması (SR), bulut puanı ve bulutsuz kompozitleri hesaplamak için yöntemler vardır.

Sensördeki parlaklık ve TOA yansıması

Earth Engine'daki "ham" sahneler, ölçeklendirilmiş parlaklık değerini temsil eden dijital sayılar (DN'ler) içeren görüntüler içerir. DN'lerin sensördeki radyansa dönüştürülmesi, sahne meta verilerinde depolanan katsayıların kullanıldığı doğrusal bir dönüşümdür (Chander et al. 2009). ee.Algorithms.Landsat.calibratedRadiance() yöntemi bu dönüşümü gerçekleştirir. TOA (veya sensördeki) yansıma değerine dönüştürme işlemi, güneş yüksekliğini ve mevsimsel olarak değişen Dünya-Güneş mesafesini hesaba katan doğrusal bir dönüşümdür. TOA dönüşümü, ee.Algorithms.Landsat.TOA() yöntemi tarafından yönetilir. TOA yöntemi, termal bantları parlaklık sıcaklığına dönüştürür. TOA yansıma veya parlaklık sıcaklığını hesaplama hakkında daha fazla bilgi için Chander et al. (2009) (veya Landsat 8 için bu USGS sitesine) bakın. Aşağıdaki örnekte, Landsat 8 görüntüsü için ham verilerden parlaklık ve TOA yansıma değerine dönüşüm gösterilmektedir:

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Yüzey yansıtması

Landsat yüzey yansıması (SR) verileri, USGS Collection 2, Level 2 arşivindeki bir kopya olarak Earth Engine'da kullanılabilir. Landsat 4, 5 ve 7 SR verilerinin LEDAPS algoritması, Landsat 8 ve 9 SR verilerinin ise LaSRC algoritması kullanılarak oluşturulduğunu unutmayın. Bu algoritmalar ve USGS'den farkları hakkında bilgi edinin.

USGS Collection 2, Level 2 Landsat 8 görüntüsüne şu şekilde erişebilirsiniz:

Kod Düzenleyici (JavaScript)

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

Python kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

import ee
import geemap.core as geemap

Colab (Python)

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

Collection 2 Landsat 4-9 için yüzey yansıması veri kümeleri şunlardır:

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Basit bulut puanı

Landsat piksellerini göreceli bulutluluklarına göre puanlamak için Earth Engine, ee.Algorithms.Landsat.simpleCloudScore() yönteminde temel bir bulut puanlama algoritması sağlar. (Uygulama hakkında ayrıntılı bilgi için bu Code Editor örnek komut dosyasına bakın). Aşağıdaki örnekte, Landsat 8 görüntüsünde bulutları maskelemek için bulut puanlama algoritması kullanılmaktadır:

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Bu örneği Kod Düzenleyici'de çalıştırırsanız maskelenmiş ve maskesiz görüntüler arasındaki farkı karşılaştırmak için TOA katmanlarının görünürlüğünü değiştirmeyi deneyin. (Bunun nasıl yapılacağıyla ilgili talimatlar için Kod Düzenleyici dokümanlarının Katman Yöneticisi bölümüne bakın). simpleCloudScore() işlevine tek bir Landsat TOA sahnesinin girildiğini unutmayın. Ayrıca simpleCloudScore()'ün, giriş resmine 'cloud' adlı bir bant eklediğini unutmayın. Bulut bandı, 0 (bulutsuz) ile 100 (en çok bulutlu) arasında değişen bulut puanını içerir. Önceki örnekte, bulutlu pikselleri maskelemek için bulut puanında rastgele bir eşik (20) kullanılmaktadır. Bu algoritmayı Landsat sahnelerinin Earth Engine mozaiğine uygulamak için SENSOR_ID özelliğini ayarlayın:

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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, tek tek resimlerin bir özelliğidir. Earth Engine, birçok görüntüden mozaikle bir resim oluşturduğunda SENSOR_ID mülkü dahil olmak üzere her bir görüntünün meta verilerini çıkarmalıdır. Earth Engine, bir mozaiğin bulut puanını belirlemek için söz konusu özelliği arar ve bulamazsa hata meydana gelir. Bu durumu önlemek için mülkü manuel olarak ayarlayın. Landsat 5, 7 ve 8'in(9) sensör kimlikleri sırasıyla "TM", "ETM" ve "OLI_TIRS" şeklindedir.

Basit kompozit

Earth Engine, bulutsuz basit Landsat kompozitleri oluşturmak için ee.Algorithms.Landsat.simpleComposite() yöntemini sunar. Bu yöntem, her konumda bir sahne alt kümesi seçer, TOA yansımasına dönüştürür, basit bulut puanını uygular ve en az bulutlu piksellerin ortanca değerini alır. Bu örnekte, varsayılan parametreler kullanılarak basit bir birleşik oluşturulur ve bu birleşik, bulut puanı eşiği ve yüzdelik dilim için özel parametreler kullanan bir birleşik ile karşılaştırılır:

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Basit kompozisyona verilen girişin ham görüntülerden oluşan bir koleksiyon olduğunu unutmayın. Ayrıca, varsayılan olarak yansıtıcı bant çıkışının 8 bitlik aralığa sığması için yansımanın 8 bit olarak ölçeklendirildiğini ve termal bant çıkışının Kelvin eksi 100 olduğunu unutmayın. Ölçeklenmemiş ve kaydırılmamış kayan nokta çıkışı almak için asFloat parametresini doğru olarak ayarlayarak bu davranışı değiştirebilirsiniz.