getfilevaratts
Returns all attribute names associated with a variable on the given file.
Prototype
function getfilevaratts ( thefile [1] : file, varname [1] : string ) return_val [*] : string
Arguments
thefileA reference to a file created from a call to addfile or addfiles. The file referenced must be one in the supported file format list.
varnameThe name of the variable.
Description
This function returns a one-dimensional array of attributes for a file variable. It returns a missing value if the variable doesn't contain any attributes, or if the variable is not defined.
Note: since addfiles returns a variable of type "list", you must subscript the list before calling this function.
See Also
getfilevarnames, getfilevardimsizes, getfilevardimnames, getfilevardims, getfilevartypes, getfileatts, addfile, addfiles
Examples
Example 1
g = addfile("foo.nc" ,"r")
slpAtts = getfilevaratts(g,"slp")
print(slpAtts)
Output:
Variable: slpAtts
Type: string
Total Size: 56 bytes
14 values
Number of Dimensions: 1
Dimensions and sizes: [14]
Coordinates:
(0) long_name
(1) valid_range
(2) actual_range
(3) units
(4) add_offset
(5) scale_factor
(6) missing_value
(7) precision
(8) least_significant_digit
(9) var_desc
(10) dataset
(11) level_desc
(12) statistic
(13) parent_stat
Example 2
To print the the variable's attributes on one line, use str_join:
g = addfile("atmos2.nc" ,"r")
print(str_join(getfilevaratts(g,"T"),", "))
Output:
(0) long_name, units, time_op
Example 3
Consider a list of WRF output files starting with the prefix "wrfout_d01_2008-09". To retrieve the attributes associated with a variable across all files, you must subscript the list variable returned by addfiles:
wrf_files = systemfunc("ls wrfout_d01_2008-09*") f = addfiles(wrf_files+".nc","r") print(getfilevaratts(f[0],"P")
Output:
(0) FieldType (1) MemoryOrder (2) description (3) units (4) stagger (5) coordinatesExample 4
For each variable on a file, print its type, attributes, dimension names, and dimension sizes. It's possible for a variable to not contain dimension names and/or attributes, so the any and ismissing functions are used to check for this:
f = addfile("$NCARG_ROOT/lib/ncarg/data/cdf/Ustorm.cdf","r")
vnames = getfilevarnames(f) ; all variable names
nvars = dimsizes(vnames)
do nv = 0,nvars-1
vtype = getfilevartypes(f,vnames(nv))
vatts := getfilevaratts(f,vnames(nv)) ; The := is important because these
dnames := getfilevardimnames(f,vnames(nv)) ; variables may be a different size
dsizes := getfilevardimsizes(f,vnames(nv)) ; the next time through the loop
; print("==================================================")
print("Variable '" + vnames(nv) + "'")
print(" type : " + vtype)
if(.not.any(ismissing(dnames))) then
print(" dimension names : " + str_join(dnames,","))
else
print(" dimension names : ")
end if
print(" dimension sizes : " + str_join(""+dsizes,","))
if(.not.any(ismissing(vatts))) then
print(" attributes : " + str_join(vatts,","))
else
print(" attributes : ")
end if
end do
Output:
Variable 'u' type : float dimension names : timestep,lat,lon dimension sizes : 64,33,36 attributes : _FillValue Variable 'timestep' type : integer dimension names : timestep dimension sizes : 64 attributes :Variable 'lat' type : float dimension names : lat dimension sizes : 33 attributes : Variable 'lon' type : float dimension names : lon dimension sizes : 36 attributes : Variable 'reftime' type : character dimension names : timelen dimension sizes : 20 attributes : units,long_name