お知らせ:
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 に変換されます。
- Earth Engine は複雑な値を含む画像をサポートしていないため、現在、Sentinel-1 SLC データを取り込むことはできません。これは、ピラミッド化中に位相情報を失うことなく平均化できないためです。
- S1 ツールボックスの境界ノイズ除去オペレーションの
computeNoiseScalingFactor()
関数は SM モードをサポートしていないため、GRD SM アセットは取り込まれません。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は 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."]]