Hi Alison,

Thanks for taking the time.
I think I agree with the current definitions with your modifications. I am happy we could be a bit less strict on the time bounds and that I could convey the idea that "a displacement does not prescribe a trajectory". I will now communicate with my 'scientific community' to hear if they have some further inputs.

I would however like to discuss here the time bounds thing and see if someone can help me understanding how/if I can apply the concept to my data model.

My comments come below:

Pamment, JA (Alison) wrote:
To take your two points in order:

a) The purpose of including the text about the bounds variable is to
provide a 'handy hint' for data providers and users on how to use these
standard names in conjunction with other CF attributes to obtain a
complete description of the data.  This is not an uncommon thing to do
in the standard name table because often the standard name on its own
does not completely describe the data.  For example, the definition of
the standard name
change_over_time_in_atmospheric_water_content_due_to_advection reads:
"The specification of a physical process by the phrase due_to_process
means that the quantity named is a single term in a sum of terms which
together compose the general quantity named by omitting the phrase.
'change_over_time_in_X' means change in a quantity X over a
time-interval, which should be defined by the bounds of the time
coordinate. 'Content' indicates a quantity per unit area. 'Water' means
water in all phases."
If you were trying to work with real data 'change_over_time' would be
difficult to interpret unless you also knew the time interval involved.
If I have understood your names correctly I think the same would be true
for 'displacement' so there is a need to include the text about time
bounds.
Yes. My displacement is nothing more that a 'change_over_time_in_geoposition'. Is there actually a quantity X for 'geoposition' (which would be lat/lon)? I saw that there was a reference to 'position' in magnitude_of_derivative_of_position_wrt_model_level_number where it is a 3D position. Displacements can be 3D so 'displacement' is maybe nothing more than a 'change_over_time_in_position', with 'position' being a 3D point. I do not know if we will win anything in recognizing the aliasing but it might help understanding how to build the standard_name as well as the time bounds thing. Plus, I did not find the definition of what 'change_over_y_in_x' describes but it is clear that we cannot use it for displacement if the 'change' is intended as being 'continuous', like dx/dy = constant for all y.

b) At present I think the only way in the CF conventions of describing
the start and end of a time interval is to use a bounds variable for the
time axis.  (I hope someone will correct me if I am wrong).  It is one
of the fundamental philosophies of CF development that the conventions
are only modified in response to current needs, rather than trying to
foresee all possible future requirements.  (The same is true of standard
names - we don't add them unless somebody has an actual need for them).
If the CF conventions on specifying time intervals were to be modified
in future we would need also to modify that part of all the standard
name definitions which explains how to specify the time interval.
Fine :-).
I think we agree that :
1) the time interval is crucial for the displacement variable to be interpreted;
2) that time bounds is the current implementation of an interval. If I want CF compliance, I should live with this fact.


I note that you say that 'bounds' may not be the easiest solution for
you to implement.  Please could you explain a bit more about why this
is?  If your start and end times are not clearly defined then perhaps we
could cope with that using the cell_methods attribute applied to a
standard_name of time, rather than to the time coordinate variable
itself.  I realise that my last sentence may seem rather cryptic -
please see section 7.3 of the conventions, particularly the text
immediately following example 7.5 for a fuller explanation.

My start and end times are clearly defined and I can give a numerical value to them (e.g. in seconds since a reference date/time). I would have no issue with time bounds if my product file contained displacements from t0 to t1, with t0 and t1 being constant in my file. But this is not the case. I actually have, in the same file, several displacements (from several locations) which have slightly different t0 and t1. Plus, my product is 'gridded'. It means that it currently have a CDL structure like (sorry for the long copy-paste):

dimensions:
        time = 1 ;
        xc = 120 ;
        yc = 178 ;
variables:
        int Polar_Stereographic_Grid ;
                Polar_Stereographic_Grid:grid_mapping_name = 
"polar_stereographic" ;
                Polar_Stereographic_Grid:straight_vertical_longitude_from_pole 
= -45.f ;
                Polar_Stereographic_Grid:latitude_of_projection_origin = 90.f ;
                Polar_Stereographic_Grid:standard_parallel = 70.f ;
                Polar_Stereographic_Grid:false_easting = 0.f ;
                Polar_Stereographic_Grid:false_northing = 0.f ;
                Polar_Stereographic_Grid:earth_shape = "elliptical" ;
Polar_Stereographic_Grid:proj4_string = "+proj=stere +a=6378273 +b=6356889.44891 +lat_0=90 +lat_ts=70 +lon_0=-45" ;
        int time(time) ;
                time:long_name = "reference time of product" ;
                time:units = "seconds since 1978-01-01 00:00:00" ;
        double xc(xc) ;
                xc:axis = "X" ;
                xc:units = "km" ;
                xc:long_name = "x coordinate of projection (eastings)" ;
                xc:standard_name = "projection_x_coordinate" ;
                xc:grid_spacing = "62.50 km" ;
        double yc(yc) ;
                yc:axis = "Y" ;
                yc:units = "km" ;
                yc:long_name = "y coordinate of projection (northings)" ;
                yc:standard_name = "projection_y_coordinate" ;
                yc:grid_spacing = "62.50 km" ;
        float lon(yc, xc) ;
                lon:long_name = "longitude coordinate" ;
                lon:standard_name = "longitude" ;
                lon:units = "degrees_east" ;
                lon:_FillValue = -9999.f ;
                lon:grid_mapping = "Polar_Stereographic_Grid" ;
                lon:coordinates = "yc xc" ;
        float lat(yc, xc) ;
                lat:long_name = "latitude coordinate" ;
                lat:standard_name = "latitude" ;
                lat:units = "degrees_north" ;
                lat:_FillValue = -9999.f ;
                lat:grid_mapping = "Polar_Stereographic_Grid" ;
                lat:coordinates = "yc xc" ;
        float dX(time, yc, xc) ;
                dX:long_name = "component of the displacement along the x axis of 
the grid" ;
                dX:standard_name = "sea_ice_x_displacement" ;
                dX:units = "km" ;
                dX:_FillValue = -1.e+10f ;
                dX:grid_mapping = "Polar_Stereographic_Grid" ;
                dX:coordinates = "yc xc" ;
}

I want to keep the time dimension to 1 because it guarantees that current softwares will open the file and present it as a map with one time stamp. This time stamp corresponds (arbitrarily) to t0, the (average) start time of my displacements. If all my t0 and t1 times where the same, I could (correct me if I am wrong) keep the scalar time dimension and add a bounds attribute to my times variable:

>>>>>>>>>>>
dimensions:
 time = 1 ;
 nv = 2 ;

variables:
   int time(time) ;
        time:long_name = "reference time of product" ;
        time:units = "seconds since 1978-01-01 00:00:00" ;
        time:bounds = "time_bnds";
   double time_bnds(time,nv);

data :
   time = t0;
   time_bnds : t0,t1;
>>>>>>>>>>>>

Would that be clear enough? Or do I have to use a cell_methods for my dX and dY variable? And which one would it be?

Finally, if my 'nominal' or 'average' t0 and t1 are known per file, I still have a different t0 and t1 at each grid point. May I use a 'correction to time_bounds'? Or is my data model incompatible with the concept of a scalar time variable?


I think we could soften my original text by inserting 'if possible', and
taking into account your later comment about the use of 'during', I now
suggest: "If possible, the time interval over which the motion took
place should be specified using a bounds variable for the time
coordinate variable." Does that sound better?
Yes it does, thanks.
The 'when this is not true longitude' phrase appears in all standard
name definitions referring to x_components.  See, for example, the
definition of the standard name projection_x_coordinate: " 'x' indicates
a vector component along the grid x-axis, when this is not true
longitude, positive with increasing x. Projection coordinates are
distances in the x- and y-directions on a plane onto which the surface
of the Earth has been projected according to a map projection. The
relationship between the projection coordinates and latitude and
longitude is described by the grid_mapping."  Corresponding names and
definitions exist for y_components.

In CF, if the horizontal coordinates of the data are true longitude and
latitude (i.e., lines of longitude converge at the earth's geographical
poles and lines of latitude are orthogonal to that) then it is
appropriate to use eastward|northward standard names to refer to
components of motion.  If, however, your data are on a rotated pole grid
or a planar map projection you should use x|y standard names.  Does this
answer your question? Section 5.6 of the conventions document
"Horizontal Coordinate Reference Systems, Grid Mappings, and
Projections" gives more information.

I would prefer that we keep this sentence as it is in view of the
distinction that CF makes between (lon,lat) and (x,y) coordinates.  Also
for consistency with other standard name definitions.  Do you agree?
I do. This is great to keep the sentence 'when this is not true longitude' or 
'latitude'.

So now the full definitions would read as follows:
I agree with them. Thanks.


eastward_sea_ice_displacement     [m]
'Displacement' means the change in geospatial position of an object that
has moved over time. If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component.  "Eastward"
indicates a vector component which is positive when directed eastward
(negative westward). An eastward displacement is the distance across the
earth's surface calculated from the change in a moving object's
longitude between the start and end of the time interval associated with
the displacement variable.

northward_sea_ice_displacement    [m]
'Displacement' means the change in geospatial position of an object that
has moved over time.  If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component.  "Northward"
indicates a vector component which is positive when directed northward
(negative southward).  A northward displacement is the distance across
the earth's surface calculated from the change in a moving object's
latitude between the start and end of the time interval associated with
the displacement variable.

sea_ice_x_displacement            [m]
'Displacement' means the change in geospatial position of an object that
has moved over time.  If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component.  "x" indicates a
vector component along the grid x-axis, when this is not true longitude,
positive with increasing x.  An x displacement is calculated from the
difference in the moving object's grid x coordinate between the start
and end of the time interval associated with the displacement variable.
sea_ice_y_displacement [m]
'Displacement' means the change in geospatial position of an object that
has moved over time.  If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component. "y" indicates a
vector component along the grid y-axis, when this is not true latitude,
positive with increasing y.  A y displacement is calculated from the
difference in the moving object's grid y coordinate between the start
and end of the time interval associated with the displacement variable.

sea_ice_displacement [m]
'Displacement' means the change in geospatial position of an object that
has moved over time.  If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component.  In that case,
"displacement" is also the distance across the earth's surface
calculated from the change in a moving object's geospatial position
between the start and end of the time interval associated with the
displacement variable.
direction_of_sea_ice_displacement [degrees]
'Displacement' means the change in geospatial position of an object that
has moved over time.  If possible, the time interval over which the
motion took place should be specified using a bounds variable for the
time coordinate variable.  A displacement can be represented as a
vector. Such a vector should however not be interpreted as describing a
rectilinear, constant speed motion but merely as an indication that the
start point of the vector is found at the tip of the vector after the
time interval associated with the displacement variable.  A displacement
does not prescribe a trajectory. Sea ice displacement can be defined as
a two-dimensional vector, with no vertical component.  "direction_of_X"
means direction of a vector, a bearing.  The
'direction of displacement' is the angle between due north and the
displacement vector.
_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to