-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
xr.open_dataset(... decode_coords='all') fails for certain CF conform grid_mapping
values
#9761
Comments
A PR would be welcome. A companion PR to cf-xarray would also be appreciated :) |
@observingClouds It seems, that there are variables (str, dict, list) and coordinate variables (list) missing from those files. At least my cf-checker complains here, but good chance I'm missing something. |
Oh yes @kmuehlbauer, I have simplified these example datasets to reduce the code section. They might no longer be CF-conform. Adding the missing variables and coordinates will not affect the decoding of the |
@observingClouds No worries. At least the UserWarning's are emitted when decoding the |
@kmuehlbauer, I just updated my MVCE to be cf compliant (except of a missing CF-convention attribute). The error remains the same. |
@observingClouds Not sure if you're already working on a PR. I gave it a try in #9765. This should now work for the two additional I've also added some todos for testing things, if you have any suggestions on that, please let me know. |
What happened?
Reading of CF-conform projection information and converting it automatically to coordinates with the
decode_coords='all'
argument ofxr.open_dataset()
failed for certain dataset.What did you expect to happen?
To do the detection of coordinates, xarray relies on the
grid_mapping
attribute that is set per variable. The CF-conventions allow for various differentgrid_mapping
formats:I expect that all formats are supported.
Minimal Complete Verifiable Example
MVCE confirmation
Relevant log output
No response
Anything else we need to know?
The issue seems to be that currently CF attributes can either be a string/list or a key-value pair depending whether the cf-attribute is listed in
CF_RELATED_DATA
or also listed inCF_RELATED_DATA_NEEDS_PARSING
.https://github.com/pydata/xarray/blob/main/xarray/conventions.py#L476-L480
grid_mapping
is currently only part ofCF_RELATED_DATA
, but adding it toCF_RELATED_DATA_NEEDS_PARSING
as well would cause the now working case to fail.Environment
INSTALLED VERSIONS
commit: None
python: 3.13.0 | packaged by conda-forge | (main, Oct 17 2024, 12:38:20) [Clang 17.0.6 ]
python-bits: 64
OS: Darwin
OS-release: 22.6.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: None
LOCALE: (None, 'UTF-8')
libhdf5: 1.14.4
libnetcdf: 4.9.2
xarray: 2024.10.0
pandas: 2.2.3
numpy: 2.1.3
scipy: 1.14.1
netCDF4: 1.7.2
pydap: None
h5netcdf: None
h5py: None
zarr: None
cftime: 1.6.4
nc_time_axis: None
iris: None
bottleneck: None
dask: None
distributed: None
matplotlib: 3.9.2
cartopy: 0.24.0
seaborn: None
numbagg: None
fsspec: None
cupy: None
pint: 0.24.4
sparse: None
flox: None
numpy_groupies: None
setuptools: 75.3.0
pip: 24.3.1
conda: None
pytest: 8.3.3
mypy: None
IPython: 8.29.0
sphinx: None
The text was updated successfully, but these errors were encountered: