Multi-resolution RiOMar data#
Context#
Purpose#
The use of multiscale Zarr in combination with the Discrete Global Grid System (DGGS) for Earth Observation aims to enhance the efficiency and scalability of storing, accessing, and analyzing large geospatial datasets. Multiscale Zarr allows for efficient compression and chunking of data, enabling rapid access to high-resolution imagery and other spatial datasets. When integrated with DGGS, which provides a hierarchical, cell-based representation of the Earth’s surface, this approach facilitates seamless multi-resolution analysis, improves interoperability, and supports advanced geospatial processing and visualization, ultimately enabling more effective monitoring and understanding of environmental changes.
Description#
In this notebook, we will:
Open 3 DGGS-transformed RiOMar data files, each with different resolution (levels)
Organise the 3 datasets into one data trees (3 groups)
Show how it could be used e.g. select one area where we will have coarser resolution and the rest (for instance closer to the coast) with higher resolution.
Contributions#
Notebook#
Anne Fouilloux (author), Simula Research Laboratory (Norway), @annefou
Tina Odaka (author), IFREMER (France), @tinaok
Bibliography and other interesting resources#
Install missing libraries#
Or packages that needs to have specific version
!pip install xdggs
!pip install healpy
!pip install -U zarr==2.18.4
!pip install numcodecs==0.13.1
!pip install -U xarray
Requirement already satisfied: xdggs in /srv/conda/envs/notebook/lib/python3.12/site-packages (0.1.2.dev9+gb57dfb9)
Requirement already satisfied: xarray in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (2025.1.1)
Requirement already satisfied: cdshealpix in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.7.1)
Requirement already satisfied: h3ronpy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.22.0)
Requirement already satisfied: typing-extensions in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (4.12.2)
Requirement already satisfied: lonboard>=0.9.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.9.3)
Requirement already satisfied: pyproj>=3.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (3.6.1)
Requirement already satisfied: matplotlib in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (3.9.2)
Requirement already satisfied: arro3-core>=0.4.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.4.5)
Requirement already satisfied: pooch in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (1.8.2)
Requirement already satisfied: anywidget<0.10.0,>=0.9.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (0.9.13)
Requirement already satisfied: geopandas>=0.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (1.0.1)
Requirement already satisfied: palettable<4.0.0,>=3.3.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (3.3.3)
Requirement already satisfied: pandas<3,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (2.2.2)
Requirement already satisfied: pyarrow>=14.0.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (17.0.0)
Requirement already satisfied: shapely<3,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (2.0.5)
Requirement already satisfied: contourpy>=1.0.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.2.1)
Requirement already satisfied: cycler>=0.10 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (4.53.1)
Requirement already satisfied: kiwisolver>=1.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.4.5)
Requirement already satisfied: numpy>=1.23 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.26.4)
Requirement already satisfied: packaging>=20.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (24.1)
Requirement already satisfied: pillow>=8 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (10.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (2.8.2)
Requirement already satisfied: certifi in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pyproj>=3.3->xdggs) (2024.7.4)
Requirement already satisfied: astropy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from cdshealpix->xdggs) (6.1.2)
Requirement already satisfied: platformdirs>=2.5.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pooch->xdggs) (4.2.2)
Requirement already satisfied: requests>=2.19.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pooch->xdggs) (2.32.3)
Requirement already satisfied: ipywidgets>=7.6.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (8.1.3)
Requirement already satisfied: psygnal>=0.8.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.11.1)
Requirement already satisfied: pyogrio>=0.7.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from geopandas>=0.13->lonboard>=0.9.3->xdggs) (0.9.0)
Requirement already satisfied: pytz>=2020.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas<3,>=2->lonboard>=0.9.3->xdggs) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas<3,>=2->lonboard>=0.9.3->xdggs) (2024.1)
Requirement already satisfied: six>=1.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->xdggs) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (1.26.19)
Requirement already satisfied: pyerfa>=2.0.1.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (2.0.1.4)
Requirement already satisfied: astropy-iers-data>=0.2024.7.1.0.34.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (0.2024.8.5.0.32.23)
Requirement already satisfied: PyYAML>=3.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (6.0.2)
Requirement already satisfied: comm>=0.1.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.2)
Requirement already satisfied: ipython>=6.1.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (8.17.2)
Requirement already satisfied: traitlets>=4.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (5.14.3)
Requirement already satisfied: widgetsnbextension~=4.0.11 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (4.0.11)
Requirement already satisfied: jupyterlab-widgets~=3.0.11 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (3.0.11)
Requirement already satisfied: decorator in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (5.1.1)
Requirement already satisfied: jedi>=0.16 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.19.1)
Requirement already satisfied: matplotlib-inline in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.1.7)
Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (3.0.38)
Requirement already satisfied: pygments>=2.4.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.18.0)
Requirement already satisfied: stack-data in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.6.2)
Requirement already satisfied: pexpect>4.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (4.9.0)
Requirement already satisfied: parso<0.9.0,>=0.8.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.8.4)
Requirement already satisfied: ptyprocess>=0.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.7.0)
Requirement already satisfied: wcwidth in /srv/conda/envs/notebook/lib/python3.12/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.13)
Requirement already satisfied: executing>=1.2.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.0.1)
Requirement already satisfied: asttokens>=2.1.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.4.1)
Requirement already satisfied: pure-eval in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.3)
Requirement already satisfied: healpy in /srv/conda/envs/notebook/lib/python3.12/site-packages (1.18.0)
Requirement already satisfied: numpy>=1.19 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from healpy) (1.26.4)
Requirement already satisfied: astropy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from healpy) (6.1.2)
Requirement already satisfied: pyerfa>=2.0.1.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (2.0.1.4)
Requirement already satisfied: astropy-iers-data>=0.2024.7.1.0.34.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (0.2024.8.5.0.32.23)
Requirement already satisfied: PyYAML>=3.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (6.0.2)
Requirement already satisfied: packaging>=19.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (24.1)
Requirement already satisfied: zarr==2.18.4 in /srv/conda/envs/notebook/lib/python3.12/site-packages (2.18.4)
Requirement already satisfied: asciitree in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.3.3)
Requirement already satisfied: numpy>=1.24 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (1.26.4)
Requirement already satisfied: fasteners in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.17.3)
Requirement already satisfied: numcodecs!=0.14.0,!=0.14.1,>=0.10.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.13.1)
Requirement already satisfied: numcodecs==0.13.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (0.13.1)
Requirement already satisfied: numpy>=1.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from numcodecs==0.13.1) (1.26.4)
Requirement already satisfied: xarray in /srv/conda/envs/notebook/lib/python3.12/site-packages (2025.1.1)
Requirement already satisfied: numpy>=1.24 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (1.26.4)
Requirement already satisfied: packaging>=23.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (24.1)
Requirement already satisfied: pandas>=2.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (2.2.2)
Requirement already satisfied: python-dateutil>=2.8.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2024.1)
Requirement already satisfied: six>=1.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=2.1->xarray) (1.16.0)
Import Libraries#
import warnings
import healpy as hp
#import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
import xdggs
#import fsspec
warnings.filterwarnings("ignore")
xr.set_options(display_max_rows=27)
<xarray.core.options.set_options at 0x7cc558f13530>
Open the same RiOMar sample dataset in 3 different resolutions (different levels)#
url_1 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix_14.zarr"
url_2 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix_13.zarr"
url_3 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix.zarr"
ds1 = xr.open_zarr(url_1).pipe(xdggs.decode)
ds1
<xarray.Dataset> Size: 6GB
Dimensions: (cells: 3894803, s_rho: 40, time_counter: 5)
Coordinates:
* cell_ids (cells) uint64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
latitude (cells) float64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
longitude (cells) float64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
resolution float64 8B ...
* s_rho (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
* time_counter (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
time_instant (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 31MB dask.array<chunksize=(3894803,), meta=np.ndarray>
temp (time_counter, s_rho, cells) float64 6GB dask.array<chunksize=(1, 40, 3894803), meta=np.ndarray>
Indexes:
cell_ids HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 14
lon: 0
nside: 16384
rot_lat: 0
rot_lon: 0ds2 = xr.open_zarr(url_2).pipe(xdggs.decode)
ds2
<xarray.Dataset> Size: 2GB
Dimensions: (cells: 971899, s_rho: 40, time_counter: 5)
Coordinates:
* cell_ids (cells) uint64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
latitude (cells) float64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
longitude (cells) float64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
resolution float64 8B ...
* s_rho (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
* time_counter (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
time_instant (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 8MB dask.array<chunksize=(971899,), meta=np.ndarray>
temp (time_counter, s_rho, cells) float64 2GB dask.array<chunksize=(1, 40, 971899), meta=np.ndarray>
Indexes:
cell_ids HealpixIndex(level=13, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 13
lon: 0
nside: 8192
rot_lat: 0
rot_lon: 0ds3 = xr.open_zarr(url_3).pipe(xdggs.decode)
ds3
<xarray.Dataset> Size: 395MB
Dimensions: (cells: 242076, s_rho: 40, time_counter: 5)
Coordinates:
* cell_ids (cells) uint64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
latitude (cells) float64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
longitude (cells) float64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
resolution float64 8B ...
* s_rho (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
* time_counter (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
time_instant (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 2MB dask.array<chunksize=(242076,), meta=np.ndarray>
temp (time_counter, s_rho, cells) float64 387MB dask.array<chunksize=(1, 40, 242076), meta=np.ndarray>
Indexes:
cell_ids HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 12
lon: 0
nside: 4096
rot_lat: 0
rot_lon: 0Create the DataTree#
dt = xr.DataTree.from_dict({"/" + str(ds1.attrs["level"]): ds1, "/" + str(ds2.attrs["level"]): ds2, "/" + str(ds3.attrs["level"]): ds3}) # create root node
dt
<xarray.DatasetView> Size: 0B
Dimensions: ()
Data variables:
*empty*Define functions#
def create_arrow_table(polygons, arr, coords=None):
from arro3.core import Array, ChunkedArray, Schema, Table
if coords is None:
coords = ["latitude", "longitude"]
array = Array.from_arrow(polygons)
name = arr.name or "data"
arrow_arrays = {
"geometry": array,
"cell_ids": ChunkedArray([Array.from_numpy(arr.coords["cell_ids"])]),
name: ChunkedArray([Array.from_numpy(arr.data)]),
} | {
coord: ChunkedArray([Array.from_numpy(arr.coords[coord].data)])
for coord in coords
if coord in arr.coords
}
fields = [array.field.with_name(name) for name, array in arrow_arrays.items()]
schema = Schema(fields)
return Table.from_arrays(list(arrow_arrays.values()), schema=schema)
def normalize(var, center=None):
from matplotlib.colors import CenteredNorm, Normalize
if center is None:
vmin = var.min(skipna=True)
vmax = var.max(skipna=True)
normalizer = Normalize(vmin=vmin, vmax=vmax)
else:
halfrange = np.abs(var - center).max(skipna=True)
normalizer = CenteredNorm(vcenter=center, halfrange=halfrange)
return normalizer(var.data)
def explore_layer(
arr,
cell_dim="cells",
cmap="viridis",
center=None,
alpha=None,
):
from lonboard import SolidPolygonLayer
from lonboard.colormap import apply_continuous_cmap
from matplotlib import colormaps
if len(arr.dims) != 1 or cell_dim not in arr.dims:
raise ValueError(
f"exploration only works with a single dimension ('{cell_dim}')"
)
cell_ids = arr.dggs.coord.data
grid_info = arr.dggs.grid_info
polygons = grid_info.cell_boundaries(cell_ids, backend="geoarrow")
normalized_data = normalize(arr.variable, center=center)
colormap = colormaps[cmap]
colors = apply_continuous_cmap(normalized_data, colormap, alpha=alpha)
table = create_arrow_table(polygons, arr)
layer = SolidPolygonLayer(table=table, filled=True, get_fill_color=colors)
return layer
import lonboard
ds_12 = dt["12"].ds
ds_12 = ds_12.isel(time_counter=0, s_rho=0).compute().dropna(dim='cells').pipe(xdggs.decode)
ds_12
<xarray.Dataset> Size: 6MB
Dimensions: (cells: 156410)
Coordinates:
* cell_ids (cells) uint64 1MB 11451631 11451635 ... 57954657 57954658
latitude (cells) float64 1MB 49.25 49.25 49.26 ... 50.83 50.84 50.84
longitude (cells) float64 1MB 0.4251 0.4767 0.4768 ... -7.884 -7.91
resolution float64 8B 0.0002498
s_rho float32 4B -0.9875
time_counter datetime64[ns] 8B 2004-01-01T00:58:30
time_instant datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 1MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
temp (cells) float64 1MB 13.35 12.86 12.63 ... 8.407 7.52 7.486
Indexes:
cell_ids HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 12
lon: 0
nside: 4096
rot_lat: 0
rot_lon: 0ds_12.temp.dggs.explore(alpha=1)
import lonboard
ds_14 = dt["14"].ds
ds_14 = ds_14.isel(time_counter=0, s_rho=0).compute().dropna(dim='cells').pipe(xdggs.decode)
ds_14
<xarray.Dataset> Size: 100MB
Dimensions: (cells: 2508887)
Coordinates:
* cell_ids (cells) uint64 20MB 183222103 183222107 ... 927275362
latitude (cells) float64 20MB 49.27 49.27 49.27 ... 50.86 50.86 50.86
longitude (cells) float64 20MB 0.09343 0.08055 0.08699 ... -7.971 -7.978
resolution float64 8B 6.246e-05
s_rho float32 4B -0.9875
time_counter datetime64[ns] 8B 2004-01-01T00:58:30
time_instant datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 20MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
temp (cells) float64 20MB 10.11 10.03 10.07 ... 6.252 5.662 6.062
Indexes:
cell_ids HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 14
lon: 0
nside: 16384
rot_lat: 0
rot_lon: 0ds_14.temp.dggs.explore(alpha=0.8)
# (ds_12.longitude > -7.96) & (ds_12.longitude <-4.9) &
ds_12_small = ds_12.where( (ds_12.latitude <46.5))
ds_12_small
<xarray.Dataset> Size: 6MB
Dimensions: (cells: 156410)
Coordinates:
* cell_ids (cells) uint64 1MB 11451631 11451635 ... 57954657 57954658
latitude (cells) float64 1MB 49.25 49.25 49.26 ... 50.83 50.84 50.84
longitude (cells) float64 1MB 0.4251 0.4767 0.4768 ... -7.884 -7.91
resolution float64 8B 0.0002498
s_rho float32 4B -0.9875
time_counter datetime64[ns] 8B 2004-01-01T00:58:30
time_instant datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 1MB nan nan nan nan nan ... nan nan nan nan
temp (cells) float64 1MB nan nan nan nan nan ... nan nan nan nan
Indexes:
cell_ids HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 12
lon: 0
nside: 4096
rot_lat: 0
rot_lon: 0ds_12_small.temp.dggs.explore(alpha=0.8)
ds_14_small = ds_14.where((ds_14.latitude >=46.5) )
ds_14_small
<xarray.Dataset> Size: 100MB
Dimensions: (cells: 2508887)
Coordinates:
* cell_ids (cells) uint64 20MB 183222103 183222107 ... 927275362
latitude (cells) float64 20MB 49.27 49.27 49.27 ... 50.86 50.86 50.86
longitude (cells) float64 20MB 0.09343 0.08055 0.08699 ... -7.971 -7.978
resolution float64 8B 6.246e-05
s_rho float32 4B -0.9875
time_counter datetime64[ns] 8B 2004-01-01T00:58:30
time_instant datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
ocean_mask (cells) float64 20MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
temp (cells) float64 20MB 10.11 10.03 10.07 ... 6.252 5.662 6.062
Indexes:
cell_ids HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
grid_type: healpix
lat: 0
level: 14
lon: 0
nside: 16384
rot_lat: 0
rot_lon: 0ds_14_small.temp.dggs.explore(alpha=0.8)
Visualize with lonboard the two levels on the same map#
To show how the use of multiscale could be beneficial for RiOMar data.
lonboard.Map(
[
explore_layer(
ds_12_small.temp,
alpha=1,
),
explore_layer(ds_14_small.temp, alpha=1),
]
)