Skip to main content

Search and download OPERA local incidence angle files for Sentinel-1.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s1_lia-0.3.1.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s1_lia-0.3.1-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file s1_lia-0.3.1.tar.gz.

File metadata

  • Download URL: s1_lia-0.3.1.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s1_lia-0.3.1.tar.gz
Algorithm Hash digest
SHA256 398872ceacde7c31d212f0151394a2b3c8fe25e9dda0e03f30c2bae8bc49bff8
MD5 8511cba48e71f5b298c41634577f4009
BLAKE2b-256 f14ccb99179a5fd6e4276d6f09c2ada2e34899e6d9beb3191b405263019af1e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for s1_lia-0.3.1.tar.gz:

Publisher: ci-cd.yml on ZachHoppinen/s1_lia

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s1_lia-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: s1_lia-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s1_lia-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 58173d5baa26b38e086bbd6e08f0a825bd1340d84fdf4f124d8871855dd027fe
MD5 81bfea8cdff97ce481e00b96bbb18ad6
BLAKE2b-256 61aa3c25e0b004b61b40c85615767601769305c49d32e0318fd2f41df2cf6860

See more details on using hashes here.

Provenance

The following attestation bundles were made for s1_lia-0.3.1-py3-none-any.whl:

Publisher: ci-cd.yml on ZachHoppinen/s1_lia

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page