Landsat 컬렉션 구조
USGS는 각 위성에 대해 3단계 (카테고리)의 데이터를 생성합니다.
- Tier 1 (T1) - 기하학적 및 방사 보정 품질 요구사항을 충족하는 데이터
- Tier 2 (T2) - Tier 1 요구사항을 충족하지 않는 데이터
- 실시간 (RT) - 아직 평가되지 않은 데이터 (최대 한 달 소요)
자세한 내용은 컬렉션 2 등급에 관한 USGS 문서를 참고하세요.
검증된 T1 데이터와 최신 실시간 데이터에 모두 액세스할 수 있도록 장면을 등급 및 위성별로 컬렉션으로 그룹화했습니다. Landsat 8의 예는 다음과 같습니다.
ID | 설명 |
---|---|
LANDSAT/LC08/C02/T1_RT | Landsat 8, Collection 2, Tier 1 + 실시간 |
LANDSAT/LC08/C02/T1 | Landsat 8, Collection 2, Tier 1만 해당 |
LANDSAT/LC08/C02/T2 | Landsat 8, Collection 2, Tier 2만 해당 |
새로 획득한 장면은 매일 T1_RT 컬렉션에 추가됩니다. RT 장면이 다시 처리되고 T1 또는 T2로 분류되면 T1_RT 컬렉션에서 삭제되고 새 버전이 적절한 컬렉션에 추가됩니다. 삭제 또는 잘못 등록될 수 있는 장면에 민감한 작업인 경우 T1 컬렉션을 사용하는 것이 좋습니다. 하지만 일반적으로 새로 캡처한 장면에서 눈에 띄게 잘못 등록되는 경우는 매우 드뭅니다.
위의 각 컬렉션에는 원시 데이터 (즉, 크기 조정된 센서 광도)가 포함되어 있습니다. 또한 T1 또는 T2 이미지가 포함된 각 컬렉션에 대해 TOA (대기 상단 반사율), SR (표면 반사율), LST (지표 온도) 제품이 제공됩니다. 다음 표에서는 Landsat 8 데이터를 예로 사용하여 TOA 및 SR/LST 컬렉션의 컬렉션 ID를 설명합니다.
ID | 설명 |
---|---|
LANDSAT/LC08/C02/T1_RT_TOA | Landsat 8, Collection 2, Tier 1 + 실시간, TOA |
LANDSAT/LC08/C02/T1_TOA | Landsat 8, Collection 2, Tier 1만 해당, TOA |
LANDSAT/LC08/C02/T1_L2 | Landsat 8, Collection 2, Tier 1만 해당, SR 및 LST |
LANDSAT/LC08/C02/T2_TOA | Landsat 8, Collection 2, Tier 2만 해당, TOA |
이러한 데이터는 Landsat 4, 5, 7, 8, 9에 대해 존재합니다. 위의 컬렉션 정의에서 'LC08'을 다음 표의 ID로 바꾸면 다양한 위성의 컬렉션을 검색할 수 있습니다.
ID | 설명 |
---|---|
LT04 | Landsat 4, 테마틱 매퍼 (TM) |
LT05 | Landsat 5, 테마틱 매퍼 (TM) |
LE07 | Landsat 7, 향상된 주제 맵퍼 플러스 (ETM+) |
LC08 | Landsat 8, Operational Land Imager (OLI) |
LC09 | Landsat 9, Operational Land Imager 2 (OLI-2) |
Landsat 수집 상태
사전 컬렉션 1: 더 이상 USGS에서 제작하거나 배포하지 않으며 Earth Engine에서 지원하지 않으며 2024년에 Data Catalog에서 삭제됩니다.
컬렉션 1: 더 이상 USGS에서 제작하거나 배포하지 않으며 Earth Engine에서 지원하지 않으며 2024년에 Data Catalog에서 삭제됩니다. 요청 실패를 방지하려면 2024년 7월 1일까지 이전 가이드에 따라 Earth Engine 스크립트, 모듈, 앱을 컬렉션 2로 업데이트하세요.
컬렉션 2: USGS에서 제작한 현재 컬렉션입니다. Earth Engine Data Catalog에서 전체 기능을 사용할 수 있습니다.
Landsat 처리 방법
Earth Engine에는 다양한 Landsat용 처리 메서드가 포함되어 있습니다. 특히 센서에서의 방사광도, 대기 상단 (TOA) 반사율, 표면 반사율 (SR), 구름 점수, 구름이 없는 합성물을 계산하는 메서드가 있습니다.
센서에서의 방사광도 및 TOA 반사율
Earth Engine의 '원시' 장면에는 확장된 방사광도를 나타내는 디지털 숫자 (DN)가 포함된 이미지가 포함됩니다. DN을 센서 전 방사광으로 변환하는 것은 장면 메타데이터에 저장된 계수를 사용하는 선형 변환입니다(Chander et al. 2009). ee.Algorithms.Landsat.calibratedRadiance()
메서드가 이 변환을 실행합니다. TOA (또는 센서) 반사율로 변환하는 것은 태양 고도와 계절에 따라 달라지는 지구-태양 거리를 고려하는 선형 변환입니다. TOA 변환은 ee.Algorithms.Landsat.TOA()
메서드로 처리됩니다. TOA 방법은 열 밴드를 밝기 온도로 변환합니다. TOA 반사율 또는 밝기 온도 계산에 관한 자세한 내용은 Chander et al. (2009) (또는 Landsat 8의 경우 이 USGS 사이트)를 참고하세요. 다음 예는 Landsat 8 이미지의 원시 데이터를 방사광도 및 TOA 반사율로 변환하는 방법을 보여줍니다.
코드 편집기 (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');
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
표면 반사율
Landsat 표면 반사율 (SR) 데이터는 Earth Engine에서 USGS 컬렉션 2, 수준 2 보관 파일의 사본으로 사용할 수 있습니다. Landsat 4, 5, 7 SR 데이터는 LEDAPS 알고리즘을 사용하여 생성되는 반면, Landsat 8, 9 SR 데이터는 LaSRC 알고리즘을 사용하여 생성됩니다. 이러한 알고리즘과 USGS와의 차이점을 알아보세요.
다음과 같이 USGS Collection 2, Level 2 Landsat 8 이미지에 액세스할 수 있습니다.
코드 편집기 (JavaScript)
var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');
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');
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');
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
Code Editor에서 이 예시를 실행하는 경우 TOA 레이어의 공개 상태를 전환하여 마스크 처리된 이미지와 마스크 처리되지 않은 이미지의 차이를 비교해 보세요. (방법은 Code Editor 문서의 레이어 관리자 섹션을 참고하세요.) 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');
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)의 센서 ID는 각각 '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');
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
매개변수를 true로 설정하여 이 동작을 변경하면 크기 조정되지 않고 이동되지 않은 부동 소수점 출력을 얻을 수 있습니다.