Metadata-Version: 2.5
Name: s1bursts
Version: 0.9.0
Summary: Sentinel-1 download, processing and compositing in Python.
Project-URL: Homepage, https://github.com/lqgentner/s1bursts
Project-URL: Documentation, https://lqgentner.github.io/s1bursts/
Project-URL: Repository, https://github.com/lqgentner/s1bursts
Project-URL: Issues, https://github.com/lqgentner/s1bursts/issues
Project-URL: Changelog, https://github.com/lqgentner/s1bursts/blob/main/CHANGELOG.md
Author-email: Luis Gentner <luis.gentner@geo.uzh.ch>
License-Expression: MIT
License-File: LICENSE
Keywords: burst,cdse,coherence,copernicus,insar,interferometry,remote-sensing,sar,sentinel-1,slc,snap
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: affine>=3
Requires-Dist: freezebase[s3]<0.12,>=0.11
Requires-Dist: geopandas>=1.1
Requires-Dist: lxml>=5
Requires-Dist: numpy>=2.0
Requires-Dist: odc-geo>=0.5.0
Requires-Dist: pandas>=2.3
Requires-Dist: pyarrow>=17
Requires-Dist: pydantic-settings>=2.13.1
Requires-Dist: pydantic>=2
Requires-Dist: pyproj>=3.5
Requires-Dist: rasterio>=1.5.0
Requires-Dist: requests>=2.28
Requires-Dist: rich>=13
Requires-Dist: shapely>=2
Requires-Dist: universal-pathlib>=0.3
Description-Content-Type: text/markdown

<div align="center">

<img src="https://raw.githubusercontent.com/lqgentner/s1bursts/main/assets/s1burst-logo.svg" alt="s1bursts" width="360">

*Sentinel-1 download, processing and compositing in Python.*

[![CI](https://github.com/lqgentner/s1bursts/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/lqgentner/s1bursts/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/lqgentner/s1bursts/graph/badge.svg?token=V6PEU2U4DW)](https://codecov.io/gh/lqgentner/s1bursts)
[![PyPI](https://img.shields.io/pypi/v/s1bursts.svg)](https://pypi.org/project/s1bursts/)
[![Python versions](https://img.shields.io/pypi/pyversions/s1bursts.svg)](https://pypi.org/project/s1bursts/)
[![SNAP](https://img.shields.io/badge/SNAP-13%20%7C%2014-blue)](https://step.esa.int/main/download/snap-download/)
[![License](https://img.shields.io/pypi/l/s1bursts.svg)](https://github.com/lqgentner/s1bursts/blob/main/LICENSE)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.23918246.svg)](https://doi.org/10.5281/zenodo.23918246)
[![pyrefly](https://img.shields.io/endpoint?url=https://pyrefly.org/badge.json)](https://github.com/facebook/pyrefly)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

</div>

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](https://dataspace.copernicus.eu/) (CDSE),
processes it with [ESA SNAP](https://step.esa.int/main/toolboxes/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

```bash
pip install s1bursts
```

Processing needs [ESA SNAP](https://step.esa.int/main/download/snap-download/)
13 or 14, and downloading a free [CDSE account](https://dataspace.copernicus.eu/).
The [installation guide](https://lqgentner.github.io/s1bursts/user-guide/installation.html)
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:

```python
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](https://lqgentner.github.io/s1bursts/) has a user guide,
tutorials on real data, and the API reference.

## Development

```bash
uv sync                       # set up the environment
uv run pytest                 # offline unit tests
uv run pytest -m integration  # network and SNAP tests (needs credentials and SNAP)
uv run ruff format && uv run ruff check --fix
uv run pyrefly check
```

See the [contributing guide](https://lqgentner.github.io/s1bursts/user-guide/contributing.html)
for the integration tests and how to build the documentation.

## Citation

If you use s1bursts in your research, please cite it with its DOI,
[10.5281/zenodo.23918246](https://doi.org/10.5281/zenodo.23918246), which always
points to the latest release. Zenodo lists a DOI for each version, and
[`CITATION.cff`](https://github.com/lqgentner/s1bursts/blob/main/CITATION.cff)
holds the citation metadata.

## License

[MIT](https://github.com/lqgentner/s1bursts/blob/main/LICENSE)
