issue_comments: 350015214
This data as json
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | performed_via_github_app | issue |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/pydata/xarray/issues/1763#issuecomment-350015214 | https://api.github.com/repos/pydata/xarray/issues/1763 | 350015214 | MDEyOklzc3VlQ29tbWVudDM1MDAxNTIxNA== | 1554921 | 2017-12-07T16:11:55Z | 2017-12-07T16:11:55Z | CONTRIBUTOR | I can try putting together a pull request, hopefully without breaking any existing use cases. I just tested switching the any condition to all in the above code, and it does fix my one test case... ...However, it breaks other cases, such as if there's another axis in the data (such as a time axis). I think the all condition would require "time" to be one of the dimensions of the coordinates. Here's an updated test case: ```python import xarray as xr import numpy as np zeros1 = np.zeros((1,5,3))
zeros2 = np.zeros((1,6,3))
zeros3 = np.zeros((1,5,4))
d = xr.Dataset({
'lon1': (['x1','y1'], zeros1.squeeze(0), {}),
'lon2': (['x2','y1'], zeros2.squeeze(0), {}),
'lon3': (['x1','y2'], zeros3.squeeze(0), {}),
'lat1': (['x1','y1'], zeros1.squeeze(0), {}),
'lat2': (['x2','y1'], zeros2.squeeze(0), {}),
'lat3': (['x1','y2'], zeros3.squeeze(0), {}),
'foo1': (['time','x1','y1'], zeros1, {'coordinates': 'lon1 lat1'}),
'foo2': (['time','x2','y1'], zeros2, {'coordinates': 'lon2 lat2'}),
'foo3': (['time','x1','y2'], zeros3, {'coordinates': 'lon3 lat3'}),
'time': ('time', [0.], {'units': 'hours since 2017-01-01'}),
})
d = xr.conventions.decode_cf(d)
With the any condition, I have too many coordinates:
With the all condition, I don't get any variable coordinates (they're dumped into the global attributes): ``` ~$ ncdump -h test.nc netcdf test { dimensions: x1 = 5 ; y1 = 3 ; time = 1 ; y2 = 4 ; x2 = 6 ; variables: ... double foo1(time, x1, y1) ; foo1:_FillValue = NaN ; double foo2(time, x2, y1) ; foo2:_FillValue = NaN ; double foo3(time, x1, y2) ; foo3:_FillValue = NaN ; // global attributes: :_NCProperties = "version=1|netcdflibversion=4.4.1.1|hdf5libversion=1.8.18" ; :coordinates = "lat1 lat3 lat2 lon1 lon3 lon2" ; } ``` So the update may be a bit more tricky to get right. I know the DataArray objects (foo1,foo2,foo3) already have the right coordinates associated with them before writing to netCDF, so maybe the logic in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
279832457 |