Skip to article frontmatterSkip to article content
Earth and Environmental Sciences
DGGS@BiDS'25
IFREMER, France
import xdggs
import xarray as xr
import numpy as np

ds = xdggs.tutorial.open_dataset("air_temperature", "healpix").dggs.decode()
ds
Loading...
def as_cf(ds):
    grid_info = ds.dggs.grid_info
    metadata = {
        "grid_mapping_name": "healpix",
        "refinement_level": grid_info.level,
        "indexing_scheme": grid_info.indexing_scheme,
        "reference_body": "WGS84",
        "refinement_ratio": 4,
    }

    new = ds.assign_coords(crs=xr.Variable((), np.int8(0), metadata))
    new["cell_ids"].attrs = {"standard_name": "healpix", "units": "1"}

    var_attrs = {"coordinates": ds.dggs._name, "grid_mapping": "crs"}

    for name, var in new.variables.items():
        if name in {"cell_ids"} or "cells" not in var.dims:
            continue

        var.attrs |= var_attrs

    return new
ds.pipe(as_cf)
Loading...