⇐ ⇒

[CF-metadata] stations and trajectories

From: John Caron <caron>
Date: Sat, 11 Jun 2005 11:01:41 -0700

Hi Jonathon:

Jonathan Gregory wrote:

>Dear John and Magnus
>
>
>
>>Is the intention that be a unique identifier ?
>>
>>
>We do not currently have a standard list of string identifiers for stations,
>but we could adopt or adapt one if there's one you'd like to use (as we did
>with region names).
>
>
probably not possible to get a single list of identifiers, FSL for
example has dozens of mesonets, and they make up their own names. I
think the only thing we need is to know that the identifiers are unique
(and of course the station lat, lon, altitude).

>
>
>>In the case im trying to deal with, we have a unique id, a description
>>and optionally a wmo id associated with each station. In general, one
>>could have arbitrary information you want to associate with each station.
>>
>>
>Yes, that's fine. Any number of additional labels (of any data type) could be
>attached to the data variable through the coordinates attribute.
>
>
how can you tell if they are "labels" vs "coordinates" ?

>If each timeseries has different time coordinates, you would need a separate
>dimension, time coordinate variable and data variable for each, as you both
>remark. But what alternative could there be? There isn't any way round storing
>that information, is there. What format did you use in the SQL database,
>Magnus? - was each timeseries a separate table, or did you put them all in
>one table.
>
>
in practice one simply adds the time coordinates to the data measurement
"record". For example, you might have:

float measure1( time);
double time( time);
  time:units = "secs since etc";

so this simple case is quite intuitive, although theres no requirement
that the time "coordinate variable" have monotonic or even unique time
values, so this kind of coordinate variable is different from the
gridded case.

the problem comes if you also want another level of association, say by
station (or when theres multiple trajectories in the file):

float measure1( station, time);
double time( time);
  time:units = "secs since etc";

now you have the problem that all stations must have same times.

One possibility is to go back to this form ( changing time dimension to
record for clarity):

float measure1( record);
  :coordinates = "time station";
double time( record);
int station( record);

this has a good feel to it, you could elaborate on this like:

float measure1( record);
  :coordinates = "time lat lon elev station";
double time( record);
double lat( record);
double lon( record);
double elev( record);
int station( record);

Another step would be to factor out the station information, so its not
redundantly stored:

float measure1( record);
  :coordinates = "time station";
double time( record);
int station( record); // index in the station dimension

char station_name( station, station_name_len);
char station_desc( station, station_desc_len)
double lat( station);
double lon( station);
double elev( station);

anyway those are the kinds of things ive been thinking about.
Received on Sat Jun 11 2005 - 12:01:41 BST

This archive was generated by hypermail 2.3.0 : Tue Sep 13 2022 - 23:02:40 BST

⇐ ⇒