@@ -78,9 +78,12 @@ def conservative_regrid_dataset(
7878) -> xr .Dataset :
7979 """Dataset implementation of the conservative regridding method."""
8080 data_vars : list [str ] = list (data .data_vars )
81+ data_coords : list [str ] = list (data .coords )
8182 dataarrays = [data [var ] for var in data_vars ]
83+ datacoords = [data [var ] for var in data_coords ]
8284 attrs = data .attrs
8385 da_attrs = [da .attrs for da in dataarrays ]
86+ dcrds_attrs = [dcrds .attrs for dcrds in datacoords ]
8487
8588 for coord in coords :
8689 target_coords = coords [coord ].to_numpy ()
@@ -102,6 +105,8 @@ def conservative_regrid_dataset(
102105
103106 for da , _attr in zip (dataarrays , da_attrs , strict = True ):
104107 da .attrs = _attr
108+ for dcrd , _attr in zip (datacoords , dcrds_attrs , strict = True ):
109+ dcrd .attrs = _attr
105110 regridded = xr .merge (dataarrays )
106111 regridded .attrs = attrs
107112 return regridded # TODO: add other coordinates/data variables back in.
@@ -113,7 +118,10 @@ def conservative_regrid_dataarray(
113118 latitude_coord : str ,
114119) -> xr .DataArray :
115120 """DataArray implementation of the conservative regridding method."""
121+ data_coords : list [str ] = list (data .coords )
122+ datacoords = [data [var ] for var in data_coords ]
116123 attrs = data .attrs
124+ dcrds_attrs = [dcrds .attrs for dcrds in datacoords ]
117125 for coord in coords :
118126 if coord in data .coords :
119127 target_coords = coords [coord ].to_numpy ()
@@ -131,6 +139,8 @@ def conservative_regrid_dataarray(
131139
132140 data = data .transpose (coord , ...)
133141 data = apply_weights (data , weights , coord , target_coords )
142+ for dcrd , _attr in zip (datacoords , dcrds_attrs , strict = True ):
143+ dcrd .attrs = _attr
134144 data .attrs = attrs
135145 return data
136146
0 commit comments