Hi John and Penny,
I have looked at a few of the files listed below. The files appear to me
to be COARDS compliant with the exception of some of the units attributes.
In the ADCP file:
"days relative to 1989-1-1 0:0:0" should be "days since 1989-1-1 0:0:0".
"yyyymmdd UTC" is not a legal unit. I would suggest eliminating the unit
attribute and encoding this information in the long_name, i.e., "WOCE date
as yyyymmdd UTC". Similarly for woce_time_of_day. "degrees C" is a legal
unit, but it's not a temperature (its a product of pi/180 radians and
Coulomb). "degree_C" or "Celsius" are a few of the many legal units for
Celsius temperature.
In the Met file:
"degrees (+N)" and "degrees (+E)" are not legal units.
See http://www.unidata.ucar.edu/packages/udunits/udunits.dat for the
specification of units.
On the issue of longitude coordinate values the statement in the COARDS
document, "the sequence of numerical longitude values stored in the netCDF
file must be monotonic in a non-modulo sense" is referring to a longitude
"coordinate variable". In netCDF terms that means a variable of the form
longitude(longitude). The files in question contain descriptions of
longitude values along a trajectory, which is expressed by
longitude(time). That is not a longitude "coordinate variable" in the
netCDF sense, and the COARDS restriction stated above doesn't apply to it.
John pointed out that in the CF convention
(http://www.unidata.ucar.edu/packages/netcdf/conventions.html) the way to
"connect" the latitude and longitude coordinates to the variables that use
them is:
> float u(time, depth) ;
> u:coordinates="latitude, longitude";
> float v(time, depth) ;
> v:coordinates="latitude, longitude";
His 2nd suggestion for attaching the lat and lon coordinates to the time
coordinate is not supported in CF.
Best regards,
Brian
On Tue, 5 Feb 2002, John Caron wrote:
>
> ----- Original Message -----
> From: "Penny Holliday" <nph@xxxxxxxxxxxxxxx>
> To: "John Caron" <caron@xxxxxxxxxxxxxxxx>
> Sent: Tuesday, February 05, 2002 4:27 AM
> Subject: Re: Re: longitude again.
>
>
> > Hi John,
> > Sea level files are on a DODS server at
> > http://uhslc1.soest.hawaii.edu/uhslc/fast.html
> >
> > A Pacific ADCP file at
> > http://ilikai.soest.hawaii.edu/sadcp/v3/draft/database/00154.htm
> > (or
> > http://ilikai.soest.hawaii.edu/sadcp/v3/draft/invntory/woceonex.htm
> > for the table of all cruises)
> >
> > A Met file at
> > http://www.coaps.fsu.edu/RVSMDC/cgi-bin/woce_line.cgi?woce_line=A11
> >
> > For the "WOCE netCDF conventions" we have agreed to, see
> > http://www.cms.udel.edu/woce/v3cd/dpc_wg/ specifically the
> > conventions document.
> >
> > Thanks, Penny
> >
>
> A few comments on the WOCE Conventions, and the netcdf files that use them.
>
> 1) Generally, I think its a very intelligent use of netcdf files.
>
> 2) These conventions are an extension of COARDS, and so I think its a
> mistake to have
>
> :CONVENTIONS = "COARDS" ;
>
> better to have
>
> :Conventions = "COARDS/WOCE" ;
>
> to indicate that this is an extension. (Note it is more standard to use
> upper/lower case for "Conventions")
>
> The next comments will use this example Pacific ADCP file:
> netcdf 00154v3 {
> dimensions:
> depth = 24 ;
> time = UNLIMITED ; // (386 currently)
> variables:
> float depth(depth) ;
> int time(time) ;
> double decday(time) ;
> int woce_date(time) ;
> float woce_time_of_day(time) ;
> float longitude(time) ;
> float latitude(time) ;
>
> float trans_temp(time) ;
> float sd_trans_temp(time) ;
> float ship_u(time) ;
> float sd_ship_u(time) ;
> float ship_v(time) ;
> float sd_ship_v(time) ;
> float u(time, depth) ;
> float v(time, depth) ;
>
> // global attributes:
> :WOCE_Version = "3.0" ;
> :CONVENTIONS = "COARDS" ;
> }
>
>
> 3) You have 2 coord vars, depth() and time(), these are presumably
> monotonic, so you are ok there.
>
> 4) You have several "auxiliary coordinates", of which the most important are
> longitude and latitude. I think most people familiar with netcdf will
> correctly infer that these are the positions of the measurements at the
> given time. However, your conventions dont actually say that, and COARDS
> doesnt deal with auxiliary coordinates at all, so I would reccommend that
> you amend your Conventions document to explicitly say that.
>
> 5) It would also be preferable to explicitly document the cordinat systems
> in the file. Since there are no well established ways to do this, its not
> surprising that you haven't. One possibility, following CF:
>
> float u(time, depth) ;
> u:coordinates="latitude, longitude";
> float v(time, depth) ;
> v:coordinates="latitude, longitude";
> ...
>
> you would have to repeat this for every measurement. Another possibility
> could be:
>
> int time(time) ;
> time:coordinates="latitude, longitude";
>
> although this has its problems also.
>
>
> 6) I am surprised that depth is not a function of time, ie, it could vary
> with each sample.
-----------------------------------------------------------------
Brian Eaton | email: eaton@xxxxxxxx
Climate Modeling Section |
National Center for Atmospheric Research |
P.O. Box 3000, Boulder, CO 80307 |