Project

General

Profile

Unsupported file structure:

Added by Dhirendra Kumar over 3 years ago

Hii Folks
I am trying to remap a file in CDO. The file does not open for any of the command ( including sinfo, info etc..). I am getting the following error message:

*Warning (cdf_read_xcoord): Unsupported array structure, skipped variable va850!

cdo info: Open failed on >a.nc<
Unsupported file structure *
I have tried a few google searches but could not find anything substantial to solve the issue. I am not being able to find the source of the error. I seek help in this regard.

Many thanks
Dhirendra


Replies (3)

RE: Unsupported file structure: - Added by Karin Meier-Fleischer over 3 years ago

Hi Dhirendra,

without the file we cannot help. I guess it is not a correct netCDF file.

-Karin

RE: Unsupported file structure: - Added by Dhirendra Kumar over 3 years ago

Hi Karin

Thanks for the reply.
I could not attach the file in previous message due to space limitation (<97.7 MB) on the forum. Attaching the file here as a google drive link.

https://drive.google.com/file/d/1ObhZgxuhEQg7XZjh3wG2df3o49zSgDPV/view?usp=sharing

Please let me know, if you have any problem accessing the file.

Regards
Dhirenrda

RE: Unsupported file structure: - Added by Karin Meier-Fleischer over 3 years ago

The lon and lat variable are not depending on rlat and rlon but to x and y.

dimensions:
    time = UNLIMITED ; // (365 currently)
    rlon = 366 ;
    rlat = 240 ;
    bnds = 2 ;
    y = 260 ;
    x = 386 ;
variables:
    double time(time) ;
        time:standard_name = "time" ;
        time:long_name = "time" ;
        time:calendar = "proleptic_gregorian" ;
        time:axis = "T" ;
        time:units = "days since 1949-12-01 00:00:00" ;
        time:bounds = "time_bnds" ;
    double rlon(rlon) ;
        rlon:standard_name = "grid_longitude" ;
        rlon:long_name = "longitude in rotated pole grid" ;
        rlon:units = "degrees" ;
        rlon:axis = "X" ;
    double rlat(rlat) ;
        rlat:standard_name = "grid_latitude" ;
        rlat:long_name = "latitude in rotated pole grid" ;
        rlat:units = "degrees" ;
        rlat:axis = "Y" ;
    char rotated_pole ;
        rotated_pole:long_name = "coordinates of the rotated North Pole" ;
        rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
        rotated_pole:grid_north_pole_latitude = 79.9499969482422 ;
        rotated_pole:grid_north_pole_longitude = -123.339996337891 ;
    float va850(time, rlat, rlon) ;
        va850:_FillValue = 1.e+20f ;
        va850:standard_name = "northward_wind" ;
        va850:long_name = "Northward Wind" ;
        va850:units = "m s-1" ;
        va850:cell_methods = "time: mean" ;
        va850:coordinates = "plev lat lon" ;
        va850:grid_mapping = "rotated_pole" ;
        va850:missing_value = 1.e+20f ;
    double time_bnds(time, bnds) ;
    double plev ;
        plev:units = "Pa" ;
        plev:axis = "Z" ;
        plev:positive = "down" ;
        plev:long_name = "pressure" ;
        plev:standard_name = "air_pressure" ;
    double lon(y, x) ;
        lon:standard_name = "longitude" ;
        lon:long_name = "longitude" ;
        lon:units = "degrees_east" ;
    double lat(y, x) ;
        lat:standard_name = "latitude" ;
        lat:long_name = "latitude" ;
        lat:units = "degrees_north" ;

Usually a rotated curvilinear grid looks like this (example)

dimensions:
    time = UNLIMITED ; // (120 currently)
    bnds = 2 ;
    rlon = 424 ;
    rlat = 412 ;
variables:
    double time(time) ;
        time:axis = "T" ;
        time:bounds = "time_bnds" ;
        time:calendar = "standard" ;
        time:long_name = "time" ;
        time:standard_name = "time" ;
        time:units = "days since 1949-12-01 00:00:00" ;
    double lon(rlat, rlon) ;
        lon:standard_name = "longitude" ;
        lon:long_name = "longitude" ;
        lon:units = "degrees_east" ;
    double lat(rlat, rlon) ;
        lat:standard_name = "latitude" ;
        lat:long_name = "latitude" ;
        lat:units = "degrees_north" ;
    double time_bnds(time, bnds) ;
        time_bnds:units = "days since 1949-12-01 00:00:00" ;
        time_bnds:calendar = "standard" ;
    float variable(time, plev, rlat, rlon) ;
        variable:standard_name = "air_temperature" ;
        variable:long_name = "Variable long name" ;
        variable:units = "K" ;
        variable:coordinates = "lon lat plev" ;
        variable:_FillValue = 1.e+20f ;
        variable:missing_value = 1.e+20f ;
        variable:cell_methods = "time: mean" ;
        variable:grid_mapping = "rotated_pole" ;
    double rlon(rlon) ;
        rlon:standard_name = "grid_longitude" ;
        rlon:long_name = "longitude in rotated pole grid" ;
        rlon:units = "degrees" ;
        rlon:axis = "X" ;
    double rlat(rlat) ;
        rlat:standard_name = "grid_latitude" ;
        rlat:long_name = "latitude in rotated pole grid" ;
        rlat:units = "degrees" ;
        rlat:axis = "Y" ;
    char rotated_pole ;
        rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
        rotated_pole:grid_north_pole_latitude = 39.25 ;
        rotated_pole:grid_north_pole_longitude = -162. ;
    double plev ;
        plev:units = "Pa" ;
        plev:axis = "Z" ;
        plev:positive = "down" ;
        plev:long_name = "pressure" ;
        plev:standard_name = "air_pressure" ;

Your lon and lat look like this and the size of (x=386,y=260) is not the same as of (rlon=366,rlat=240)

    double lon(y, x) ;
        lon:standard_name = "longitude" ;
        lon:long_name = "longitude" ;
        lon:units = "degrees_east" ;
    double lat(y, x) ;
        lat:standard_name = "latitude" ;
        lat:long_name = "latitude" ;
        lat:units = "degrees_north" ;
    (1-3/3)