Skip to content

Commit

Permalink
update grid definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
larsbuntemeyer committed Aug 22, 2024
1 parent 1ee24f3 commit c789c3a
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions cordex/cmor/cmor.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
warn("no python cmor package available, consider installing it")

# import cordex as cx
from .. import create_dataset
from ..domain import domain
from .config import (
freq_map,
Expand All @@ -30,7 +31,6 @@
_encode_time,
_get_cfvarinfo,
_get_cordex_pole,
_get_pole,
_read_table,
_strip_time_cell_method,
_tmp_table,
Expand Down Expand Up @@ -149,34 +149,42 @@ def _get_time_axis_name(time_cell_method):


def _define_grid(ds, table_id):
if "domain_id" in ds.attrs:
grid = domain(ds.attrs["domain_id"], bounds=True)
lon_vertices = grid.lon_vertices.to_numpy()
lat_vertices = grid.lat_vertices.to_numpy()
else:
lon_vertices = None
lat_vertices = None
grid_attrs = ds.cx.info()
grid = create_dataset(**grid_attrs, bounds=True)
# if "domain_id" in ds.attrs:
# try:
# grid = domain(ds.attrs["domain_id"], bounds=True)
# lon_vertices = grid.lon_vertices.to_numpy()
# lat_vertices = grid.lat_vertices.to_numpy()
# except KeyError:
# warn(f"Unknown domain: {ds.attrs['domain_id']}")
# else:
# lon_vertices = None
# lat_vertices = None

# if "longitude" not in ds.cf.coords or "latitude" not in ds.cf.coords:
# ds = cx.transform_coords(ds, trg_dims=("lon", "lat"))

cmor.set_table(table_id)
cmorLat = cmor.axis(
table_entry="grid_latitude",
coord_vals=ds.rlat.to_numpy(),
units=ds.rlat.units,
coord_vals=grid.cf["Y"].to_numpy(),
units=grid.cf["Y"].units,
)
cmorLon = cmor.axis(
table_entry="grid_longitude",
coord_vals=ds.rlon.to_numpy(),
units=ds.rlon.units,
coord_vals=grid.cf["X"].to_numpy(),
units=grid.cf["X"].units,
)

cmorGrid = cmor.grid(
[cmorLat, cmorLon],
latitude=ds.lat.to_numpy(),
longitude=ds.lon.to_numpy(),
latitude_vertices=lat_vertices,
longitude_vertices=lon_vertices,
latitude=grid.cf["latitude"].to_numpy(),
longitude=grid.cf["longitude"].to_numpy(),
latitude_vertices=grid.cf.get_bounds("latitude").to_numpy(),
longitude_vertices=grid.cf.get_bounds("longitude").to_numpy(),
)
pole = _get_pole(ds)
pole = ds.cf["grid_mapping"]
pole_dict = {
"grid_north_pole_latitude": pole.grid_north_pole_latitude,
"grid_north_pole_longitude": pole.grid_north_pole_longitude,
Expand Down

0 comments on commit c789c3a

Please sign in to comment.