อัลกอริทึมของ Landsat

โครงสร้างคอลเล็กชัน Landsat

USGS ผลิตข้อมูล 3 ระดับ (หมวดหมู่) สำหรับดาวเทียมแต่ละดวง ดังนี้

  • ระดับ 1 (T1) - ข้อมูลที่เป็นไปตามข้อกำหนดด้านคุณภาพเชิงเรขาคณิตและรังสีวิทยา
  • ระดับ 2 (T2) - ข้อมูลไม่เป็นไปตามข้อกำหนดระดับ 1
  • เรียลไทม์ (RT) - ข้อมูลที่ยังไม่ได้รับการประเมิน (อาจใช้เวลาถึง 1 เดือน)

ดูข้อมูลเพิ่มเติมได้ใน เอกสารประกอบของ USGS เกี่ยวกับคอลเล็กชันระดับ 2

เราได้จัดกลุ่มภาพออกเป็นคอลเล็กชันตามระดับและดาวเทียมเพื่อให้เข้าถึงทั้งข้อมูล 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, Collection 2, ระดับ 2 เท่านั้น

ระบบจะเพิ่มฉากใหม่ที่ได้มาลงในคอลเล็กชัน T1_RT ทุกวัน เมื่อฉาก RT ได้รับการดำเนินการประมวลผลอีกครั้งและจัดหมวดหมู่เป็น T1 หรือ T2 ระบบจะนำฉากดังกล่าวออกจากคอลเล็กชัน T1_RT และเพิ่มเวอร์ชันใหม่ลงในคอลเล็กชันที่เหมาะสม หากผลงานของคุณมีความละเอียดอ่อนต่อการนําออกหรือฉากที่อาจลงทะเบียนไม่ถูกต้อง คุณอาจต้องใช้คอลเล็กชัน T1 ต่อไป แต่โดยทั่วไปแล้ว การที่ระบบลงทะเบียนไม่ถูกต้องจะมีขนาดมากพอที่จะสังเกตได้ในฉากที่ได้รับใหม่นั้นเกิดขึ้นได้น้อยมาก

คอลเล็กชันก่อนหน้าแต่ละรายการมีข้อมูลดิบ (นั่นคือ รังสีที่เซ็นเซอร์วัดได้ซึ่งปรับสเกลแล้ว) นอกจากนี้ แต่ละคอลเล็กชันที่มีรูปภาพ T1 หรือ T2 จะมีผลิตภัณฑ์ TOA (การสะท้อนแสงที่ชั้นบรรยากาศด้านบน) SR (การสะท้อนแสงที่พื้นผิว) และ LST (อุณหภูมิพื้นผิวดิน) ตารางต่อไปนี้อธิบายรหัสคอลเล็กชันสำหรับคอลเล็กชัน TOA และ SR/LST โดยใช้ข้อมูล Landsat 8 เป็นตัวอย่าง

รหัส คำอธิบาย
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Collection 2, Tier 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Collection 2, Tier 1 เท่านั้น, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8, Collection 2, ระดับ 1 เท่านั้น, SR และ LST
LANDSAT/LC08/C02/T2_TOA Landsat 8, Collection 2, ระดับ 2 เท่านั้น, TOA

ข้อมูลเหล่านี้มีอยู่ใน Landsat 4, 5, 7, 8 และ 9 แทนที่ "LC08" ในคำจำกัดความของคอลเล็กชันก่อนหน้าด้วยรหัสจากตารางต่อไปนี้เพื่อเรียกข้อมูลคอลเล็กชันสำหรับดาวเทียมต่างๆ

รหัส คำอธิบาย
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)

สถานะการรวบรวมข้อมูล Landsat

ก่อนการรวบรวม 1: USGS ไม่ได้ผลิตหรือจัดจำหน่ายอีกต่อไป Earth Engine ไม่รองรับ และจะนําออกจากแคตตาล็อกข้อมูลในปี 2024

คอลเล็กชันที่ 1: USGS ไม่ได้ผลิตหรือจัดจำหน่ายอีกต่อไป Earth Engine ไม่รองรับ และจะนําออกจากแคตตาล็อกข้อมูลในปี 2024 ใช้คำแนะนำในการย้ายข้อมูลเพื่ออัปเดตสคริปต์ โมดูล และแอป Earth Engine เป็นคอลเล็กชัน 2 ภายในวันที่ 1 กรกฎาคม 2024 เพื่อไม่ให้คำขอดำเนินการไม่สำเร็จ

คอลเล็กชัน 2: คอลเล็กชันปัจจุบันที่ผลิตโดย USGS พร้อมใช้งานอย่างเต็มรูปแบบในแคตตาล็อกข้อมูล Earth Engine

วิธีการประมวลผล Landsat

Earth Engine มีวิธีการประมวลผลเฉพาะของ Landsat ที่หลากหลาย กล่าวโดยละเอียดคือ มีวิธีการคํานวณการแผ่รังสีที่เซ็นเซอร์ การสะท้อนกลับที่ชั้นบรรยากาศ (TOA) การสะท้อนกลับของพื้นผิว (SR) คะแนนเมฆ และภาพรวมแบบไม่มีเมฆ

ความส่องสว่างที่เซ็นเซอร์และการสะท้อนแสงที่ TOA

ฉาก "ดิบ" ใน Earth Engine มีภาพที่มีตัวเลขดิจิทัล (DN) ที่แสดงถึงการแผ่รังสีที่ปรับขนาดแล้ว การแปลง DN เป็นรังสีที่เซ็นเซอร์เป็นการเปลี่ยนรูปแบบเชิงเส้นโดยใช้สัมประสิทธิ์ที่เก็บไว้ในข้อมูลเมตาของฉาก (Chander et al. 2009) เมธอด ee.Algorithms.Landsat.calibratedRadiance() จะทําการเปลี่ยนรูปแบบนี้ การแปลงเป็น การสะท้อนแสง TOA (หรือที่เซ็นเซอร์) คือการเปลี่ยนรูปแบบเชิงเส้นที่พิจารณาความสูงของดวงอาทิตย์และระยะทางระหว่างโลกกับดวงอาทิตย์ที่เปลี่ยนแปลงตามฤดูกาล Conversion TOA ได้รับการจัดการโดยee.Algorithms.Landsat.TOA()วิธี วิธีการ TOA จะแปลงย่านความถี่ความร้อนเป็นอุณหภูมิความสว่าง ดูข้อมูลเพิ่มเติมเกี่ยวกับการคํานวณการสะท้อนแสงที่ระดับพื้นดินหรืออุณหภูมิความสว่างได้จากบทความของ Chander et al. (2009) (หรือเว็บไซต์ USGS นี้สําหรับ Landsat 8) ตัวอย่างต่อไปนี้แสดงการเปลี่ยนจากข้อมูลดิบเป็นปริมาณการแผ่รังสีและการสะท้อนแสงที่ระดับพื้นดิน (TOA) สำหรับภาพ 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

การสะท้อนของพื้นผิว

ข้อมูลการสะท้อนแสงจากพื้นผิว (SR) ของ Landsat มีอยู่ใน Earth Engine เป็นสำเนาของที่เก็บถาวรระดับ 2 ของ USGS โปรดทราบว่าข้อมูล SR ของ Landsat 4, 5 และ 7 สร้างขึ้นโดยใช้อัลกอริทึม LEDAPS ส่วนข้อมูล SR ของ Landsat 8 และ 9 สร้างขึ้นโดยใช้อัลกอริทึม LaSRC ดูข้อมูลเกี่ยวกับอัลกอริทึมเหล่านี้และความแตกต่างจาก USGS

คุณเข้าถึงคอลเล็กชัน 2 ของ USGS ซึ่งเป็นภาพ Landsat 8 ระดับ 2 ได้โดยทำดังนี้

เครื่องมือแก้ไขโค้ด (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')

ชุดข้อมูลการสะท้อนแสงของพื้นผิวสำหรับ Collection 2 ของ Landsat 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')

คะแนนระบบคลาวด์แบบง่าย

สําหรับการให้คะแนนพิกเซล Landsat ตามระดับความขุ่นของเมฆ Earth Engine มีอัลกอริทึมการให้คะแนนเมฆขั้นพื้นฐานในวิธีการ ee.Algorithms.Landsat.simpleCloudScore() (ดูรายละเอียดการใช้งานได้ที่สคริปต์ตัวอย่างของเครื่องมือแก้ไขโค้ดนี้) ตัวอย่างต่อไปนี้ใช้อัลกอริทึมการให้คะแนนเมฆเพื่อปกปิดเมฆในภาพ 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() คือภาพ TOA ของ Landsat 1 ภาพ และโปรดทราบว่า 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 บิต และเอาต์พุตของแถบความร้อนจะปรับเป็นเคลวินลบ 100 เพื่อให้พอดีกับช่วง 8 บิต คุณเปลี่ยนลักษณะการทำงานนี้ได้โดยการตั้งค่าพารามิเตอร์ asFloat เป็น "จริง" เพื่อรับเอาต์พุตแบบลอยตัวที่ไม่ได้ปรับขนาดและไม่ได้เลื่อน