Skip to content

Commit c5dfc7a

Browse files
committed
one more
1 parent 74c4c61 commit c5dfc7a

File tree

2 files changed

+8
-25
lines changed

2 files changed

+8
-25
lines changed

cf_xarray/accessor.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -492,11 +492,9 @@ def _get_grid_mapping_name(obj: DataArray | Dataset, key: str) -> list[str]:
492492
results = set()
493493
for var in variables.values():
494494
attrs_or_encoding = ChainMap(var.attrs, var.encoding)
495-
if "grid_mapping" in attrs_or_encoding:
496-
grid_mapping_attr = attrs_or_encoding["grid_mapping"]
495+
if grid_mapping_attr := attrs_or_encoding.get("grid_mapping"):
497496
# Parse potentially multiple grid mappings
498497
grid_mapping_var_names = _parse_grid_mapping_attribute(grid_mapping_attr)
499-
500498
for grid_mapping_var_name in grid_mapping_var_names:
501499
if grid_mapping_var_name not in variables:
502500
raise ValueError(
@@ -1979,28 +1977,7 @@ def get_associated_variable_names(
19791977
if grid_mapping_attr := attrs_or_encoding.get("grid_mapping", None):
19801978
# Parse grid mapping variables using the same function
19811979
grid_mapping_vars = _parse_grid_mapping_attribute(grid_mapping_attr)
1982-
coords["grid_mapping"] = grid_mapping_vars
1983-
1984-
# Extract coordinate variables using regex
1985-
if ":" in grid_mapping_attr:
1986-
# Pattern to find coordinate variables: words that come after ":" but before next grid mapping variable
1987-
# This captures coordinate variables between grid mapping sections
1988-
coord_pattern = r":\s+([^:]+?)(?=\s+[a-zA-Z_][a-zA-Z0-9_]*\s*:|$)"
1989-
coord_matches = re.findall(coord_pattern, grid_mapping_attr)
1990-
1991-
for coord_section in coord_matches:
1992-
# Split each coordinate section and add valid coordinate names
1993-
coord_vars = coord_section.split()
1994-
# Filter out grid mapping variable names that might have been captured
1995-
coord_vars = [
1996-
var
1997-
for var in coord_vars
1998-
if not (
1999-
var.startswith(("crs_", "spatial_", "proj_"))
2000-
and var in grid_mapping_vars
2001-
)
2002-
]
2003-
coords["coordinates"].extend(coord_vars)
1980+
coords["grid_mapping"] = cast(list[Hashable], grid_mapping_vars)
20041981

20051982
more: Sequence[Hashable] = ()
20061983
if geometry_var := attrs_or_encoding.get("geometry", None):

cf_xarray/tests/test_accessor.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,6 +1088,12 @@ def test_multiple_grid_mapping_attribute():
10881088
"transverse_mercator": ["crs_27700"],
10891089
}
10901090

1091+
assert da.cf.get_associated_variable_names()["grid_mapping"] == [
1092+
"latitude_longitude",
1093+
"lambert_azimuthal_equal_area",
1094+
"transverse_mercator",
1095+
]
1096+
10911097
# Test that grid_mapping_name raises an error with multiple mappings
10921098
with pytest.raises(
10931099
ValueError,

0 commit comments

Comments
 (0)