s1_lia
s1_lia is a Python package for searching, downloading, and merging Sentinel-1 local incidence angle (LIA) files. It simplifies access to static OPERA RTC products by handling AOI validation, ASF search, reliable downloading, and data merging by relative orbit.
Features
- Validate and normalize Areas of Interest (AOI) from WKT, GeoJSON, Shapely, or GeoPandas objects.
- Search ASF for static OPERA Sentinel-1 RTC products overlapping the AOI.
- Download local incidence angle GeoTIFF files robustly with retry support.
- Merge downloaded files by relative orbit into combined GeoTIFFs.
- Generates human-readable file name stems based on AOI centroid and optional reverse geocoding.
Installation
Install via pip:
pip install s1_lia
Usage
Simple aoi designation, data search and download (packaged into get_opera_lia), and plotting to check results.
See documentation of get_opera_lia for all optional arguments including to select only a certain relative orbit and setting file names.
import s1_lia
# Define AOI as WKT polygon string
aoi_wkt = 'POLYGON((-107.5 37.6,-107.5 38.0,-108.0 38.0,-108.0 37.6,-107.5 37.6))'
# Define directory to store downloaded and merged files
data_dir = "./data"
# Run full workflow: search, download, merge
merged_files = s1_lia.get_opera_lia(aoi_wkt, data_dir)
print("Merged incidence angle files:")
for f in merged_files:
print(f)
import xarray as xr
import shapely
import matplotlib.pyplot as plt
xr.open_dataarray(merged_files[0]).rio.reproject('EPSG:4326').plot()
x, y = shapely.from_wkt(aoi_wkt).exterior.xy
plt.gca().plot(x,y, color = 'k', linewidth = 4)
Functions
find_static_opera_files(aoi, relative_orbit=None, ...): Search ASF for matching OPERA products.
download_results(results, data_directory, ...): Download local incidence angle files.
merge_lia_by_relative_orbit(downloaded_files, output_directory, name_stem): Merge downloaded files by relative orbit.
generate_name_stem(aoi, use_place_name=True): Generate descriptive filename stem based on AOI centroid.
get_opera_lia(...): Runs full workflow combining above steps.
Development
To install in development mode:
git clone https://github.com/zachhoppinen/s1_lia.git
cd s1_lia
pip install -e .
Run tests
pytest tests/
License
This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgments
Built on top of the ASF Search Python API.
Uses Shapely, GeoPandas, xarray, and rioxarray.
Data from: https://www.earthdata.nasa.gov/data/catalog/asf-opera-l2-cslc-s1-v1-1 https://d2pn8kiwq2w21t.cloudfront.net/documents/ProductSpec_RTC-S1.pdf
Please use citation:
NASA/JPL/OPERA. (2023). OPERA Co-registered Single Look Complex from Sentinel-1 validated product (Version 1) [Data set]. NASA Alaska Satellite Facility Distributed Active Archive Center. https://doi.org/10.5067/SNWG/OPERA_L2_CSLC-S1_V1 Date Accessed: 2025-08-08
Inspiration from: https://github.com/egagli/generate_sentinel1_local_incidence_angle_maps
Contact
For questions or feedback, open an issue or contact Zach Hoppinen @ zmhoppinen@alaska.edu
To bump version and trigger pypi upload
bump2version patch # or minor major
git push origin vx.x.x # TODO this should not be needed.
Metadata
Release files for s1-lia 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| s1_lia-0.3.1.tar.gz | 10.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| s1_lia-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.9 kB
Release files / s1_lia-0.3.1.tar.gz
| Download URL | s1_lia-0.3.1.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
398872ceacde7c31d212f0151394a2b3c8fe25e9dda0e03f30c2bae8bc49bff8
|
|
BLAKE2b-256 checksum How to use checksums |
f14ccb99179a5fd6e4276d6f09c2ada2e34899e6d9beb3191b405263019af1e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2025.
Transparency logRelease files / s1_lia-0.3.1-py3-none-any.whl
| Download URL | s1_lia-0.3.1-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
58173d5baa26b38e086bbd6e08f0a825bd1340d84fdf4f124d8871855dd027fe
|
|
BLAKE2b-256 checksum How to use checksums |
61aa3c25e0b004b61b40c85615767601769305c49d32e0318fd2f41df2cf6860
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2025.
Transparency log