Closed
Description
The attached file is unreadable in the current version of cdms2 (v2.8). I believe the issue is that the variables (not dimensions) lon
and lat
included in the file are assumed to be standard dimensions (which they aren't), and these assumptions lead to a read failure.
The file looks like:
ncdump -h 161122_RobertPincus_multiple_input4MIPs_radiation_RFMIP_UColorado-RFMIP-20161122_none.nc
netcdf \161122_RobertPincus_multiple_input4MIPs_radiation_RFMIP_UColorado-RFMIP-20161122_none {
dimensions:
expt = 18 ;
level = 61 ;
layer = 60 ;
site = 100 ;
variables:
float lon(site) ;
lon:long_name = "ERA-Interim longitude" ;
lon:units = "degree_north" ;
lon:standard_name = "longitude" ;
float lat(site) ;
lat:long_name = "ERA-Interim latitude" ;
lat:units = "degree_east" ;
lat:standard_name = "latitude" ;
float time(site) ;
time:long_name = "ERA-Interim fractional day of the year 2014" ;
time:units = "days since 2014-1-1 0:0:0" ;
time:standard_name = "time" ;
time:calendar = "gregorian" ;
float sst(site) ;
sst:title = "sea surface temperature" ;
sst:units = "K" ;
sst:long_name = "ERA-Interim sea surface temperature (= \"missing_value\" over land)" ;
sst:standard_name = "sea_surface_temperature" ;
sst:missing_value = -9.99f ;
sst:FillValue = -9.99f ;
sst:coordinates = "lon lat time" ;
...
And the read failure looks like:
In [1]: infile = '161122_RobertPincus_multiple_input4MIPs_radiation_RFMIP_UColorado-RFMIP-20161122_none.nc'
In [2]: import cdms2 as cdm
In [3]: f = cdm.open(infile)
---------------------------------------------------------------------------
CDMSError Traceback (most recent call last)
<ipython-input-3-da3bd29babf2> in <module>()
----> 1 f = cdm.open(infile)
/uvcdat280/lib/python2.7/site-packages/cdms2/dataset.pyc in openDataset(uri, mode, template, dods, dpath, hostObj)
357
358 # The file exists
--> 359 file1 = CdmsFile(path, "r")
360 if libcf is not None:
361 if hasattr(file1, libcf.CF_FILETYPE):
/uvcdat280/lib/python2.7/site-packages/cdms2/dataset.pyc in __init__(self, path, mode, hostObj, mpiBarrier)
1137 # Get grid information for the variable. gridkey has the form
1138 # (latname,lonname,order,maskname, abstract_class).
-> 1139 gridkey, lat, lon = var.generateGridkey(self._convention_, self.variables)
1140
1141 # If the variable is gridded, lookup the grid. If no such grid exists,
/uvcdat280/lib/python2.7/site-packages/cdms2/avariable.pyc in generateGridkey(self, convention, vardict)
239 lon, nlon = convention.getVarLonId(self, vardict)
240 if (lat is not None) and (lat is lon):
--> 241 raise CDMSError, "Axis %s is both a latitude and longitude axis! Check standard_name and/or axis attributes."%lat.id
242
243 # Check for 2D grid
CDMSError: Axis lon is both a latitude and longitude axis! Check standard_name and/or axis attributes.