[Thread Prev][Thread Next][Index]

Re: [ferret_users] inconsistent data grids: File needs axis attributes on coordinate variables indicating correct direction



Hi all,

I have investigated a little bit more on the internal ferret mechanism that leads to produce this error. 

**ERROR: inconsistent data grids: File needs axis attributes on coordinate variables indicating correct directions

Starting from an example given by the CF convention description from the folowing paragraph
https://cfconventions.org/Data/cf-conventions/cf-conventions-1.9/cf-conventions.html#cell-boundaries
I have reproduced the error from a very simple exemple.

$ cat notok.cdl
netcdf notok {
dimensions:
       jmax = 1 ;
       imax = 1 ;
       nv = 4 ;
variables:
       double lat(jmax, imax) ;
               lat:long_name = "latitude" ;
               lat:units = "degrees_north" ;
               lat:bounds = "bounds_lat" ;
       double lon(jmax, imax) ;
               lon:long_name = "longitude" ;
               lon:units = "degrees_east" ;
               lon:bounds = "bounds_lon" ;
       double bounds_lat(jmax, imax, nv) ;
       double bounds_lon(jmax, imax, nv) ;
       double sample(jmax, imax) ;
               sample:coordinates = "lon lat" ;
data:
lat = -28;
lon = 157;
bounds_lat = -29, -29, -27, -27;
bounds_lon = 156, 158, 158, 156;
sample = 1 ;
}
$ ncgen -o notok.nc notok.cdl
$ ferret
yes? use notok.nc
          *** NOTE:
          *** NOTE: Could not adjust grid for variable lat
**ERROR: inconsistent data grids: File needs axis attributes on coordinate variables indicating correct directions

The same file with modified dimension names (jmax, imax replaced by y, x) can be openned.

$ cat ok.cdl
netcdf ok {
dimensions:
       y = 1 ;
       x = 1 ;
       nv = 4 ;
variables:
       double lat(y, x) ;
               lat:long_name = "latitude" ;
               lat:units = "degrees_north" ;
               lat:bounds = "bounds_lat" ;
       double lon(y, x) ;
               lon:long_name = "longitude" ;
               lon:units = "degrees_east" ;
               lon:bounds = "bounds_lon" ;
       double bounds_lat(y, x, nv) ;
       double bounds_lon(y, x, nv) ;
       double sample(y, x) ;
               sample:coordinates = "lon lat" ;
data:
lat = -28;
lon = 157;
bounds_lat = -29, -29, -27, -27;
bounds_lon = 156, 158, 158, 156;
sample = 1 ;
}
$ ncgen -o ok.nc ok.cdl
$ ferret
yes? use ok.nc

I would like to understand why ?

Best regards
Patrick

--
Data Analytics and Visualization Engineer / Project Manager
LSCE/IPSL, CEA-CNRS-UVSQ laboratory
LSCE - Climate and Environment Sciences Laboratory
IPSL - Institut Pierre Simon Laplace
--


De: "Patrick Brockmann" <patrick.brockmann@xxxxxxxxxxxx>
À: "ferret users" <ferret_users@xxxxxxxx>
Cc: "Thanh-Lam Nguyen" <sebastien.nguyen@xxxxxxxxxxxx>
Envoyé: Lundi 27 Septembre 2021 16:48:27
Objet: [ferret_users] inconsistent data grids: File needs axis attributes on coordinate variables indicating correct direction

Hi ferreters,

A colleague has encountered a strange problem as he was trying to
nicely respect the netCDF CF conventions to describe a curvilinear grid (NEMO configuration).

ferret complains about some inconsistent data grid and missing axis attributes.
use notok.nc 
          *** NOTE:
          *** NOTE: Could not adjust grid for variable mask_T
**ERROR: inconsistent data grids: File needs axis attributes on coordinate variables indicating correct directions

Stranger, if I change the name of the dimension, then the file
is read. I have not been able to fix this by adding a direction attribute as requested.

The file is simple as:
$ ncdump notok.nc
netcdf notok {

dimensions:
       y_grid_T = 1 ;
       x_grid_T = 1 ;
       nvertex_grid_T = 4 ;
variables:
       double bounds_lat_grid_T(y_grid_T, x_grid_T, nvertex_grid_T) ;
       double bounds_lon_grid_T(y_grid_T, x_grid_T, nvertex_grid_T) ;
       byte mask_T(y_grid_T, x_grid_T) ;
               mask_T:cell_measures = "area: area_grid_T" ;
               mask_T:coordinates = "nav_lat_grid_T nav_lon_grid_T" ;
       double nav_lat_grid_T(y_grid_T, x_grid_T) ;
               nav_lat_grid_T:standard_name = "latitude" ;
               nav_lat_grid_T:long_name = "Latitude" ;
               nav_lat_grid_T:units = "degrees_north" ;
               nav_lat_grid_T:bounds = "bounds_lat_grid_T" ;
       double nav_lon_grid_T(y_grid_T, x_grid_T) ;
               nav_lon_grid_T:standard_name = "longitude" ;
               nav_lon_grid_T:long_name = "Longitude" ;
               nav_lon_grid_T:units = "degrees_east" ;
               nav_lon_grid_T:bounds = "bounds_lon_grid_T" ;
data:
bounds_lat_grid_T =
 -29.5895932339965, -29.5895932339965, -27.835621888657, -27.835621888657 ;
bounds_lon_grid_T =
 156.999148343641, 158.999201071309, 158.999201071309, 156.999148343641 ;
mask_T =
 1 ;
nav_lat_grid_T =
 -28.7162844516478 ;
nav_lon_grid_T =
 157.999608915878 ;
}

If I remove _grid_T suffix then the file is read correctly.
$ ncgen -o notok.nc notok.cdl
$ sed -e 's/_grid_T//g' notok.cdl > ok.cdl

$ ncgen -o ok.nc ok.cdl


Any idea on why there is the unexpected behaviour (test on names of dimensions) ?
Patrick

--
Data Analytics and Visualization Engineer / Project Manager
LSCE/IPSL, CEA-CNRS-UVSQ laboratory
LSCE - Climate and Environment Sciences Laboratory
IPSL - Institut Pierre Simon Laplace
--sed -e 's/_grid_T//g' tyty.cdl > tyty1.cdl


[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement