Project

General

Profile

sellonlatbox loses ensemble members in GRIB1 subsetting operation

Added by Chris Bartolomei over 5 years ago

Good evening, I was hoping I could get some assistance. I seem to have a similar problem to this post: (https://code.mpimet.mpg.de/boards/1/topics/1171) ... I have a GRIB file from ECMWF (runoff forecast). Each GRIB file is one time period and in it are the runoff forecasts for the 51 low-res ensemble members. I am trying to drop the southern hemisphere from the dataset and have tried using "cdo -sellonlatbox,-180.0,180.0,0.0,75.0 A1E05210000052312001.grb reduced.grb" ... the command runs fine but when I view the resultant GRIB file, there is only one time period and the information about the 51 ensemble members is gone. The physical file size is about half the original file size so i believe it is spatially subsetted correctly, just the records' details got messed up - the variable "ens" got wiped-out. Here's the key info:

$ cdo -V
Climate Data Operators version 1.9.5 (http://mpimet.mpg.de/cdo)
System: x86_64-pc-linux-gnu
CXX Compiler: g++ -std=gnu++11 -g -O2 -fopenmp
CXX version : g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
C Compiler: gcc -std=gnu99 -g -O2 -fopenmp
C version : gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
F77 Compiler: gfortran -g -O2
F77 version : GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
Features: 7GB 4threads C++11 Fortran DATA PTHREADS OpenMP3 NC4/HDF5 OPeNDAP SSE2
Libraries:
Filetypes: srv ext ieg grb1 nc1 nc2 nc4 nc4c
     CDI library version : 1.9.5
 CGRIBEX library version : 1.9.1
  NetCDF library version : 4.3.3.1 of Dec 10 2015 16:44:18 $
    HDF5 library version : 1.8.12
    EXSE library version : 1.4.0
    FILE library version : 1.8.3

I noticed that the above mentioned thread had a problem with CGRIBEX but I have it installed...

Here's the original GRIB file info (using Panoply)

netcdf file:/H:/HYDRO/apps/GRIB/A1E05210000052312001 {
  dimensions:
    lon = 1800;
    lat = 901;
    time = 1;
    ens = 51;
  variables:
    int LatLon_Projection;
      :grid_mapping_name = "latitude_longitude";
      :earth_radius = 6367470.0; // double
      :_CoordinateTransformType = "Projection";
      :_CoordinateAxisTypes = "GeoX GeoY";

    float Runoff_surface(time=1, ens=51, lat=901, lon=1800);
      :long_name = "Runoff @ Ground or water surface";
      :units = "m";
      :missing_value = NaNf; // float
      :grid_mapping = "LatLon_Projection";
      :coordinates = "reftime time ens lat lon ";
      :Grib_Variable_Id = "VAR_98-0-128-205_L1";
      :Grib1_Center = 98; // int
      :Grib1_Subcenter = 0; // int
      :Grib1_TableVersion = 128; // int
      :Grib1_Parameter = 205; // int
      :Grib1_Parameter_Name = "ro";
      :Grib1_Level_Type = 1; // int
      :Grib1_Level_Desc = "Ground or water surface";

    float lat(lat=901);
      :units = "degrees_north";
      :_CoordinateAxisType = "Lat";

    float lon(lon=1800);
      :units = "degrees_east";
      :_CoordinateAxisType = "Lon";

    double reftime;
      :units = "Hour since 2018-05-21T00:00:00Z";
      :standard_name = "forecast_reference_time";
      :long_name = "GRIB reference time";
      :calendar = "proleptic_gregorian";
      :_CoordinateAxisType = "RunTime";

    double time(time=1);
      :units = "Hour since 2018-05-21T00:00:00Z";
      :standard_name = "time";
      :long_name = "GRIB forecast or observation time";
      :calendar = "proleptic_gregorian";
      :_CoordinateAxisType = "Time";

    int ens(ens=51);
      :_CoordinateAxisType = "Ensemble";

  // global attributes:
  :Originating_or_generating_Center = "European Centre for Medium Range Weather Forecasts (ECMWF) (RSMC)";
  :Originating_or_generating_Subcenter = "0";
  :GRIB_table_version = "0,128";
  :file_format = "GRIB-1";
  :Conventions = "CF-1.6";
  :history = "Read using CDM IOSP GribCollection v3";
  :featureType = "GRID";
  :_CoordSysBuilder = "ucar.nc2.dataset.conv.CF1Convention";

and the resultant file's info:

netcdf file:/H:/HYDRO/apps/GRIB/reduced.grb {
  dimensions:
    lon = 1800;
    lat = 376;
    time = 1;
  variables:
    int LatLon_Projection;
      :grid_mapping_name = "latitude_longitude";
      :earth_radius = 6367470.0; // double
      :_CoordinateTransformType = "Projection";
      :_CoordinateAxisTypes = "GeoX GeoY";

    float Runoff_surface(time=1, lat=376, lon=1800);
      :long_name = "Runoff @ Ground or water surface";
      :units = "m";
      :missing_value = NaNf; // float
      :grid_mapping = "LatLon_Projection";
      :coordinates = "reftime time lat lon ";
      :Grib_Variable_Id = "VAR_98-0-128-205_L1";
      :Grib1_Center = 98; // int
      :Grib1_Subcenter = 0; // int
      :Grib1_TableVersion = 128; // int
      :Grib1_Parameter = 205; // int
      :Grib1_Parameter_Name = "ro";
      :Grib1_Level_Type = 1; // int
      :Grib1_Level_Desc = "Ground or water surface";

    float lat(lat=376);
      :units = "degrees_north";
      :_CoordinateAxisType = "Lat";

    float lon(lon=1800);
      :units = "degrees_east";
      :_CoordinateAxisType = "Lon";

    double reftime;
      :units = "Hour since 2018-05-21T00:00:00Z";
      :standard_name = "forecast_reference_time";
      :long_name = "GRIB reference time";
      :calendar = "proleptic_gregorian";
      :_CoordinateAxisType = "RunTime";

    double time(time=1);
      :units = "Hour since 2018-05-21T00:00:00Z";
      :standard_name = "time";
      :long_name = "GRIB forecast or observation time";
      :calendar = "proleptic_gregorian";
      :_CoordinateAxisType = "Time";

  // global attributes:
  :Originating_or_generating_Center = "European Centre for Medium Range Weather Forecasts (ECMWF) (RSMC)";
  :Originating_or_generating_Subcenter = "0";
  :GRIB_table_version = "0,128";
  :file_format = "GRIB-1";
  :Conventions = "CF-1.6";
  :history = "Read using CDM IOSP GribCollection v3";
  :featureType = "GRID";
  :_CoordSysBuilder = "ucar.nc2.dataset.conv.CF1Convention";
}

I have installed both the anaconda version of CDO and downloaded/installed it from source in /usr with netCDF support added at the ./configure and I get the same results. :(
If I could get some helpful insight on how to keep my ensemble variable (ens) and associated records from disappearing that would be awesome!

Thank you
:)
Chris

A1E05210000053012001.grb.gz (13.5 MB) A1E05210000053012001.grb.gz Original GRIB runoff forecast (ECMWF), 51 ensemble members
reduced.grb.gz (9.17 MB) reduced.grb.gz Spatial subsetted file, only one apparent record

Replies (1)

RE: sellonlatbox loses ensemble members in GRIB1 subsetting operation - Added by Uwe Schulzweida over 5 years ago

Support for ensemble members is a local extension to the GRIB1 standard from ECMWF. CDO doesn't support local GRIB1 extensions, sorry.

    (1-1/1)