The opera_utils
package is available on PyPI and conda-forge:
# if mamba is not already installed: conda install -n base mamba
mamba install -c conda-forge opera-utils
(Note: using mamba
is recommended for conda-forge packages, but miniconda can also be used.)
pip install opera-utils
The pip
dependency list for the base package is smaller; the optional depencies may be added with
pip install opera-utils[geopandas] # for just geopandas data frame support
pip install opera-utils[remote] # For remote access to DISP files
pip install opera-utils[all] # all optional dependencies
import opera_utils
print(opera_utils.get_burst_id("OPERA_L2_CSLC-S1_T087-185683-IW2_20230322T161649Z_20240504T185235Z_S1A_VV_v1.1.h5"))
't087_185683_iw2'
In [4]: opera_utils.get_frame_to_burst_mapping(11114)
Out[4]:
{'epsg': 32610,
'is_land': True,
'is_north_america': True,
'xmin': 546450,
'ymin': 4204110,
'xmax': 833790,
'ymax': 4409070,
'burst_ids': ['t042_088905_iw1',
...
]
To just get the burst IDs for a Frame:
In [3]: opera_utils.get_burst_ids_for_frame(11114)
Out[3]:
['t042_088905_iw1',
't042_088905_iw2',
...
't042_088913_iw2',
't042_088913_iw3']
from opera_utils.disp import search, reader, DispProductStack
# Search for DISP-S1 products on CMR
products = search.get_products(frame_id=9154)
# Create the product stack for parsing frame metadata
stack = DispProductStack(products)
# Read a a lon/lat box
data = reader.read_stack_lonlat(
stack,
lons=slice(-120.45, -120.3),
lats=slice(34.07, 34.01)
)
To contribute to the development of opera-utils
, you can fork the repository and install the package in development mode.
We encourage new features to be developed on a new branch of your fork, and then submitted as a pull request to the main repository.
To install locally,
- Download source code:
git clone https://github.com/opera-adt/opera-utils.git && cd opera-utils
- Install dependencies:
mamba env create --name my-opera-env --file environment.yml
- Install the source in editable mode:
mamba activate my-opera-env
python -m pip install -e ".[docs,test]"
We use pre-commit
to automatically run linting and formatting:
# Get pre-commit hooks so that linting/formatting is done automatically
pre-commit install
This will set up the linters and formatters to run on any staged files before you commit them.
After making functional changes, you can rerun the existing tests and any new ones you have added using:
pytest