[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gridtonc time order



Robb Kambic wrote:

On Mon, 3 Mar 2003, John Caron wrote:

if i do an ncdump on this gridtonc file, the first value in "valtime" is
out of order (see bottom). why is that? can it be fixed?

John,

The data is entered as it is received by gribtonc, the first slot is
filled first, then the next. Since gribtonc doesn't know how many records
are going to be delivered there is no way of ordering the data into a
particular slot. Also, record  spaces are only allocated as needed. I
guess it could be fixed but it would take some time.  I looked at the
code,  after I talk to Russ then I could give a more accurate time
estimate.

Robb...

i think we should decide what it would take to fix. otherwise it cant be a coordinate axis since it violates monoticity.

i think i can fix it at the ucar.nc2.dataset.convConventions layer, but fixing the file itself would be better.


netcdf
dods://motherlode.ucar.edu/cgi-bin/dods/DODS-3.2.1/nph-dods/dods/model/2003030300_mrf-e.nc
{
dimensions:
  record = UNLIMITED;   // (14 currently)
  datetime_len = 21;
  datetime_strlen = 100;
  level = 2;   // (has coord.var)
  nmodels = 3;
  nav = 1;
  nav_len = 100;
  ngrids = 2;
  lat = 37;   // (has coord.var)
  lon = 72;   // (has coord.var)

variables:
    double reftime(record)
      :long_name = "reference time";
      :units = "hours since 1992-1-1";
    double valtime(record)
      :long_name = "valid time";
      :units = "hours since 1992-1-1";
    char datetime(record, datetime_len, datetime_strlen)
      :long_name = "reference date and time";
    float valtime_offset(record)
      :long_name = "hours from reference time";
      :units = "hours";
    float level(level)
      :long_name = "level";
      :units = "hectopascals";
    int model_id(nmodels)
      :long_name = "generating process ID number";
    char nav_model(nav, nav_len)
      :long_name = "navigation model name";
    int grid_type_code(nav)
      :long_name = "GRIB-1 GDS data representation type";
    char grid_type(nav, nav_len)
      :long_name = "GRIB-1 grid type";
    char grid_name(nav, nav_len)
      :long_name = "grid name";
    int grid_center(nav)
      :long_name = "GRIB-1 originating center ID";
    int grid_number(nav, ngrids)
      :long_name = "GRIB-1 catalogued grid numbers";
      :_FillValue = -9999; // int
    char i_dim(nav, nav_len)
      :long_name = "longitude dimension name";
    char j_dim(nav, nav_len)
      :long_name = "latitude dimension name";
    int Ni(nav)
      :long_name = "number of points along a latitude circle";
    int Nj(nav)
      :long_name = "number of points along a longitude circle";
    float La1(nav)
      :long_name = "latitude of first grid point";
      :units = "degrees_north";
    float Lo1(nav)
      :long_name = "longitude of first grid point";
      :units = "degrees_east";
    float La2(nav)
      :long_name = "latitude of last grid point";
      :units = "degrees_north";
    float Lo2(nav)
      :long_name = "longitude of last grid point";
      :units = "degrees_east";
    float Di(nav)
      :long_name = "Longitudinal direction increment";
      :units = "degrees";
    float Dj(nav)
      :long_name = "Latitudinal direction increment";
      :units = "degrees";
    byte ResCompFlag(nav)
      :long_name = "resolution and component flags";
    float lat(lat)
      :long_name = "latitude";
      :units = "degrees_north";
    float lon(lon)
      :long_name = "longitude";
      :units = "degrees_east";
    float Z(record, level, lat, lon)
      :long_name = "geopotential height";
      :units = "gp m";
      :_FillValue = -9999.0; // float
      :navigation = "nav";
    float T_sfc(record, lat, lon)
      :long_name = "surface temperature";
      :units = "degK";
      :_FillValue = -9999.0; // float
      :navigation = "nav";
    float P_msl(record, lat, lon)
      :long_name = "pressure reduced to MSL";
      :units = "Pa";
      :_FillValue = -9999.0; // float
      :navigation = "nav";
    float u(record, level, lat, lon)
      :long_name = "u-component of wind";
      :units = "meters/second";
      :_FillValue = -9999.0; // float
      :navigation = "nav";
    float v(record, level, lat, lon)
      :long_name = "v-component of wind";
      :units = "meters/second";
      :_FillValue = -9999.0; // float
      :navigation = "nav";

// Global Attributes:
   :record = "reftime, valtime";
   :history = "created by gribtonc from HDS broadcast";
   :title = "NCEP Global Product Set";
   :Conventions = "NUWG";
   :version = 0.0; // double

data:
 valtime =
   {98004.0, 97980.0, 97992.0, 98016.0, 98028.0, 98040.0, 98052.0,
98064.0, 98076.0, 98088.0, 98100.0, 98112.0, 98124.0, 98136.0}
}




===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================