Sentinel-1 SAR Backscatter Analysis Ready Data Preparation in Google Earth Engine¶
This implementation enhances the Sentinel-1 SAR Backscatter ARD Preparation framework by making it a PyPI package.
Features¶
Parameter | Type | Description | Default |
---|---|---|---|
geometry |
ee.Geometry |
Area of interest | Required |
start_date |
str |
Start date (YYYY-MM-DD) | Required |
stop_date |
str |
End date (YYYY-MM-DD) | Required |
polarization |
str |
Polarization (VV , VH , VVVH ) |
VVVH |
apply_border_noise_correction |
bool |
Apply border noise correction | True |
apply_terrain_flattening |
bool |
Apply terrain flattening | True |
apply_speckle_filtering |
bool |
Apply speckle filtering | True |
output_format |
str |
Output format (LINEAR , DB ) |
DB |
Installation¶
Make sure you have the earthengine-api
installed:
pip install ee-s1-ard
Authenticate with Google Earth Engine:
earthengine authenticate
Usage¶
1. Import the library and create an instance:¶
import ee
# Initialize the GEE API
ee.Initialize()
from ee-s1-ard import S1ARDImageCollection
# Define input parameters
geometry = ee.Geometry.Polygon(
[[[5.0, 50.0], [5.5, 50.0], [5.5, 50.5], [5.0, 50.5], [5.0, 50.0]]]
)
start_date = '2021-01-01'
stop_date = '2021-12-31'
processor = S1ARDImageCollection(
geometry=geometry,
start_date=start_date,
stop_date=stop_date,
polarization="VVVH",
apply_border_noise_correction=True,
apply_terrain_flattening=True,
apply_speckle_filtering=True,
output_format="DB"
)
2. Get the processed collection:¶
collection = processor.get_collection()
3. Example: Display the collection in GEE:¶
import geemap
Map = geemap.Map()
Map.centerObject(geometry, 10)
Map.addLayer(collection.mean(), {'min': -25, 'max': 0}, 'Sentinel-1')
Map
Notes¶
- The processed collection is ready for analysis and visualization.
- Speckle filtering and terrain flattening are optional but improve data quality.
- Output in dB scale is suitable for most applications. ```
Why forking?¶
I DO NOT OWN THE SOLUTION MADE HERE. All credits go to the author and original paper, duly referenced here. My purpose was simply to make the code more pythonic, with checks (mypy), and create a package on Pypi, in order to be easily usable in several academic and production solutions.