Re: NetCDF for underway oceanographic data storage (Lindsay)

Lindsay Pender and other netCDF Oceanographers...

I was really happy with the replies I got from my recent post.  Lindsay
Pender (pender@xxxxxxxxxxx) brought up a good point when, talking about
using netCDF for underway data, saying...

>... however came up with some conceptual difficulties when I was
>looking at ways to implement it. It may be that your data is different, but in
>our case we have data coming from many different sources, each with different
>sampling rates. Some of our instruments are sampled at 2.5kHz, while others are
>as slow as once a minute. For an underway data storage system using netCDF how
>do you store such data with only one 'unlimited' dimension? 

OSU currently can manage it's data by logging 1 minute averages for
all instruments.  No one yet has asked for finer resolution from our
common use equipment.  CTD, ADCP, and other such higher resolution
systems are managed and logged by their own software and are currently
independent of the new netCDF system.  Soon though, I will need to merge
in some finer res. data (5 second GPS and ADCP).  Here is my scheme, and
I'm real curious what kinds of alternatives others can suggest.

I'll see if I can describe my idea with a CDL file.  It may not be the best 
way, but I guess it will work...



<<< BEGIN multi_res.cdl >>>

netcdf multires {

dimensions:
        min_max_mean = 3;   // store 3 numbers:  min, max, mean
        ten_hz = 600;       // number of 10.0 hZ samples in 1 minute
        five_hz = 300;      // number of 5.0 hZ samples in 1 minute
        twopoint5_hz = 150; // number of 2.5 hZ samples in 1 minute
        one_hz = 60;        // number of 1.0 hZ samples in 1 minute
        five_second = 20;   // number of 0.05 hZ samples in 1 minute
    time = unlimited;   // the "time" dimension

variables:
        long   time(time);      // seconds since some fixed point in time
        float  gps_lat(time);   // gps latitude in sample period
    float  gps_lon(time);   // gps longitude in sample period
        short  n_sats(time);    // number of satellites used in fix
        float  raw_gps_lat(time, five_second);  // raw gps latitude
        float  raw_gps_lon(time, five_second);  // raw gps longitude
        float  sea_temp(time, min_max_mean);  // sea surface temperature
        float  towed_cdt_temp (time, ten_hz); // raw CTD temperature
        float  towed_ctd_cond (time, ten_hz); // raw CTD conductivity
}

<<< END multi_res.cdl >>>

The idea is to pick the least common denominator (1 minute data) and
pack anything that's a finer resolution into a new dimension. 

I did try this scheme for a towed vehicle logging/display system, but I
found the netCDF time overhead (on a PC) was too high for me to log real
time, raw 24 hZ CTD data.  Too many variables to log -- more than the
simple example above.  I still used the same idea, but went to a simpler
ASCII file for quick I/O.

Comments???

Tim Holt, OSU Oceanography
holtt@xxxxxxxxxxxx


  • 1992 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: