อัลกอริทึมของ Sentinel-1
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
Sentinel-1 เป็นภารกิจอวกาศที่ได้รับเงินทุนสนับสนุนจากสหภาพยุโรปและดำเนินการโดยองค์การอวกาศยุโรป (ESA) ภายในโปรแกรมโคเปอร์นิคัส Sentinel-1 รวบรวมภาพเรดาร์ชนิดช่องรับคลื่นสังเคราะห์ (SAR) ในย่านความถี่ C-Band ที่หลากหลายทั้งโพลาไรซ์และความละเอียด เนื่องจากข้อมูลเรดาร์ต้องใช้อัลกอริทึมเฉพาะหลายรายการเพื่อให้ได้ภาพที่ได้รับการปรับเทียบและจัดระเบียบใหม่ เอกสารนี้จึงอธิบายการประมวลผลข้อมูล Sentinel-1 ก่อนประมวลผลใน Earth Engine
ข้อมูล Sentinel-1 รวบรวมโดยใช้การกำหนดค่าเครื่องมือ ความละเอียด และชุดค่าผสมของย่านความถี่ที่แตกต่างกันหลายแบบ ทั้งในช่วงโคจรขึ้นและลง ด้วยเหตุนี้ โดยทั่วไปจึงจำเป็นต้องกรองข้อมูลให้เหลือเฉพาะชุดย่อยที่เป็นเนื้อเดียวกันก่อนเริ่มการประมวลผล กระบวนการนี้ระบุไว้ด้านล่างในส่วนข้อมูลเมตาและการกรอง
หากต้องการสร้างชุดย่อยที่เหมือนกันของข้อมูล Sentinel-1 โดยปกติแล้วคุณจะต้องกรองคอลเล็กชันโดยใช้พร็อพเพอร์ตี้ข้อมูลเมตา ช่องข้อมูลเมตาทั่วไปที่ใช้สำหรับกรอง ได้แก่ พร็อพเพอร์ตี้ต่อไปนี้
transmitterReceiverPolarisation
: ['VV'], ['HH'], ['VV', 'VH'], หรือ
['HH', 'HV']
instrumentMode
: 'IW' (Interferometric Wide Swath), 'EW' (Extra Wide Swath) หรือ 'SM' (Strip Map) ดูรายละเอียดได้ในข้อมูลอ้างอิงนี้
orbitProperties_pass
: 'ASCENDING' หรือ 'DESCENDING'
resolution_meters
: 10, 25 หรือ 40
resolution
: "M" (ปานกลาง) หรือ "H" (สูง) ดูรายละเอียดได้ในข้อมูลอ้างอิงนี้
โค้ดต่อไปนี้จะกรองคอลเล็กชัน Sentinel-1 ตามพร็อพเพอร์ตี้ transmitterReceiverPolarisation
, instrumentMode
และ orbitProperties_pass
จากนั้นคำนวณคอมโพสิตสําหรับการผสมผสานการสังเกตการณ์หลายรายการที่แสดงในแผนที่เพื่อแสดงให้เห็นว่าลักษณะเหล่านี้ส่งผลต่อข้อมูลอย่างไร
เครื่องมือแก้ไขโค้ด (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
ภาพใน 'COPERNICUS/S1_GRD'
Sentinel-1 ของ Earth Engine
ImageCollection
ประกอบด้วยฉากระดับ 1 ที่ตรวจพบระยะทางจากพื้นดิน (GRD) ซึ่งประมวลผลเป็นค่าสัมประสิทธิ์การกระเจิงกลับ (σ°) เป็นเดซิเบล (dB) ค่าสัมประสิทธิ์การกระเจิงกลับแสดงถึงพื้นที่การกระเจิงกลับของเป้าหมาย (พื้นที่หน้าตัดเรดาร์) ต่อพื้นที่พื้นดิน 1 หน่วย เนื่องจากค่านี้อาจแตกต่างกันไปหลายระดับ จึงมีการแปลงเป็น dB ดังนี้ 10*log10σ° ค่านี้วัดว่าพื้นที่ที่แผ่รังสีจะกระเจิงรังสีไมโครเวฟที่ตกกระทบออกไปจากเซ็นเซอร์ SAR หรือไม่ (dB < 0) หรือกระเจิงรังสีไมโครเวฟเข้าหาเซ็นเซอร์ SAR (dB > 0) ลักษณะการกระเจิงนี้ขึ้นอยู่กับลักษณะทางกายภาพของภูมิประเทศ โดยเฉพาะอย่างยิ่งเรขาคณิตขององค์ประกอบภูมิประเทศและลักษณะคลื่นแม่เหล็กไฟฟ้า
Earth Engine ใช้ขั้นตอนการเตรียมข้อมูลล่วงหน้าต่อไปนี้ (ตามที่ติดตั้งใช้งานโดยกล่องเครื่องมือ Sentinel-1) เพื่อหาค่าสัมประสิทธิ์การกระเจิงกลับในแต่ละพิกเซล
- ใช้ไฟล์ Orbit
- อัปเดตข้อมูลเมตาของวงโคจรด้วยไฟล์วงโคจรที่สร้างขึ้นใหม่ (หรือไฟล์วงโคจรที่แม่นยำหากไม่มีไฟล์ที่สร้างขึ้นใหม่)
- การลบสัญญาณรบกวนขอบใน GRD
- กรองสัญญาณรบกวนความเข้มต่ำและข้อมูลที่ไม่ถูกต้องบริเวณขอบของฉากออก
(ข้อมูล ณ วันที่ 12 มกราคม 2018)
- การกรองเสียงรบกวนจากความร้อน
- นำสัญญาณรบกวนเพิ่มเติมในแถบย่อยออกเพื่อช่วยลดความไม่ต่อเนื่องระหว่างแถบย่อยสำหรับฉากในโหมดการจับภาพหลายแถบ
(การดำเนินการนี้ใช้กับรูปภาพที่ผลิตก่อนเดือนกรกฎาคม 2015 ไม่ได้)
- การใช้ค่าการปรับเทียบแบบรังสี
- คํานวณความเข้มของการกระเจิงกลับโดยใช้พารามิเตอร์การปรับเทียบเซ็นเซอร์ในข้อมูลเมตา GRD
- การแก้ไขภูมิประเทศ (การปรับภาพให้ตรง)
- แปลงข้อมูลจากเรขาคณิตของระยะทางภาคพื้นดิน ซึ่งไม่คำนึงถึงภูมิประเทศ เป็น σ° โดยใช้ DEM 30 เมตรของ SRTM หรือ DEM ของ ASTER สำหรับละติจูดสูง (มากกว่า 60° หรือน้อยกว่า -60°)
หมายเหตุชุดข้อมูล
- ระบบไม่ได้ใช้การปรับระดับภูมิประเทศแบบรังสีเนื่องจากมีสิ่งประดิษฐ์บนลาดเขา
- ระบบจะแปลงค่าสัมประสิทธิ์การกระเจิงกลับที่ไม่มีหน่วยเป็น dB ตามที่อธิบายไว้ข้างต้น
- ขณะนี้ระบบไม่สามารถนำเข้าข้อมูล SLC ของ Sentinel-1 เนื่องจาก Earth Engine ไม่รองรับรูปภาพที่มีค่าที่ซับซ้อนเนื่องจากไม่สามารถหาค่าเฉลี่ยระหว่างการสร้างพีระมิดโดยไม่สูญเสียข้อมูลเฟส
- ระบบจะไม่ส่งผ่านข้อมูลชิ้นงาน GRD SM เนื่องจากฟังก์ชัน
computeNoiseScalingFactor()
ในการดำเนินการนำสัญญาณรบกวนขอบออกในกล่องเครื่องมือ S1 ไม่รองรับโหมด 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."]]