[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