Skip to main content

Sentinel-1 download, processing and compositing in Python.

CI codecov PyPI Python versions SNAP License DOI pyrefly Ruff

AI / Agents

Skills
llms.txt
llms-full.txt

Developers

Luis Gentner

Author

Community

Full license MIT
Citing s1bursts

Meta

Requires: Python >=3.12
Package Info

s1bursts makes Sentinel-1 synthetic aperture radar (SAR) data easy to use from Python. It searches and downloads the data from the Copernicus Data Space Ecosystem (CDSE), processes it with ESA SNAP into backscatter and coherence, and composites them on the MGRS grid with local resolution weighting.

Features

  • Search the CDSE catalog by area, time window, polarization, orbit and more
  • Download single bursts, with automatic fallback between CDSE’s burst service and its S3 storage
  • Process to terrain-corrected backscatter and interferometric coherence, with SNAP processing graphs built from Python arguments
  • Composite many acquisitions onto the 10 km MGRS grid with local resolution weighting, which favors the acquisitions with the highest spatial resolution at each pixel
  • Store everything on local disk or S3

Installation

pip install s1bursts

Processing needs ESA SNAP 13 or 14, and downloading a free CDSE account. The installation guide covers both.

Quick start

With your CDSE credentials in the environment, download and process two acquisitions of one burst over the Aletsch glacier, 12 days apart:

from s1bursts import BurstCatalog, BurstProcessor, FileManager, SearchQuery, TimeRange

fm = FileManager("data/quickstart")
catalog = BurstCatalog(fm)

bursts = catalog.search(
    SearchQuery(
        time_range=TimeRange("2022-08-01", "2022-08-13"),
        burst_id=30346,
        sub_swath="IW1",
        polarization="VV",
    )
)
catalog.download(bursts).raise_on_failure()

# "auto" geocodes each burst in its own UTM zone, here EPSG:32632.
processor = BurstProcessor(fm)
rtc = processor.create_backscatter(bursts, crs="auto").raise_on_failure()

pairs = bursts.find_pairs(baseline=12)
coherence = processor.create_coherences(pairs, crs="auto").raise_on_failure()

Documentation

The documentation has a user guide, tutorials on real data, and the API reference.

Development

The contributing guide covers setting up the environment with uv, the tests and other checks, and building the documentation, locally and in CI.

Citation

If you use s1bursts in your research, please cite it with its DOI, 10.5281/zenodo.23918246, which always points to the latest release. Zenodo lists a DOI for each version, and CITATION.cff holds the citation metadata.

License

MIT