Discussion:
[CF-metadata] Handling time when date is "missing"
Ajay Krishnan - NOAA Affiliate
2016-11-01 17:21:06 UTC
Permalink
Thanks a lot for the suggestions, Dave, Ed and Seth.

Seth, here's the response from the team that's working on the data:

The first solution is not realistic. There are too many
missing times - separating out into another data variable
would give the user a bifurcated data set.

The second solution is doable, but still doesnt make much
sense. The power of using a convention is that the data
can be dumped, used, graphed, in software which follows
the conventions quickly and easily. What good is it to
graph against a sequential index? Date/time needs to
be a coordinate to interact seamlessly with existing
software.

Ed,
I don't know to record the data as a time_offset in hours or seconds when
there is no information on the number of days that have passed since the
reference time.

-Ajay
Send CF-metadata mailing list submissions to
To subscribe or unsubscribe via the World Wide Web, visit
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
or, via email, send a message with subject or body 'help' to
You can reach the person managing the list at
When replying, please edit your Subject line so it is more specific
than "Re: Contents of CF-metadata digest..."
1. Re: Handling time when date is "missing" (Seth McGinnis)
2. Re: Handling time when date is "missing"
(Dave Allured - NOAA Affiliate)
3. Re: Feedback requested on proposed CF Simple Geometries
(Jonathan Gregory)
4. Re: Handling time when date is "missing"
(Armstrong, Edward M (398G))
----------------------------------------------------------------------
Message: 1
Date: Tue, 25 Oct 2016 14:26:18 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset=windows-1252
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to store
the undated measurements separately. Record the normal measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at all,
but only as a data variable. Record all the measurements with an index
coordinate instead of a time coordinate. Then define data variables for
year, month, day, and time of measurement, and just fill in what's known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that explains you
made this exception to the CF conventions. Follow CF conventions in all
other regards.
Then, try to remember to warn people about this when you distribute the
data. CF compliant time coordinates are fundamental to many application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where just
the hour of measurement has been recorded without the corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
------------------------------
Message: 2
Date: Tue, 25 Oct 2016 14:34:52 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
gmail.com>
Content-Type: text/plain; charset="utf-8"
Thank you for the constructive alternatives.
--Dave
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to store
the undated measurements separately. Record the normal measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at all,
but only as a data variable. Record all the measurements with an index
coordinate instead of a time coordinate. Then define data variables for
year, month, day, and time of measurement, and just fill in what's known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that explains
you
made this exception to the CF conventions. Follow CF conventions in
all
other regards.
Then, try to remember to warn people about this when you distribute the
data. CF compliant time coordinates are fundamental to many
application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where just
the hour of measurement has been recorded without the corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.cgd.ucar.edu/pipermail/cf-metadata/
attachments/20161025/803102dd/attachment-0001.html>
------------------------------
Message: 3
Date: Wed, 26 Oct 2016 14:33:37 +0100
Subject: Re: [CF-metadata] Feedback requested on proposed CF Simple
Geometries
Content-Type: text/plain; charset=utf-8
Dear Ben and Bert
Thanks for your emails, which help me to understand the simple geometry
proposals better. Just to be clear, I'd like to repeat my first question.
You explain that the need is to specify spatial coordinates with a simple
geometry for a timeSeries variable. For example, this could be for the
discharge as a function of time across some line in a river (your
example),
or I suppose it could be an average temperature as a function of time for
the Atlantic Ocean, where you wanted to supply the polygon which drew the
outline of the basin. Have I got the idea?
to which you replied
Yes, you have this mostly right. It?s common to have a collection of
points
(weather stations), lines (stream reaches), or polygons (hydrologic
catchments) with an associated time series
I was asking whether this means that for each *collection* (of points,
lines or
polygons) there is a *single* timeseries. For instance, in your example of
a
single geometry composed of several polygons, there is a single number for
each
time. But that is not the case for weather stations; for each weather
station
there is a timeseries, and at each time there is a different number (value
of
temperature, precipitation or whatever) for each weather station. You also
write, "The US National Weather Service?s National Water Model (NWM) ...
forecasts streamflow rates in about 2.7 million stream segments averaging
2km."
The stream network is a MultiLineString geometry, but I don't think there
is
just one value of streamflow applying to the entire network at any given
time;
I guess there is a different timeseries for each stream segment. But in my
example above, the Atlantic Ocean is a single polygon with a single
timeseries
for its average temperature, not a different timeseries for each node.
Thus I
am unclear about the dimensions of the data. In terms of your original
example,
does the data have dimensions (time,geometry, where geometry=1) or
(time,node)?
This seems to me to be a crucial difference. In the former case the simple
geometry can be regarded as a more complex alternative to cells bounds -
the
cell has a complicated geometry of nodes and lines, but it's still a single
cell. In the latter case you're providing many timeseries in an
unstructured
geometry, which is what ugrid describes. Which do you have in mind?
Nonetheless in both cases the geometries have to be described. I think the
difference is how we attach this description to the data or coordinates,
rather
than how the description is constructed.
You propose the index variable in order for the convention to be like
ugrid.
However this still seems to me to be an unnecessary complexity and use of
space
if you aren't going to have many shared nodes. I think the case for having
another convention, distinct from ugrid, is stronger if it is *unlike*
ugrid
in this respect, and therefore simpler as well.
I agree that repeating the inside/outside flag many times is wasteful.
That,
coupled with your clarification that you may have several geometries, each
consisting of several elements (points, lines, polygons), means that you
need,
in effect, a ragged array of ragged arrays (geometry,element,node). This is
more complicated than DSGs, but it seems to me it would be reasonably easy
to
understand if your multi-geometry example
https://github.com/bekozi/netCDF-CF-simple-geometry/
wiki/VLEN-Arrays-in-NetCDF-3#multipolygon-example
geom=3;
part=11;
node=36;
int number_of_parts(geom);
number_of_parts:parts="number_of_nodes";
int number_of_nodes(part);
number_of_nodes:inout="inout";
char inout(part);
float x(node);
float y(node);
number_of_parts=6, 3, 2;
number_of_nodes=4, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3;
inout="OIIIOOOIO";
x=0, 20, 20, 0, 1, 10, 19, 5, 7, 9, 11, 13, 15, 5, 9, 7, 11, 15, 13, -40,
-20, -45, -20, -10, -10, -30, -45, -30, -20, -20, 30, 45, 10, 25, 50, 30;
y = 0, 0, 20, 20, 1, 5, 1, 15, 19, 15, 15, 19, 15, 25, 25, 29, 25, 25,
29,
-40, -45, -30, -35, -30, -10, -5, -20, -20, -15, -25, 20, 40, 40, 5, 10,
15;
where I assume that all polygons are closed.
What do you think?
Best wishes
Jonathan
------------------------------
Message: 4
Date: Wed, 26 Oct 2016 18:54:18 +0000
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset="us-ascii"
Jay,
You could use the variable time as a single value to establish the time
(in complete CF date format) of the first observation
Another multi dimension array can then be used to store the time offset
(in hours or seconds etc.) of each measurement from variable time
Or else convert the hourly measurements into a proper CF date format to
store in variable time
Date: Tuesday, October 25, 2016 at 11:07 AM
Subject: [CF-metadata] Handling time when date is "missing"
Hi All,
I have a user that's converting some IMMA format files to CF compliant
NetCDF files.
The problem is that, we've run into several measurements where just the
hour of measurement has been recorded without the corresponding "date". We
would prefer not to omit these data in the conversion, because they are
considered valid measurements (and play a role in monthly summary
statistics)
How do we represent this in a valid CF NetCDF format since we can't use
_FillValues for 'time'? Any suggestions for handling such special cases?
Thanks,
Ajay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.cgd.ucar.edu/pipermail/cf-metadata/
attachments/20161026/e7b7ecfa/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
------------------------------
End of CF-metadata Digest, Vol 162, Issue 13
********************************************
Dave Allured - NOAA Affiliate
2016-11-01 18:34:42 UTC
Permalink
Ajay,

It seems that you just contradicted yourself. First you asked how to
encode time coordinates when some measurements have time of day, but the
date is missing. Now you are saying that a valid date/time coordinate is
required. But a valid date/time coordinate is not possible without
complete date and time information for each measurement.

The comment from your data team suggests that you misstated the original
problem, and that the so-called missing dates can always be determined from
context. Please let us know if this is the case. If not, would you please
explain the apparent contradiction.

--Dave


On Tue, Nov 1, 2016 at 11:21 AM, Ajay Krishnan - NOAA Affiliate <
Post by Ajay Krishnan - NOAA Affiliate
Thanks a lot for the suggestions, Dave, Ed and Seth.
The first solution is not realistic. There are too many
missing times - separating out into another data variable
would give the user a bifurcated data set.
The second solution is doable, but still doesnt make much
sense. The power of using a convention is that the data
can be dumped, used, graphed, in software which follows
the conventions quickly and easily. What good is it to
graph against a sequential index? Date/time needs to
be a coordinate to interact seamlessly with existing
software.
Ed,
I don't know to record the data as a time_offset in hours or seconds when
there is no information on the number of days that have passed since the
reference time.
-Ajay
<digest overhead omitted>
Date: Tue, 25 Oct 2016 14:26:18 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to store
the undated measurements separately. Record the normal measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at all,
but only as a data variable. Record all the measurements with an index
coordinate instead of a time coordinate. Then define data variables for
year, month, day, and time of measurement, and just fill in what's known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that explains you
made this exception to the CF conventions. Follow CF conventions in all
other regards.
Then, try to remember to warn people about this when you distribute the
data. CF compliant time coordinates are fundamental to many application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where just
the hour of measurement has been recorded without the corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
Seth McGinnis
2016-11-01 18:17:10 UTC
Permalink
Hi Ajay,

The problem is that the offset representation is the CF standard for how
to record time, and that's what standards-aware software that displays
it quickly and easily relies upon. If you don't know how much time has
passed since the reference time, it's just plain not possible to record
it that way.

So sadly, I think you're in an unavoidable bind. You can keep the
dataset in one piece, or you can represent it in the standard way, but
you can't do both. Either option can be done in a CF-conformant way,
but you'll have to choose one. (The third, simplest, and most
conformant option is of course just to drop the missing-time data
entirely. But that's outside the scope of the question you asked.)

The objections that your team raised are sound, but I see no way to
address both of them without dropping the missing-time data. Keeping
the missing-time data, having a single dataset, or using the standard
representation: pick any two.

Cheers,

--Seth
Post by Ajay Krishnan - NOAA Affiliate
Thanks a lot for the suggestions, Dave, Ed and Seth.
The first solution is not realistic. There are too many
missing times - separating out into another data variable
would give the user a bifurcated data set.
The second solution is doable, but still doesnt make much
sense. The power of using a convention is that the data
can be dumped, used, graphed, in software which follows
the conventions quickly and easily. What good is it to
graph against a sequential index? Date/time needs to
be a coordinate to interact seamlessly with existing
software.
Ed,
I don't know to record the data as a time_offset in hours or seconds
when there is no information on the number of days that have passed
since the reference time.
-Ajay
Send CF-metadata mailing list submissions to
To subscribe or unsubscribe via the World Wide Web, visit
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
or, via email, send a message with subject or body 'help' to
You can reach the person managing the list at
When replying, please edit your Subject line so it is more specific
than "Re: Contents of CF-metadata digest..."
1. Re: Handling time when date is "missing" (Seth McGinnis)
2. Re: Handling time when date is "missing"
(Dave Allured - NOAA Affiliate)
3. Re: Feedback requested on proposed CF Simple Geometries
(Jonathan Gregory)
4. Re: Handling time when date is "missing"
(Armstrong, Edward M (398G))
----------------------------------------------------------------------
Message: 1
Date: Tue, 25 Oct 2016 14:26:18 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset=windows-1252
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to store
the undated measurements separately. Record the normal measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at all,
but only as a data variable. Record all the measurements with an index
coordinate instead of a time coordinate. Then define data variables for
year, month, day, and time of measurement, and just fill in what's known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that
explains you
made this exception to the CF conventions. Follow CF conventions
in all
other regards.
Then, try to remember to warn people about this when you
distribute the
data. CF compliant time coordinates are fundamental to many
application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where
just
the hour of measurement has been recorded without the
corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we
can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
------------------------------
Message: 2
Date: Tue, 25 Oct 2016 14:34:52 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset="utf-8"
Thank you for the constructive alternatives.
--Dave
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to
store
the undated measurements separately. Record the normal
measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at
all,
but only as a data variable. Record all the measurements with an
index
coordinate instead of a time coordinate. Then define data
variables for
year, month, day, and time of measurement, and just fill in what's
known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that
explains you
made this exception to the CF conventions. Follow CF
conventions in all
other regards.
Then, try to remember to warn people about this when you
distribute the
data. CF compliant time coordinates are fundamental to many
application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements
where just
the hour of measurement has been recorded without the
corresponding
"date". We would prefer not to omit these data in the
conversion,
because they are considered valid measurements (and play a
role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since
we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
-------------- next part --------------
An HTML attachment was scrubbed...
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161025/803102dd/attachment-0001.html
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161025/803102dd/attachment-0001.html>>
------------------------------
Message: 3
Date: Wed, 26 Oct 2016 14:33:37 +0100
Subject: Re: [CF-metadata] Feedback requested on proposed CF Simple
Geometries
Content-Type: text/plain; charset=utf-8
Dear Ben and Bert
Thanks for your emails, which help me to understand the simple geometry
proposals better. Just to be clear, I'd like to repeat my first question.
You explain that the need is to specify spatial coordinates with a
simple
geometry for a timeSeries variable. For example, this could be for the
discharge as a function of time across some line in a river (your
example),
or I suppose it could be an average temperature as a function of
time for
the Atlantic Ocean, where you wanted to supply the polygon which
drew the
outline of the basin. Have I got the idea?
to which you replied
Yes, you have this mostly right. It?s common to have a collection
of points
(weather stations), lines (stream reaches), or polygons (hydrologic
catchments) with an associated time series
I was asking whether this means that for each *collection* (of
points, lines or
polygons) there is a *single* timeseries. For instance, in your
example of a
single geometry composed of several polygons, there is a single
number for each
time. But that is not the case for weather stations; for each
weather station
there is a timeseries, and at each time there is a different number
(value of
temperature, precipitation or whatever) for each weather station. You also
write, "The US National Weather Service?s National Water Model (NWM) ...
forecasts streamflow rates in about 2.7 million stream segments
averaging 2km."
The stream network is a MultiLineString geometry, but I don't think
there is
just one value of streamflow applying to the entire network at any
given time;
I guess there is a different timeseries for each stream segment. But in my
example above, the Atlantic Ocean is a single polygon with a single
timeseries
for its average temperature, not a different timeseries for each
node. Thus I
am unclear about the dimensions of the data. In terms of your
original example,
does the data have dimensions (time,geometry, where geometry=1) or
(time,node)?
This seems to me to be a crucial difference. In the former case the simple
geometry can be regarded as a more complex alternative to cells
bounds - the
cell has a complicated geometry of nodes and lines, but it's still a single
cell. In the latter case you're providing many timeseries in an
unstructured
geometry, which is what ugrid describes. Which do you have in mind?
Nonetheless in both cases the geometries have to be described. I think the
difference is how we attach this description to the data or
coordinates, rather
than how the description is constructed.
You propose the index variable in order for the convention to be
like ugrid.
However this still seems to me to be an unnecessary complexity and
use of space
if you aren't going to have many shared nodes. I think the case for having
another convention, distinct from ugrid, is stronger if it is
*unlike* ugrid
in this respect, and therefore simpler as well.
I agree that repeating the inside/outside flag many times is
wasteful. That,
coupled with your clarification that you may have several
geometries, each
consisting of several elements (points, lines, polygons), means that
you need,
in effect, a ragged array of ragged arrays (geometry,element,node). This is
more complicated than DSGs, but it seems to me it would be
reasonably easy to
understand if your multi-geometry example
https://github.com/bekozi/netCDF-CF-simple-geometry/wiki/VLEN-Arrays-in-NetCDF-3#multipolygon-example
<https://github.com/bekozi/netCDF-CF-simple-geometry/wiki/VLEN-Arrays-in-NetCDF-3#multipolygon-example>
geom=3;
part=11;
node=36;
int number_of_parts(geom);
number_of_parts:parts="number_of_nodes";
int number_of_nodes(part);
number_of_nodes:inout="inout";
char inout(part);
float x(node);
float y(node);
number_of_parts=6, 3, 2;
number_of_nodes=4, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3;
inout="OIIIOOOIO";
x=0, 20, 20, 0, 1, 10, 19, 5, 7, 9, 11, 13, 15, 5, 9, 7, 11, 15, 13, -40,
-20, -45, -20, -10, -10, -30, -45, -30, -20, -20, 30, 45, 10, 25, 50, 30;
y = 0, 0, 20, 20, 1, 5, 1, 15, 19, 15, 15, 19, 15, 25, 25, 29, 25,
25, 29,
-40, -45, -30, -35, -30, -10, -5, -20, -20, -15, -25, 20, 40, 40,
5, 10, 15;
where I assume that all polygons are closed.
What do you think?
Best wishes
Jonathan
------------------------------
Message: 4
Date: Wed, 26 Oct 2016 18:54:18 +0000
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset="us-ascii"
Jay,
You could use the variable time as a single value to establish the
time (in complete CF date format) of the first observation
Another multi dimension array can then be used to store the time
offset (in hours or seconds etc.) of each measurement from variable
time
Or else convert the hourly measurements into a proper CF date format
to store in variable time
Date: Tuesday, October 25, 2016 at 11:07 AM
Subject: [CF-metadata] Handling time when date is "missing"
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where just
the hour of measurement has been recorded without the corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
-------------- next part --------------
An HTML attachment was scrubbed...
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161026/e7b7ecfa/attachment.html
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161026/e7b7ecfa/attachment.html>>
------------------------------
Subject: Digest Footer
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
------------------------------
End of CF-metadata Digest, Vol 162, Issue 13
********************************************
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
Nan Galbraith
2016-11-02 16:17:54 UTC
Permalink
New electronics technicians setting up instruments, right?

I don't really think this is a CF problem. You apparently can guess the
date, it just
wasn't recorded by the instrument (otherwise, I'm guessing, you wouldn't be
thinking of using it in monthly stats).

My solution is to generate a date for each point, using whatever
external info you can -
sample scheme, start time, events that can be used as markers, and
whatever software
you normally use. Then document the process in an attribute, including
the fact that
the date is inferred, not recorded.

Oh, I see Dave A expressed a similar opinion, I should have read the
thread more carefully.

Cheers - Nan
Post by Seth McGinnis
Hi Ajay,
The problem is that the offset representation is the CF standard for how
to record time, and that's what standards-aware software that displays
it quickly and easily relies upon. If you don't know how much time has
passed since the reference time, it's just plain not possible to record
it that way.
So sadly, I think you're in an unavoidable bind. You can keep the
dataset in one piece, or you can represent it in the standard way, but
you can't do both. Either option can be done in a CF-conformant way,
but you'll have to choose one. (The third, simplest, and most
conformant option is of course just to drop the missing-time data
entirely. But that's outside the scope of the question you asked.)
The objections that your team raised are sound, but I see no way to
address both of them without dropping the missing-time data. Keeping
the missing-time data, having a single dataset, or using the standard
representation: pick any two.
Cheers,
--Seth
Post by Ajay Krishnan - NOAA Affiliate
Thanks a lot for the suggestions, Dave, Ed and Seth.
The first solution is not realistic. There are too many
missing times - separating out into another data variable
would give the user a bifurcated data set.
The second solution is doable, but still doesnt make much
sense. The power of using a convention is that the data
can be dumped, used, graphed, in software which follows
the conventions quickly and easily. What good is it to
graph against a sequential index? Date/time needs to
be a coordinate to interact seamlessly with existing
software.
Ed,
I don't know to record the data as a time_offset in hours or seconds
when there is no information on the number of days that have passed
since the reference time.
-Ajay
Send CF-metadata mailing list submissions to
To subscribe or unsubscribe via the World Wide Web, visit
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
or, via email, send a message with subject or body 'help' to
You can reach the person managing the list at
When replying, please edit your Subject line so it is more specific
than "Re: Contents of CF-metadata digest..."
1. Re: Handling time when date is "missing" (Seth McGinnis)
2. Re: Handling time when date is "missing"
(Dave Allured - NOAA Affiliate)
3. Re: Feedback requested on proposed CF Simple Geometries
(Jonathan Gregory)
4. Re: Handling time when date is "missing"
(Armstrong, Edward M (398G))
----------------------------------------------------------------------
Message: 1
Date: Tue, 25 Oct 2016 14:26:18 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset=windows-1252
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to store
the undated measurements separately. Record the normal measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at all,
but only as a data variable. Record all the measurements with an index
coordinate instead of a time coordinate. Then define data variables for
year, month, day, and time of measurement, and just fill in what's known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that
explains you
made this exception to the CF conventions. Follow CF conventions
in all
other regards.
Then, try to remember to warn people about this when you
distribute the
data. CF compliant time coordinates are fundamental to many
application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where
just
the hour of measurement has been recorded without the
corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we
can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
------------------------------
Message: 2
Date: Tue, 25 Oct 2016 14:34:52 -0600
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset="utf-8"
Thank you for the constructive alternatives.
--Dave
But then the data is non-compliant, and it sounds like a valid CF
solution is needed.
Two possible solutions come to my mind. The first way would be to
store
the undated measurements separately. Record the normal
measurements in
the normal way, and then record the undated measurements in a separate
data variable with an index coordinate instead of a time coordinate.
The other way would be not to use time as a coordinate variable at
all,
but only as a data variable. Record all the measurements with an
index
coordinate instead of a time coordinate. Then define data
variables for
year, month, day, and time of measurement, and just fill in what's
known
for each one. (It sounds like the month and year are still known even
if the day is not.) This is very similar to the approach taken for
trajectories; see example H.12 in the spec.
Cheers,
--Seth
Ajay,
I think this is an exception to CF. I recommend using _FillValue or
missing_value on the time coordinate. Document this in a comment
attribute on the time coordinate variable.
Also document this somehow in another global attribute that
explains you
made this exception to the CF conventions. Follow CF
conventions in all
other regards.
Then, try to remember to warn people about this when you
distribute the
data. CF compliant time coordinates are fundamental to many
application
programs, and I expect they will choke or introduce subtle errors if
missing values are in there. So users will need to provide special
handling for such files. HTH.
--Dave
(Please reply to list only)
On Tue, Oct 25, 2016 at 12:07 PM, Ajay Krishnan - NOAA Affiliate
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements
where just
the hour of measurement has been recorded without the
corresponding
"date". We would prefer not to omit these data in the
conversion,
because they are considered valid measurements (and play a
role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since
we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
-------------- next part --------------
An HTML attachment was scrubbed...
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161025/803102dd/attachment-0001.html
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161025/803102dd/attachment-0001.html>>
------------------------------
Message: 3
Date: Wed, 26 Oct 2016 14:33:37 +0100
Subject: Re: [CF-metadata] Feedback requested on proposed CF Simple
Geometries
Content-Type: text/plain; charset=utf-8
Dear Ben and Bert
Thanks for your emails, which help me to understand the simple geometry
proposals better. Just to be clear, I'd like to repeat my first question.
You explain that the need is to specify spatial coordinates with a
simple
geometry for a timeSeries variable. For example, this could be for the
discharge as a function of time across some line in a river (your
example),
or I suppose it could be an average temperature as a function of
time for
the Atlantic Ocean, where you wanted to supply the polygon which
drew the
outline of the basin. Have I got the idea?
to which you replied
Yes, you have this mostly right. It?s common to have a collection
of points
(weather stations), lines (stream reaches), or polygons (hydrologic
catchments) with an associated time series
I was asking whether this means that for each *collection* (of
points, lines or
polygons) there is a *single* timeseries. For instance, in your
example of a
single geometry composed of several polygons, there is a single
number for each
time. But that is not the case for weather stations; for each
weather station
there is a timeseries, and at each time there is a different number
(value of
temperature, precipitation or whatever) for each weather station. You also
write, "The US National Weather Service?s National Water Model (NWM) ...
forecasts streamflow rates in about 2.7 million stream segments
averaging 2km."
The stream network is a MultiLineString geometry, but I don't think
there is
just one value of streamflow applying to the entire network at any
given time;
I guess there is a different timeseries for each stream segment. But in my
example above, the Atlantic Ocean is a single polygon with a single
timeseries
for its average temperature, not a different timeseries for each
node. Thus I
am unclear about the dimensions of the data. In terms of your
original example,
does the data have dimensions (time,geometry, where geometry=1) or
(time,node)?
This seems to me to be a crucial difference. In the former case the simple
geometry can be regarded as a more complex alternative to cells
bounds - the
cell has a complicated geometry of nodes and lines, but it's still a single
cell. In the latter case you're providing many timeseries in an
unstructured
geometry, which is what ugrid describes. Which do you have in mind?
Nonetheless in both cases the geometries have to be described. I think the
difference is how we attach this description to the data or
coordinates, rather
than how the description is constructed.
You propose the index variable in order for the convention to be
like ugrid.
However this still seems to me to be an unnecessary complexity and
use of space
if you aren't going to have many shared nodes. I think the case for having
another convention, distinct from ugrid, is stronger if it is
*unlike* ugrid
in this respect, and therefore simpler as well.
I agree that repeating the inside/outside flag many times is
wasteful. That,
coupled with your clarification that you may have several geometries, each
consisting of several elements (points, lines, polygons), means that
you need,
in effect, a ragged array of ragged arrays (geometry,element,node). This is
more complicated than DSGs, but it seems to me it would be
reasonably easy to
understand if your multi-geometry example
https://github.com/bekozi/netCDF-CF-simple-geometry/wiki/VLEN-Arrays-in-NetCDF-3#multipolygon-example
<https://github.com/bekozi/netCDF-CF-simple-geometry/wiki/VLEN-Arrays-in-NetCDF-3#multipolygon-example>
geom=3;
part=11;
node=36;
int number_of_parts(geom);
number_of_parts:parts="number_of_nodes";
int number_of_nodes(part);
number_of_nodes:inout="inout";
char inout(part);
float x(node);
float y(node);
number_of_parts=6, 3, 2;
number_of_nodes=4, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3;
inout="OIIIOOOIO";
x=0, 20, 20, 0, 1, 10, 19, 5, 7, 9, 11, 13, 15, 5, 9, 7, 11, 15, 13, -40,
-20, -45, -20, -10, -10, -30, -45, -30, -20, -20, 30, 45, 10, 25, 50, 30;
y = 0, 0, 20, 20, 1, 5, 1, 15, 19, 15, 15, 19, 15, 25, 25, 29, 25,
25, 29,
-40, -45, -30, -35, -30, -10, -5, -20, -20, -15, -25, 20, 40, 40,
5, 10, 15;
where I assume that all polygons are closed.
What do you think?
Best wishes
Jonathan
------------------------------
Message: 4
Date: Wed, 26 Oct 2016 18:54:18 +0000
Subject: Re: [CF-metadata] Handling time when date is "missing"
Content-Type: text/plain; charset="us-ascii"
Jay,
You could use the variable time as a single value to establish the
time (in complete CF date format) of the first observation
Another multi dimension array can then be used to store the time
offset (in hours or seconds etc.) of each measurement from variable
time
Or else convert the hourly measurements into a proper CF date format
to store in variable time
Date: Tuesday, October 25, 2016 at 11:07 AM
Subject: [CF-metadata] Handling time when date is "missing"
Hi All,
I have a user that's converting some IMMA format files to CF
compliant NetCDF files.
The problem is that, we've run into several measurements where just
the hour of measurement has been recorded without the corresponding
"date". We would prefer not to omit these data in the conversion,
because they are considered valid measurements (and play a role in
monthly summary statistics)
How do we represent this in a valid CF NetCDF format since we can't
use _FillValues for 'time'? Any suggestions for handling such
special cases?
Thanks,
Ajay
-------------- next part --------------
An HTML attachment was scrubbed...
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161026/e7b7ecfa/attachment.html
<http://mailman.cgd.ucar.edu/pipermail/cf-metadata/attachments/20161026/e7b7ecfa/attachment.html>>
------------------------------
Subject: Digest Footer
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
<http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata>
------------------------------
End of CF-metadata Digest, Vol 162, Issue 13
********************************************
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
_______________________________________________
CF-metadata mailing list
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
Bob Simons - NOAA Federal
2016-11-02 08:42:26 UTC
Permalink
Aren't the missing values only a problem for CF when they are in the
axis/dimension variables?

Isn't this observation data? If so, can't you store the data in one of the
DSG formats (not multidimensional array), where the dates are just another
variable with data?
--
Sincerely,

Bob Simons
IT Specialist
Environmental Research Division
NOAA Southwest Fisheries Science Center
99 Pacific St., Suite 255A (New!)
Monterey, CA 93940 (New!)
Phone: (831)333-9878 (New!)
Fax: (831)648-8440
Email: ***@noaa.gov

The contents of this message are mine personally and
do not necessarily reflect any position of the
Government or the National Oceanic and Atmospheric Administration.
<>< <>< <>< <>< <>< <>< <>< <>< <><
Loading...