diff --git a/test/grid/test_grid.py b/test/grid/test_grid.py index 422d6f14e..b060025b3 100644 --- a/test/grid/test_grid.py +++ b/test/grid/test_grid.py @@ -824,3 +824,9 @@ def test_sphere_radius_mpas_ocean(gridpath): # Test invalid radius with pytest.raises(ValueError, match="Sphere radius must be positive"): grid.sphere_radius = -1.0 + + +def test_set_lon_range_attrs(gridpath): + grid = ux.open_grid(gridpath("mpas", "QU", "oQU480.231010.nc")) + assert "standard_name" in grid.node_lon.attrs + assert grid.node_lon.name == "node_lon" diff --git a/uxarray/grid/coordinates.py b/uxarray/grid/coordinates.py index 79d817baa..a00e2a002 100644 --- a/uxarray/grid/coordinates.py +++ b/uxarray/grid/coordinates.py @@ -692,11 +692,14 @@ def _construct_edge_centroids(node_x, node_y, node_z, edge_node_conn): def _set_desired_longitude_range(uxgrid): """Sets the longitude range to [-180, 180] for all longitude variables.""" - - for lon_name in ["node_lon", "edge_lon", "face_lon"]: - if lon_name in uxgrid._ds: - if uxgrid._ds[lon_name].max() > 180: - uxgrid._ds[lon_name] = (uxgrid._ds[lon_name] + 180) % 360 - 180 + with xr.set_options(keep_attrs=True): + for lon_name in ["node_lon", "edge_lon", "face_lon"]: + if lon_name in uxgrid._ds: + if uxgrid._ds[lon_name].max() > 180: + da = uxgrid._ds[lon_name] + wrapped = (uxgrid._ds[lon_name] + 180) % 360 - 180 + wrapped.name = da.name + uxgrid._ds[lon_name] = wrapped def prepare_points(points, normalize):