[Thread Prev][Thread Next][Index]
RE: [ferret_users] Defining long_name and standard_name for an axis
Hi Ansley,
Thanks for the information. And yes, I am gridding data onto
the axes that I define, so Ferret currently can't add those
attributes - thanks for find that out before I tried!
It would be nice to add new qualifiers to DEFINE AXIS,
DEFINE AXIS/TITLE= for long_name, and DEFINE AXIS/Standard_name=
for standard name. This last could go on DEFINE VARIABLE too.
This would help make it easier for users to produce more
complete metadata using Ferret.
Thanks again,
Mike
> -----Original Message-----
> From: Ansley Manke [mailto:Ansley.B.Manke@xxxxxxxx]
> Sent: Monday, May 05, 2008 10:28 AM
> To: McCann, Mike
> Cc: oar.pmel.ferret_users@xxxxxxxx
> Subject: Re: [ferret_users] Defining long_name and
> standard_name for an axis
>
> Hi Mike,
> You can do this (though it's not working completely as I'll
> show below).
> The syntax for specifying an coordinate variable is to put it in
> parentheses. Since coordinate variables, or axes, are different from
> regular variables, we used this different syntax. For coordinate
> variables that come from netCDF files, you can do the following
>
> yes? use etopo60
> yes? show grid rose
> GRID GQW1
> name axis # pts start end
> ETOPO60X LONGITUDE 360mr 20.5E
> 19.5E(379.5)
> ETOPO60Y LATITUDE 180 r 89.5S 89.5N
> normal Z
> normal T
>
> yes? define attribute/output (ETOPO60Y).long_name = "this is
> the Y axis
> of ROSE"
> yes? save/clobber/file=aa.nc rose
> LISTing to file aa.nc
>
> yes? sp ncdump -h aa.nc
> netcdf aa {
> dimensions:
> ETOPO60X = 360 ;
> ETOPO60Y = 180 ;
> variables:
> double ETOPO60X(ETOPO60X) ;
> ETOPO60X:units = "degrees_east" ;
> ETOPO60X:modulo = " " ;
> ETOPO60X:point_spacing = "even" ;
> ETOPO60X:axis = "X" ;
> double ETOPO60Y(ETOPO60Y) ;
> ETOPO60Y:units = "degrees_north" ;
> ETOPO60Y:point_spacing = "even" ;
> ETOPO60Y:long_name = "this is the Y axis of ROSE" ;
> ETOPO60Y:axis = "Y" ;
> float ROSE(ETOPO60Y, ETOPO60X) ;
> ROSE:missing_value = -1.e+34f ;
> ...
>
> If you've defined the axis in Ferret, I'm finding that this doesn't
> always work:
>
> yes? ! define an axis, add an attribute, and synthesize a variable
> yes? ! on the axis. The attribute is saved to a file:
>
> yes? define axis/y=-89:89:1/units=deg longitude
> yes? let v = y[gy=longitude]
>
> yes? define attribute/output (longitude).long_name = "here is a new
> longitude axis"
> yes? sh att/all (longitude)
> attributes for coordinate axis
> (LONGITUDE).units = DEG
> (LONGITUDE).point_spacing = even
> (LONGITUDE).axis = Y
> (LONGITUDE).long_name = here is a new longitude axis
>
> yes? save/clobber/file=aa.nc v
> LISTing to file aa.nc
>
> yes? sp ncdump -h aa.nc
> netcdf aa {
> dimensions:
> LONGITUDE = 179 ;
> variables:
> double LONGITUDE(LONGITUDE) ;
> LONGITUDE:units = "DEG" ;
> LONGITUDE:point_spacing = "even" ;
> LONGITUDE:axis = "Y" ;
> LONGITUDE:long_name = "here is a new longitude axis" ;
> float V(LONGITUDE) ;
> V:missing_value = -1.e+34f ;
> V:_FillValue = -1.e+34f ;
> V:long_name = "Y[GY=LONGITUDE]" ;
>
>
> ! But, if we define an axis and regrid an existing variable to it:
>
>
>
> yes? use etopo120
> yes? define axis/y=-89:89:1/units=deg longitude
> yes? define attribute/output (longitude).long_name = "here is
> a 1-degree
> longitude axis"
> yes? sh att/all (longitude)
> attributes for coordinate axis
> (LONGITUDE).units = DEG
> (LONGITUDE).point_spacing = even
> (LONGITUDE).axis = Y
> (LONGITUDE).long_name = here is a 1-degree longitude axis
>
> yes? let rosey = rose[gy=longitude]
> yes? save/clobber/file=aa.nc rosey
> LISTing to file aa.nc
>
> yes? sp ncdump -h aa.nc
> netcdf aa {
> dimensions:
> ETOPO120X = 180 ;
> LONGITUDE = 179 ;
> variables:
> double ETOPO120X(ETOPO120X) ;
> ETOPO120X:units = "degrees_east" ;
> ETOPO120X:modulo = " " ;
> ETOPO120X:point_spacing = "even" ;
> ETOPO120X:axis = "X" ;
> double LONGITUDE(LONGITUDE) ;
> LONGITUDE:units = "degrees_north" ;
> LONGITUDE:point_spacing = "even" ;
> LONGITUDE:axis = "Y" ;
> float ROSEY(LONGITUDE, ETOPO120X) ;
>
>
> This'll give you a start, and we'll work on getting the new attribute
> saved to files in all cases.
>
> Ansley
>
> McCann, Mike wrote:
> > Hi,
> >
> > How does one set the attributes 'long_name' and
> 'standard_name' for output to netCDF on an axis?
> >
> > I can do this for a variable:
> >
> > DEFINE ATTRIBUTE/output PSAL.standard_name = "sea_water_salinity"
> >
> > but for an axis defined like this:
> >
> > DEFINE AXIS/X/UNITS=deg LONGITUDE=-122.39965
> >
> > I don't see how to set the long_name or standard_name.
> >
> >
> > I'm trying to get my data set to pass the CF compliance
> checker which is complaining like this:
> >
> > ------------------
> > Checking variable: LONGITUDE
> > ------------------
> > WARNING (3): No standard_name or long_name attribute specified
> >
> > -Mike
> >
> > --
> > Mike McCann
> > Software Engineer
> > Monterey Bay Aquarium Research Institute
> > 7700 Sandholdt Road
> > Moss Landing, CA 95039-9644
> > Voice: 831.775.1769 Fax: 831.775.1736 http://www.mbari.org
> <http://www.mbari.org/>
> >
> >
> >
> >
> >
>
[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Privacy Policy | Disclaimer | Accessibility Statement