Sentinel-1은 유럽연합에서 자금을 지원하고 코페르니쿠스 프로그램의 일환으로 유럽우주기구(ESA)에서 수행하는 우주 임무입니다. Sentinel-1은 다양한 편파와 해상도로 C-밴드 합성개구레이더 (SAR) 이미지를 수집합니다. 레이더 데이터를 보정하고 직교 보정된 이미지를 얻으려면 여러 전문 알고리즘이 필요하므로 이 문서에서는 Earth Engine에서 Sentinel-1 데이터를 사전 처리하는 방법을 설명합니다.
Sentinel-1 데이터는 상승 궤도와 하강 궤도 모두에서 여러 가지 기기 구성, 해상도, 밴드 조합으로 수집됩니다. 이러한 이질성으로 인해 일반적으로 처리를 시작하기 전에 데이터를 동질적인 하위 집합으로 필터링해야 합니다. 이 프로세스는 아래 메타데이터 및 필터링 섹션에 설명되어 있습니다.
메타데이터 및 필터링
Sentinel-1 데이터의 동질한 하위 집합을 만들려면 일반적으로 메타데이터 속성을 사용하여 컬렉션을 필터링해야 합니다. 필터링에 사용되는 일반적인 메타데이터 필드에는 다음 속성이 포함됩니다.
transmitterReceiverPolarisation
: ['VV'], ['HH'], ['VV', 'VH'] 또는 ['HH', 'HV']instrumentMode
: 'IW' (간섭계 폭넓은 대역), 'EW'(매우 넓은 대역) 또는 'SM' (스트립 맵) 자세한 내용은 이 참조를 참고하세요.orbitProperties_pass
: 'ASCENDING' 또는 'DESCENDING'resolution_meters
: 10, 25 또는 40resolution
: 'M' (중간) 또는 'H' (높음)입니다. 자세한 내용은 이 참조를 참고하세요.
다음 코드는 transmitterReceiverPolarisation
, instrumentMode
, orbitProperties_pass
속성별로 Sentinel-1 컬렉션을 필터링한 다음 지도에 표시되는 여러 관측 조합의 합성물을 계산하여 이러한 특성이 데이터에 미치는 영향을 보여줍니다.
코드 편집기 (JavaScript)
// Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations. var sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD') .filterDate('2020-06-01', '2020-10-01'); // Filter the Sentinel-1 collection by metadata properties. var vvVhIw = sentinel1 // Filter to get images with VV and VH dual polarization. .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')) .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')) // Filter to get images collected in interferometric wide swath mode. .filter(ee.Filter.eq('instrumentMode', 'IW')); // Separate ascending and descending orbit images into distinct collections. var vvVhIwAsc = vvVhIw.filter( ee.Filter.eq('orbitProperties_pass', 'ASCENDING')); var vvVhIwDesc = vvVhIw.filter( ee.Filter.eq('orbitProperties_pass', 'DESCENDING')); // Calculate temporal means for various observations to use for visualization. // Mean VH ascending. var vhIwAscMean = vvVhIwAsc.select('VH').mean(); // Mean VH descending. var vhIwDescMean = vvVhIwDesc.select('VH').mean(); // Mean VV for combined ascending and descending image collections. var vvIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VV').mean(); // Mean VH for combined ascending and descending image collections. var vhIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VH').mean(); // Display the temporal means for various observations, compare them. Map.addLayer(vvIwAscDescMean, {min: -12, max: -4}, 'vvIwAscDescMean'); Map.addLayer(vhIwAscDescMean, {min: -18, max: -10}, 'vhIwAscDescMean'); Map.addLayer(vhIwAscMean, {min: -18, max: -10}, 'vhIwAscMean'); Map.addLayer(vhIwDescMean, {min: -18, max: -10}, 'vhIwDescMean'); Map.setCenter(-73.8719, 4.512, 9); // Bogota, Colombia
import ee import geemap.core as geemap
Colab (Python)
# Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations. sentinel_1 = ee.ImageCollection('COPERNICUS/S1_GRD').filterDate( '2020-06-01', '2020-10-01' ) # Filter the Sentinel-1 collection by metadata properties. vv_vh_iw = ( sentinel_1.filter( # Filter to get images with VV and VH dual polarization. ee.Filter.listContains('transmitterReceiverPolarisation', 'VV') ) .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')) .filter( # Filter to get images collected in interferometric wide swath mode. ee.Filter.eq('instrumentMode', 'IW') ) ) # Separate ascending and descending orbit images into distinct collections. vv_vh_iw_asc = vv_vh_iw.filter( ee.Filter.eq('orbitProperties_pass', 'ASCENDING') ) vv_vh_iw_desc = vv_vh_iw.filter( ee.Filter.eq('orbitProperties_pass', 'DESCENDING') ) # Calculate temporal means for various observations to use for visualization. # Mean VH ascending. vh_iw_asc_mean = vv_vh_iw_asc.select('VH').mean() # Mean VH descending. vh_iw_desc_mean = vv_vh_iw_desc.select('VH').mean() # Mean VV for combined ascending and descending image collections. vv_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VV').mean() # Mean VH for combined ascending and descending image collections. vh_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VH').mean() # Display the temporal means for various observations, compare them. m = geemap.Map() m.add_layer(vv_iw_asc_desc_mean, {'min': -12, 'max': -4}, 'vv_iw_asc_desc_mean') m.add_layer( vh_iw_asc_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_desc_mean' ) m.add_layer(vh_iw_asc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_mean') m.add_layer(vh_iw_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_desc_mean') m.set_center(-73.8719, 4.512, 9) # Bogota, Colombia m
Sentinel-1 사전 처리
Earth Engine 'COPERNICUS/S1_GRD'
Sentinel-1 ImageCollection
의 이미지는 데시벨(dB) 단위의 후방 산란 계수 (σ°)로 처리된 레벨 1 지상 거리 감지 (GRD) 장면으로 구성됩니다. 후방 산란 계수는 단위 지상 면적당 타겟 후방 산란 영역 (레이더 단면적)을 나타냅니다. 수십 배까지 달라질 수 있으므로 10*log10σ°로 dB로 변환됩니다. 방사된 지형이 입사하는 마이크로파 방사선을 SAR 센서에서 멀리 흩어지게 하는지(dB < 0) 또는 SAR 센서 쪽으로 흩어지게 하는지(dB > 0)를 측정합니다. 이 산란 동작은 지형의 물리적 특성, 주로 지형 요소의 도형 및 전자기적 특성에 따라 달라집니다.
Earth Engine은 Sentinel-1 도구 상자에서 구현한 다음과 같은 사전 처리 단계를 사용하여 각 픽셀의 후방 산란 계수를 도출합니다.
- 궤도 파일 적용
- 복원된 궤도 파일(또는 복원된 파일을 사용할 수 없는 경우 정확한 궤도 파일)로 궤도 메타데이터를 업데이트합니다.
- GRD 경계선 노이즈 제거
- 장면 가장자리의 낮은 강도 노이즈와 잘못된 데이터를 삭제합니다. (2018년 1월 12일 기준)
- 열 노이즈 제거
- 하위 스와프에서 추가 노이즈를 제거하여 다중 스와프 획득 모드에서 장면의 하위 스와프 간의 불연속성을 줄입니다. (2015년 7월 이전에 생성된 이미지에는 이 작업을 적용할 수 없습니다.)
- 방사 보정 값 적용
- GRD 메타데이터의 센서 보정 매개변수를 사용하여 후방 산란 강도를 계산합니다.
- 지형 보정 (오르토레티컬 보정)
- 지형을 고려하지 않는 지상 거리 도형의 데이터를 SRTM 30미터 DEM 또는 고위도 (60° 초과 또는 -60° 미만)의 경우 ASTER DEM을 사용하여 σ°로 변환합니다.
데이터 세트 메모
- 산 경사면의 아티팩트로 인해 방사온도 지형 평탄화가 적용되지 않습니다.
- 단위 없는 백스캐터 계수는 위에서 설명한 대로 dB로 변환됩니다.
- 현재 Sentinel-1 SLC 데이터는 처리할 수 없습니다. Earth Engine은 위상 정보를 손실하지 않고 피라미드화 중에 평균을 내지 못하기 때문에 복잡한 값이 있는 이미지를 지원하지 않습니다.
- S1 도구 상자의 테두리 노이즈 제거 작업의
computeNoiseScalingFactor()
함수가 SM 모드를 지원하지 않으므로 GRD SM 애셋이 처리되지 않습니다.