Re: reading all the variables from a netCDF when the variable names are unknown (or too many)

From: Dave Allured <dave.allured_at_nyahnyahspammersnyahnyah>
Date: Tue, 24 Feb 2009 13:24:17 -0700

Jonathan,

Do you need to have all the variables in memory at the same time, or
can you just process them one at a time from the input file to the
output file(s)? The second has a much easier answer than the first.
  A little more information about the nature of your application is
needed.

Dave Allured
CU/CIRES Climate Diagnostics Center (CDC)
http://cires.colorado.edu/science/centers/cdc/
NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
http://www.cdc.noaa.gov/psd1/

Jonathan Vigh wrote:
>
> Greetings NCL'ers,
> I'd like to read in all the variables from a netCDF file in a
> general way because there are 177 of them. I understand how to query the
> file and get a list of variable names, and I even understand how to
> reference the variable using:
> fin->$varnames$
>
> What I am confused about is what to assign this to. I'd like to avoid
> having to type out 177 lines to read in each variable if possible. But
> if I didn't even know the variable names in advance, I'd still like to
> know how to do this.
>
> Maybe I've missed something really basic, but I couldn't seem to find
> anything from the documentation. If anyone has an idea, I'd be most
> grateful. It would be nice if NCL could simply make all the variables in
> a netCDF file available without having to go through this step, so maybe
> this could be the prototype for a new function that does this.
>
> Thanks,
> Jonathan
>
>
> begin
> processed_filename = systemfunc("cd " + processed_data_directory + ";
> ls " + stormid + "*.nc")
> fin = addfile(processed_data_directory + processed_filename,"r") ;
> open output netCDF file
>
> ; query the file to see what variables it contains and what the sizes of
> the file dimensions are
> varnames = getfilevarnames(fin) ; Returns an array of file
> variable names in the file
> filedimsizes = getfiledimsizes(fin) ; Returns a list of the
> sizes of all the dimensions in the file.
>
> ; query all the named variables in the file
> vartypes = getfilevartypes(fin,varnames) ; Returns the type of
> each variable name listed. A missing value is returned for any variable
> name that doesn't exist in the file.
>
>
> ; loop through all the variables, query them, and read them in
> nvars = dimsizes(varnames)
> do ivar = 0, nvars-1
> print("Reading variable ivar = "+ivar+" "+vartypes(ivar)+"
> "+varnames(ivar))
> ???? = fin->$varnames(ivar)$ ; I understand how to
> read in a variable from a file if I don't know the variable name in
> advance, but how can I assign it to a variable without typing the
> variable's name?
> end do
>
> end
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Feb 24 2009 - 13:24:17 MST

This archive was generated by hypermail 2.2.0 : Mon Mar 02 2009 - 16:45:42 MST