Thuật toán Sentinel-1
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Sentinel-1 là một nhiệm vụ không gian do Liên minh Châu Âu tài trợ và do Cơ quan Vũ trụ Châu Âu (ESA) thực hiện trong Chương trình Copernicus. Sentinel-1 thu thập hình ảnh radar khẩu độ tổng hợp (SAR) băng tần C ở nhiều độ phân giải và độ phân cực. Vì dữ liệu radar yêu cầu một số thuật toán chuyên biệt để có được hình ảnh được hiệu chỉnh và chỉnh sửa theo phương pháp orthorectification, nên tài liệu này mô tả quy trình xử lý trước dữ liệu Sentinel-1 trong Earth Engine.
Dữ liệu Sentinel-1 được thu thập bằng một số cấu hình thiết bị, độ phân giải, tổ hợp băng tần khác nhau trong cả quỹ đạo lên và xuống. Do sự không đồng nhất này, thường thì bạn cần phải lọc dữ liệu xuống một tập hợp con đồng nhất trước khi bắt đầu xử lý. Quy trình này được trình bày bên dưới trong phần Siêu dữ liệu và lọc.
Để tạo một tập hợp con đồng nhất của dữ liệu Sentinel-1, bạn thường phải
lọc tập hợp bằng các thuộc tính siêu dữ liệu. Các trường siêu dữ liệu phổ biến dùng để lọc bao gồm các thuộc tính sau:
transmitterReceiverPolarisation
: ['VV'], ['HH'], ['VV', 'VH'] hoặc
['HH', 'HV']
instrumentMode
: "IW" (Dải rộng giao thoa), "EW" (Dải rộng cực đại) hoặc "SM" (Bản đồ dải). Hãy xem tài liệu tham khảo này để biết thông tin chi tiết.
orbitProperties_pass
: "ASCENDING" (TĂNG DẦN) hoặc "DESCENDING" (GIẢM DẦN)
resolution_meters
: 10, 25 hoặc 40
resolution
: "M" (trung bình) hoặc "H" (cao). Hãy xem tài liệu tham khảo này để biết thông tin chi tiết.
Mã sau đây lọc tập hợp Sentinel-1 theo các thuộc tính transmitterReceiverPolarisation
, instrumentMode
và orbitProperties_pass
, sau đó tính toán các thành phần kết hợp cho một số tổ hợp quan sát hiển thị trong bản đồ để minh hoạ cách các đặc điểm này ảnh hưởng đến dữ liệu.
Trình soạn thảo mã (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
Thiết lập Python
Hãy xem trang
Môi trường Python để biết thông tin về API Python và cách sử dụng geemap
để phát triển tương tác.
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
Xử lý trước Sentinel-1
Hình ảnh trong 'COPERNICUS/S1_GRD'
Sentinel-1 Earth Engine ImageCollection
bao gồm các cảnh Phát hiện phạm vi mặt đất cấp 1 (GRD) được xử lý thành hệ số tán xạ ngược (σ°) theo đơn vị decibel (dB). Hệ số tán xạ ngược thể hiện diện tích tán xạ ngược của mục tiêu (phần cắt radar) trên mỗi đơn vị diện tích mặt đất. Vì có thể thay đổi theo nhiều thứ tự độ lớn, nên giá trị này được chuyển đổi thành dB dưới dạng 10*log10σ°. Giá trị này đo lường xem địa hình được chiếu có tán xạ bức xạ vi sóng tới hay không, ưu tiên cách xa cảm biến SAR (dB < 0) hay hướng về cảm biến SAR (dB > 0). Hành vi tán xạ này phụ thuộc vào các đặc điểm vật lý của địa hình, chủ yếu là hình học của các phần tử địa hình và các đặc điểm điện từ của chúng.
Earth Engine sử dụng các bước xử lý trước sau đây (do Sentinel-1 Toolbox triển khai) để lấy hệ số tán xạ ngược trong mỗi pixel:
- Áp dụng tệp quỹ đạo
- Cập nhật siêu dữ liệu quỹ đạo bằng một tệp quỹ đạo được khôi phục (hoặc một tệp quỹ đạo chính xác nếu không có tệp quỹ đạo được khôi phục).
- Khử nhiễu đường viền GRD
- Xoá nhiễu cường độ thấp và dữ liệu không hợp lệ ở các cạnh cảnh.
(Tính đến ngày 12 tháng 1 năm 2018)
- Loại bỏ tiếng ồn nhiệt
- Loại bỏ tạp âm cộng thêm trong các dải quét phụ để giúp giảm sự gián đoạn giữa các dải quét phụ cho các cảnh ở chế độ thu thập nhiều dải quét.
(Không thể áp dụng thao tác này cho hình ảnh được tạo trước tháng 7 năm 2015)
- Áp dụng giá trị hiệu chuẩn bức xạ
- Tính toán cường độ tán xạ ngược bằng cách sử dụng các tham số hiệu chuẩn cảm biến trong siêu dữ liệu GRD.
- Chỉnh sửa địa hình (chỉnh sửa theo phương pháp orthorectification)
- Chuyển đổi dữ liệu từ hình học phạm vi mặt đất (không tính đến địa hình) thành σ° bằng cách sử dụng DEM SRTM 30 mét hoặc DEM ASTER cho vĩ độ cao (lớn hơn 60° hoặc nhỏ hơn -60°).
Ghi chú về tập dữ liệu
- Tính năng Làm phẳng địa hình theo phương pháp đo bức xạ không được áp dụng do các hiện tượng giả trên sườn núi.
- Hệ số tán xạ ngược không có đơn vị được chuyển đổi thành dB như mô tả ở trên.
- Hiện tại, bạn không thể nhập dữ liệu SLC của Sentinel-1 vì Earth Engine không hỗ trợ hình ảnh có giá trị phức tạp do không thể tính trung bình các giá trị đó trong quá trình tạo kim tự tháp mà không làm mất thông tin về pha.
- Các thành phần SM GRD không được nhập vì hàm
computeNoiseScalingFactor()
trong thao tác loại bỏ nhiễu đường viền trong hộp công cụ S1 không hỗ trợ chế độ SM.
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-07-25 UTC.
[null,null,["Cập nhật lần gần đây nhất: 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."]]