Skip to content

Commit 5253d30

Browse files
committed
Add .cf.crs attribute
1 parent c511cc5 commit 5253d30

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

cf_xarray/accessor.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from collections.abc import Hashable, Iterable, Mapping, MutableMapping, Sequence
99
from datetime import datetime
1010
from typing import (
11+
TYPE_CHECKING,
1112
Any,
1213
Callable,
1314
Literal,
@@ -57,6 +58,9 @@
5758
parse_cf_standard_name_table,
5859
)
5960

61+
if TYPE_CHECKING:
62+
from pyproj import CRS
63+
6064
FlagParam = namedtuple("FlagParam", ["flag_mask", "flag_value"])
6165

6266
#: Classes wrapped by cf_xarray.
@@ -2342,6 +2346,19 @@ def __getitem__(self, key: Hashable | Iterable[Hashable]) -> DataArray | Dataset
23422346
"""
23432347
return _getitem(self, key)
23442348

2349+
@property
2350+
def crs(self) -> CRS:
2351+
from pyproj import CRS
2352+
2353+
try:
2354+
gm = self["grid_mapping"]
2355+
except KeyError as e:
2356+
raise ValueError(
2357+
"CRS is constructed from the 'grid_mapping' variable, but that could not be detected."
2358+
) from e
2359+
2360+
return CRS.from_cf(gm.attrs)
2361+
23452362
@property
23462363
def formula_terms(self) -> dict[Hashable, dict[str, str]]: # numpydoc ignore=SS06
23472364
"""

0 commit comments

Comments
 (0)