[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Support #LRP-531622]: netCDF4 and variable length arrays in height or range



Hi Barb,

> I was told by Patrick West of RPI who is still a contractor with
> HAO and who also works with opendap, that netCDF4 assumes data from
> any URL is an opendap server, so it can use the opendap client objects
> for matlab or IDL.  Users do not need to download separate opendap software,
> since it is embedded in netCDF4.  Patrick did talk with Ed Hartnett of
> Unidata about this, and Ed suggested talking with the matlab or IDL folks,
> but I don't see how they would be familiar with opendap capabilities.  I am
> copying in Patrick with this note.

Yes, if netCDF-4 is built on a plattform that has the "curl" application and
libraries installed, it gets built with OPeNDAP client support by default.
The IDL and Matlab folks who are responsible for netCDF support know something
about this, and are committed to netCDF-4 support in their products:

  http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#fv10

but I don't know if they are configuring in OPeNDAP support.  We should ask
them about that.

> Howerver, I think this means clients can work in matlab or IDL and read 
> netCDF4
> files so accessing data this way is like having an Application Programming
> Interface (API).  Is this correct?  Do we automatically get APIs in matlab
> and IDL by using netCDF4 in this way?  Do APIs 'pinpoint' the data on a
> server machine and only get that data?  Is the data stored in some /temp/
> disk which could be saved elsewhere for later use?  I am not really familiar
> with APIs, so I don't really know what they do.  A simple explanation of
> them and how netCDF4 works with them using the opendap client objects would
> be great.

APIs are just jargon for the functions that a library makes public, such as
the public functions nc_open, nc_inq_var, nc_def_var, and nc_close in the 
netCDF C library.  The OPeNDAP client support added to netCDF-4 just means
that you can call nc_open (or nf_open or nf90_open or ...) with the URL for
a dataset on a remote OPeNDAP server in place of the filename you would
usually use.  And the URL can use OPeNDAP notation to specify a particular
variable or even a particular range of indices for a particular variable, so
you can remotely access a small subset of the data from a large dataset
efficiently.  The data is accessed directly by the program that makes the
nc_get_var (or nf90_get_var or whatever) call, without need for a temporary
disk file.

If you want to copy a small part of a large remote file to a local netCDF
file, you can do that with the nccopy utility in netCDF-4.1.1.

To access remote data, you shouldn't have to change anything in your program
except the name of the file you are opening.  You also have to recompile and
relink your program with the netCDF-4 library, configured with support for
OPeNDAP, using the --enable-dap option to configure (or by default if the
curl library is installed).

--Russ

Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: LRP-531622
Department: Support netCDF
Priority: Normal
Status: Closed