Mapchete xarray output driver
Project description
This driver enables mapchete to write multidimensional arrays into a Zarr archive.
This driver creates a Zarr according to the structure used by the GDAL Zarr driver. Bands are stored in separate 2D arrays (y, x). If a time dimension is configured, the time axis is applied to the individual bands (time, y, x).
When using a time axis, please note that it has to be initialized with the full time range, i.e. it is not possible to extend the time axis after it was initialized.
If you plan extending your Zarr over multiple process runs you can achieve this by always specifying the full time range in the output configuration and then simply write a couple of slices per process run. Please note that for every process run after initialization you will have to use the –overwrite flag, otherwise the process tile will be skipped.
Usage
A process file can either return a xarray.Dataset, xarray.DataArray or a numpy.ndarray object. Please make sure though that when using a time axis, the timestamps of the slices have to be provided. In case of returning a numpy.ndarray this information is not available so this array has to match exactly to the output Zarr shape on the time and bands axes.
3D output array
For a simple 3D (bands, x, y) output:
# example.mapchete
process: process.py
zoom_levels:
min: 0
max: 12
input:
output:
format: xarray
path: output.zarr
dtype: uint16
bands: 3
pyramid:
grid: geodetic
metatiling: 2
# process.py
import numpy as np
import xarray as xr
def execute(
mp,
bands=3,
dtype="uint16",
):
shape = (bands, *mp.tile.shape)
dims = ["bands", "Y", "X"]
coords = {}
return xr.DataArray(
data=np.full(shape=shape, fill_value=500, dtype=dtype),
dims=dims,
coords=coords,
)
4D output array
For a simple 4 (time, bands, x, y) output:
# example.mapchete
process: process.py
zoom_levels:
min: 0
max: 12
input:
output:
format: xarray
path: output.zarr
dtype: uint16
bands: 3
time:
start: 2022-03-01
end: 2022-03-31
pattern: 0 0 * * *
chunksize: 10
# alternatively you can use steps:
# steps:
# - 2022-06-01
# - 2022-06-04
# - 2022-06-06
# - 2022-06-09
# - 2022-06-11
pyramid:
grid: geodetic
metatiling: 2
# process.py
import dateutil
import numpy as np
import xarray as xr
def execute(
mp,
bands=3,
dtype="uint16",
timestamps=None,
):
timestamps = [
"2022-03-01",
"2022-03-02",
"2022-03-04",
"2022-03-07",
"2022-03-09",
]
shape = (bands, len(timestamps), *mp.tile.shape)
dims = ["band", "time", "Y", "X"]
coords = {"time": [dateutil.parser.parse(t) for t in timestamps]}
return xr.DataArray(
data=np.full(shape=shape, fill_value=500, dtype=dtype),
dims=dims,
coords=coords,
)
Installation
# install using pip:
$ pip install mapchete_xarray
# verify driver is vailable ('xarray' should be listed as output format):
$ mapchete formats
Current Limitations
No reprojection allowed when reading from a Zarr archive.
No output pixelbuffer possible.
License
MIT License
Copyright (c) 2019-2022 EOX IT Services
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mapchete_xarray-2022.7.0.tar.gz
.
File metadata
- Download URL: mapchete_xarray-2022.7.0.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fc71fe97df382cd90b3860b14c807fbb137449de6c98d31ed41bb39ef83a083 |
|
MD5 | 68c23d0b61cd7311d294373a57be9fe3 |
|
BLAKE2b-256 | adffdd348ff2d7fbcff26bfa719e7160dff7013c0bc8ad6fee73fcd6ec25fef3 |
File details
Details for the file mapchete_xarray-2022.7.0-py3-none-any.whl
.
File metadata
- Download URL: mapchete_xarray-2022.7.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00837ac45dea6c9811ab420378c1487888d2fdc7234574bc8d4ca6249d366d84 |
|
MD5 | c2a0bbc79f83327546592049e1dafe2d |
|
BLAKE2b-256 | 1e6e78f1247a0d310764569637b077b809c95892f7cb7271d3b419961d2df862 |