Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

bcdev/xarray-enmap

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xarray-enmap

An xarray backend to read the data archives provided by the EOWEB data portal of the EnMAP mission.

Installation

With mamba or conda

mamba install xarray-enmap

or

conda install xarray-enmap

⚠️ Starting with release 0.0.3, xarray-enmap will include the command-line tool convert-enmap. If you wish to use convert-enmap, you should also install the optional packages zarr and numcodecs.

With pip

⚠️ xarray-enmap requires the gdal library, which cannot be installed with pip. If you're working in a conda environment, you can use conda or mamba to install the libgdal-core package before starting the pip install. See the GDAL documentation for other installation methods.

To install the basic package:

pip install xarray-enmap

If you want to export Zarr archives using the included command-line tool convert-enmap (available from release 0.0.3):

pip install xarray-enmap[zarr]

Development install from the git repository

Clone the repository and set the current working directory:

git clone https://github.com/bcdev/xarray-enmap.git
cd xarray-enmap

Install the dependencies with mamba or conda:

mamba env create
mamba activate xarray-enmap

Install xarray-enmap itself:

pip install --no-deps --editable .

Usage as an xarray extension

import xarray as xr

enmap_dataset = xr.open_dataset(
    "/path/to/enmap/data/filename.tar.gz",
    engine="enmap",
    backend_kwargs={"scale_reflectance": False}
)

The optional scale_reflectance keyword argument controls whether the reflectance values are left as raw values or scaled to the range 0–1. When they are scaled, the special background value of −32768 in the raw data is also replaced with NaN. scale_reflectance is True by default, so you can simply omit it if you want the reflectances scaled.

⚠️ Theoretically, the raw reflectance values in an EnMAP file should be between 0 and 10000. In practice, some real-world EnMAP products contain a few values outside this range, which will also result in values outside the 0–1 range after scaling.

The supplied path can reference:

  • a .tar.gz archive as provided by the EnMAP portal, containing one or more EnMAP products in .ZIP sub-archives, or
  • a .ZIP archive containing a single product, as found within an EnMAP .tar.gz archive, or
  • a directory contained the unpacked contents of either of the aforementioned archive types.

At present, if the archive or directory contains multiple EnMAP products, xarray-enmap will open only the first.

In addition to the standard band index co-ordinate containing the band number, xarray-enmap creates an additional wavelength co-ordinate which can be used to index by the corresponding band's centre wavelength. So you can do things like

enmap_dataset.reflectance.sel(wavelength=slice(950, 1000))

to select data for a particular wavelength range.

Usage of the command-line tool convert-enmap

Note that, to use the --zarr-output option, you must install the appropriate optional packages (see installation instructions).

usage: convert-enmap [-h] [--zarr-output ZARR_OUTPUT]
                     [--tiff-output TIFF_OUTPUT] [--raw-reflectance]
                     [--tempdir TEMPDIR] [--compress] [--verbose]
                     input_filename

Extract data from EnMAP archives. The expected input is an Zip archive, or a
.tar.gz archive of multiple Zip archives, downloaded from the EnMAP portal.
Output can be written as TIFF, Zarr, or both.

positional arguments:
  input_filename        Either a Zip for a single product, or a .tar.gz
                        containing multiple Zips

options:
  -h, --help            show this help message and exit
  --zarr-output ZARR_OUTPUT
                        Write Zarr output to this directory.
  --tiff-output TIFF_OUTPUT
                        Write TIFF output to this directory.
  --raw-reflectance, -r
                        Use raw reflectance values rather than rescaling to
                        0-1 range.
  --tempdir, -t TEMPDIR
                        Use specified path as temporary directory, and don't
                        delete it afterwards (useful for debugging)
  --compress, -c        Higher Zarr output compression. ~25% smaller than
                        default compression. Compression process (but not
                        decompression) is much slower.
  --verbose, -v

About

An xarray backend to read EnMAP archives

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.