공지사항:
2025년 4월 15일 전에 Earth Engine 사용을 위해 등록된 모든 비상업용 프로젝트는 Earth Engine 액세스를 유지하기 위해
비상업용 자격 요건을 인증해야 합니다.
Sentinel-1 알고리즘
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
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 또는 40
resolution
: '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
Python 설정
Python API 및 대화형 개발을 위한 geemap
사용에 관한 자세한 내용은
Python 환경 페이지를 참고하세요.
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 메타데이터의 센서 보정 매개변수를 사용하여 후방 산란 강도를 계산합니다.
- 지형 보정 (오르토레티컬 보정)
데이터 세트 메모
- 산 경사면의 아티팩트로 인해 방사온도 지형 평탄화가 적용되지 않습니다.
- 단위 없는 백스캐터 계수는 위에서 설명한 대로 dB로 변환됩니다.
- 현재 Sentinel-1 SLC 데이터는 처리할 수 없습니다. Earth Engine은 위상 정보를 손실하지 않고 피라미드화 중에 평균을 내지 못하기 때문에 복잡한 값이 있는 이미지를 지원하지 않습니다.
- S1 도구 상자의 테두리 노이즈 제거 작업의
computeNoiseScalingFactor()
함수가 SM 모드를 지원하지 않으므로 GRD SM 애셋이 처리되지 않습니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-07-25(UTC)
[null,null,["최종 업데이트: 2025-07-25(UTC)"],[[["\u003cp\u003eSentinel-1, part of the Copernicus Programme, provides C-band SAR data for various applications.\u003c/p\u003e\n"],["\u003cp\u003ePre-processing of Sentinel-1 data in Earth Engine involves filtering by metadata and applying specific algorithms.\u003c/p\u003e\n"],["\u003cp\u003eMetadata filtering is crucial for creating a homogeneous subset of data based on polarization, instrument mode, and orbit properties.\u003c/p\u003e\n"],["\u003cp\u003eEarth Engine automatically applies preprocessing steps including orbit file application, noise removal, radiometric calibration, and terrain correction to Sentinel-1 GRD data.\u003c/p\u003e\n"],["\u003cp\u003eThe data represents backscatter coefficient (σ°) in decibels (dB) and undergoes several processing steps to derive this value.\u003c/p\u003e\n"]]],["Sentinel-1 data, collected by the European Space Agency, is pre-processed in Earth Engine to obtain calibrated imagery. Key actions include filtering the heterogeneous data using metadata properties like `transmitterReceiverPolarisation`, `instrumentMode`, `orbitProperties_pass`, `resolution_meters`, and `resolution`. This is demonstrated in code examples using JavaScript and Python, calculating temporal means for visualization. Preprocessing steps involve applying orbit files, removing noise, radiometric calibration, and terrain correction to derive the backscatter coefficient in decibels (dB).\n"],null,["# Sentinel-1 Algorithms\n\n[Sentinel-1](https://earth.esa.int/web/sentinel/missions/sentinel-1) is a\nspace mission funded by the European Union and carried out by the European Space Agency\n(ESA) within the Copernicus Programme. Sentinel-1 collects C-band synthetic aperture\nradar (SAR) imagery at a variety of polarizations and resolutions. Since radar data\nrequires several specialized algorithms to obtain calibrated, orthorectified imagery,\nthis document describes pre-processing of Sentinel-1 data in Earth Engine.\n\nSentinel-1 data is collected with several different instrument configurations,\nresolutions, band combinations during both ascending and descending orbits. Because\nof this heterogeneity, it's usually necessary to filter the data down to a\nhomogeneous subset before starting processing. This process is outlined below in the\n[Metadata and Filtering](/earth-engine/guides/sentinel1#metadata-and-filtering) section.\n\nMetadata and Filtering\n----------------------\n\nTo create a homogeneous subset of Sentinel-1 data, it will usually be necessary to\nfilter the collection using metadata properties. The common metadata fields used for\nfiltering include these properties:\n\n1. `transmitterReceiverPolarisation`: \\['VV'\\], \\['HH'\\], \\['VV', 'VH'\\], or \\['HH', 'HV'\\]\n2. `instrumentMode`: 'IW' (Interferometric Wide Swath), 'EW' (Extra Wide Swath) or 'SM' (Strip Map). See [this\n reference](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/acquisition-modes) for details.\n3. `orbitProperties_pass`: 'ASCENDING' or 'DESCENDING'\n4. `resolution_meters`: 10, 25 or 40\n5. `resolution`: 'M' (medium) or 'H' (high). See [this\n reference](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/resolutions/level-1-ground-range-detected) for details.\n\nThe following code filters the Sentinel-1 collection by\n`transmitterReceiverPolarisation`, `instrumentMode`, and\n`orbitProperties_pass` properties, then calculates composites for several\nobservation combinations that are displayed in the map to demonstrate how these\ncharacteristics affect the data.\n\n### Code Editor (JavaScript)\n\n```javascript\n// Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations.\nvar sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD')\n .filterDate('2020-06-01', '2020-10-01');\n\n// Filter the Sentinel-1 collection by metadata properties.\nvar vvVhIw = sentinel1\n // Filter to get images with VV and VH dual polarization.\n .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))\n .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))\n // Filter to get images collected in interferometric wide swath mode.\n .filter(ee.Filter.eq('instrumentMode', 'IW'));\n\n// Separate ascending and descending orbit images into distinct collections.\nvar vvVhIwAsc = vvVhIw.filter(\n ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));\nvar vvVhIwDesc = vvVhIw.filter(\n ee.Filter.eq('orbitProperties_pass', 'DESCENDING'));\n\n// Calculate temporal means for various observations to use for visualization.\n// Mean VH ascending.\nvar vhIwAscMean = vvVhIwAsc.select('VH').mean();\n// Mean VH descending.\nvar vhIwDescMean = vvVhIwDesc.select('VH').mean();\n// Mean VV for combined ascending and descending image collections.\nvar vvIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VV').mean();\n// Mean VH for combined ascending and descending image collections.\nvar vhIwAscDescMean = vvVhIwAsc.merge(vvVhIwDesc).select('VH').mean();\n\n// Display the temporal means for various observations, compare them.\nMap.addLayer(vvIwAscDescMean, {min: -12, max: -4}, 'vvIwAscDescMean');\nMap.addLayer(vhIwAscDescMean, {min: -18, max: -10}, 'vhIwAscDescMean');\nMap.addLayer(vhIwAscMean, {min: -18, max: -10}, 'vhIwAscMean');\nMap.addLayer(vhIwDescMean, {min: -18, max: -10}, 'vhIwDescMean');\nMap.setCenter(-73.8719, 4.512, 9); // Bogota, Colombia\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Load the Sentinel-1 ImageCollection, filter to Jun-Sep 2020 observations.\nsentinel_1 = ee.ImageCollection('COPERNICUS/S1_GRD').filterDate(\n '2020-06-01', '2020-10-01'\n)\n\n# Filter the Sentinel-1 collection by metadata properties.\nvv_vh_iw = (\n sentinel_1.filter(\n # Filter to get images with VV and VH dual polarization.\n ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')\n )\n .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))\n .filter(\n # Filter to get images collected in interferometric wide swath mode.\n ee.Filter.eq('instrumentMode', 'IW')\n )\n)\n\n# Separate ascending and descending orbit images into distinct collections.\nvv_vh_iw_asc = vv_vh_iw.filter(\n ee.Filter.eq('orbitProperties_pass', 'ASCENDING')\n)\nvv_vh_iw_desc = vv_vh_iw.filter(\n ee.Filter.eq('orbitProperties_pass', 'DESCENDING')\n)\n\n# Calculate temporal means for various observations to use for visualization.\n# Mean VH ascending.\nvh_iw_asc_mean = vv_vh_iw_asc.select('VH').mean()\n# Mean VH descending.\nvh_iw_desc_mean = vv_vh_iw_desc.select('VH').mean()\n# Mean VV for combined ascending and descending image collections.\nvv_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VV').mean()\n# Mean VH for combined ascending and descending image collections.\nvh_iw_asc_desc_mean = vv_vh_iw_asc.merge(vv_vh_iw_desc).select('VH').mean()\n\n# Display the temporal means for various observations, compare them.\nm = geemap.Map()\nm.add_layer(vv_iw_asc_desc_mean, {'min': -12, 'max': -4}, 'vv_iw_asc_desc_mean')\nm.add_layer(\n vh_iw_asc_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_desc_mean'\n)\nm.add_layer(vh_iw_asc_mean, {'min': -18, 'max': -10}, 'vh_iw_asc_mean')\nm.add_layer(vh_iw_desc_mean, {'min': -18, 'max': -10}, 'vh_iw_desc_mean')\nm.set_center(-73.8719, 4.512, 9) # Bogota, Colombia\nm\n```\n\nSentinel-1 Preprocessing\n------------------------\n\nImagery in the Earth Engine `'COPERNICUS/S1_GRD'` Sentinel-1\n`ImageCollection` is consists of Level-1 Ground Range Detected\n(GRD) scenes processed to backscatter coefficient (σ°) in\ndecibels (dB). The backscatter coefficient represents\ntarget backscattering area (radar cross-section) per unit ground area. Because it can\nvary by several orders of magnitude, it is converted to dB as\n10\\*log~10~σ°. It measures whether the radiated terrain scatters\nthe incident microwave radiation preferentially away from the SAR sensor\ndB \\\u003c 0) or towards the SAR sensor dB \\\u003e 0). This scattering behavior depends on the\nphysical characteristics of the terrain, primarily the geometry of the terrain elements\nand their electromagnetic characteristics.\n\nEarth Engine uses the following preprocessing steps (as implemented by the\n[Sentinel-1 Toolbox](https://sentinel.esa.int/web/sentinel/toolboxes/sentinel-1))\nto derive the backscatter coefficient in each pixel:\n\n1. **Apply orbit file**\n - Updates orbit metadata with a restituted [orbit file](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-1-sar/pod/products-requirements) (or a precise orbit file if the restituted one is not available).\n2. **GRD border noise removal**\n - Removes low intensity noise and invalid data on scene edges. (As of January 12, 2018)\n3. **Thermal noise removal**\n - Removes additive noise in sub-swaths to help reduce discontinuities between sub-swaths for scenes in multi-swath acquisition modes. (This operation cannot be applied to images produced before July 2015)\n4. **Application of radiometric calibration values**\n - Computes backscatter intensity using sensor calibration parameters in the GRD metadata.\n5. **Terrain correction** (orthorectification)\n - Converts data from ground range geometry, which does not take terrain into account, to σ° using the [SRTM 30 meter DEM](/earth-engine/datasets/catalog/USGS_SRTMGL1_003) or the [ASTER DEM](https://asterweb.jpl.nasa.gov/gdem.asp) for high latitudes (greater than 60° or less than -60°).\n\nDataset Notes\n-------------\n\n- Radiometric Terrain Flattening is not being applied due to artifacts on mountain slopes.\n- The unitless backscatter coefficient is converted to dB as described above.\n- Sentinel-1 SLC data cannot currently be ingested, as Earth Engine does not support images with complex values due to inability to average them during pyramiding without losing phase information.\n- GRD SM assets are not ingested because the `computeNoiseScalingFactor()` function in the [border noise removal operation in the S1 toolbox](https://github.com/senbox-org/s1tbx/blob/master/s1tbx-op-calibration/src/main/java/org/esa/s1tbx/calibration/gpf/RemoveGRDBorderNoiseOp.java) does not support the SM mode."]]