Hi all:

IMO, the problem stems from confusing datetime "2012-02-27T00:00:00Z" which
is not a unit, with time "secs", which is [1].Then, use a units package
like udunits to define datetime.

The problem is that it works most of the time, since in  the common case of
"real" time, datetime can be expressed as a time offset, and you can easily
form differences and manipulate them in udunits.

As Nan points out, this does not work for climatological times like
"months", and leads to confusion. In this case the "time" coordinate is
more than just a label, but not expressible as a fixed number of seconds
from a base date.

The CDM uses an extension of udunits syntax, eg "3 calendar months since
2012-02-27T00:00:00Z", which I think is a reasonable solution [2], in the
sense that its easy to implement, is a superset of udunits, and satisfies
known use cases.

John

[1] https://en.wikipedia.org/wiki/Units_of_measurement
[2]
http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/CDM/CalendarDateTime.html




On Thu, Sep 17, 2015 at 7:54 AM, Nan Galbraith <ngalbra...@whoi.edu> wrote:
>
> Hi Jim -
>
> The problem isn't human-readability, though. The problem is that when you
> generate a file that has, say, the mean temperature for each month,
sometimes
> over a period of years, there are no 'days' in the process. Any data that
represents
> February goes into the February bin, whether 28 or 29 days; although
March is always
> 31 days long, its mid-point is a different number of 'days since' the
beginning of
> the year.
>
> In the case of the file Ajay presented, time is a singleton, and its
value represents
> the center point of the first 3 months of the years 1955-2012. That can't
be accurately
> expressed as a number of days, only as months.
>
> Is there a trac ticket for climatology data? If not, do we need one?
>
> Cheers - Nan
>
>
> On 9/17/15 9:32 AM, Jim Biard wrote:
>
> Nan,
>
> The problem is, udunits defines a month as having a specific length of
year/12 = 30.44 days, so if you use udunits to convert to anything else,
you won't end up where you think you will. The better practice is to use
days. It's not as "human readable", but it's the only way to do proper
conversions between time bases.
>
> Grace and peace,
>
> Jim
>
> On 9/17/15 9:06 AM, Nan Galbraith wrote:
>
> While it's true that 'month is not a proper unit of measure',
> climatologies do in fact use months, not days, in calculating
> mean values. Adhering to udunits/CF in this regard could make
> the dates less easily understood.
>
> Regards - Nan
>
> On 9/11/15 1:34 PM, Karl Taylor wrote:
>
> Dear Ajay,
>
> Since "month" is not a proper unit of measure, convert your times to days
and use a unit "days since ...".
>
> Also, it is normally a bad idea to have your base time set to a date
before the switch from Julian to Gregorian calendar. I suggest using a base
time of "1955-01-01" (i.e., the beginning of your climatological period).
>
> I think the cell_methods should be:
> cell_methods="area: mean depth: mean time: mean within years time: mean
over years";
>
> The time bounds should be (expressed in date/time format):
>
> climatology_bounds = "1955-01-01", "2012-04-01"
>
> and you can choose your time coordinate value as you think most
appropriate, e.g.,
> the middle of the season of the first year of the climatology, or
> the beginning of the first month of the first year of the climatology, or
> the middle of the season of the middle year of the climatology, or
>
> ???
>
>
> Hope someone confirms this, as sometimes I make a mistakes.
>
> Karl
>
>
>
>
> On 9/11/15 9:54 AM, Ajay Krishnan - NOAA Affiliate wrote:
>
> Dear CF members,
>
> I would like your input on the way climatological stats are being
represented in a file that I am working on. I believe that I am not using
the time and the climatological_bounds properly:
>
> Seasonal SST
>
> Average seasonal temperature (Jan-Mar) for 6 decades (1955-2012)
>
> dimensions:
> time=1;
> nv=2;
> variables:
>
>
> double time(time);
> time:climatology="climatology_bounds";
> time:units="months since 0000-01-01";
> double climatology_bounds(time,nv);
>
>
> double climatology_bounds(time,nv);
>
> climatology_bounds:comment=” This variable defines the bounds of the
climatological time period for each time” ;
>
> float t_mn(time,lat,lon,depth);
> t_mn:standard_name: “sea_water_temperature” ;
>
> t_mn:long_name: “Average of all unflagged interpolated values at each
standard depth level for sea_water_temperature in each grid-square which
contain at least one measurement.” ;
>
> t_mn:cell_methods: “area: mean depth: mean time: mean” ;
>
>
> data: // time coordinates translated to date/time format
> time= “1.5” ;
>
> climatology_bounds=”0.0”, “3.0” ;
>
>
> The CF examples are helpful but my case is different where in I have just
1-time co-ordinate in my file. In the above case, what is the best way to
record time and climatology bounds?
>
>
> Thanks,
>
> Ajay
>
>
>
>
> --
> *******************************************************
> * Nan Galbraith        Information Systems Specialist *
> * Upper Ocean Processes Group            Mail Stop 29 *
> * Woods Hole Oceanographic Institution                *
> * Woods Hole, MA 02543                 (508) 289-2444 *
> *******************************************************
>
>
>
> _______________________________________________
> CF-metadata mailing list
> CF-metadata@cgd.ucar.edu
> http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
>
_______________________________________________
CF-metadata mailing list
CF-metadata@cgd.ucar.edu
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to