Re: netCDF future directions


Ata (ATAE@xxxxxxxxxxxxxxxxxxxxxxxxxxx) writes:

> ...  By a Domain I mean some kind of tagging in netCDF to indicate
> that the data is applicable to a particular domain (eg CAD. Vision,
> Time-series, etc..). My routines for analysing time-series are not able to
> take advantage of data in a form suitable for CAD/CAM, or images or
> etc.. If there was such a tag, applications could automatically decide
> whether the data in a netCDF file is relevant to them. This would allow a
> more object oriented approach and save on development time for
> applications. ...

Coincidentally, I was just about to announce an implementation of a very
similar idea to Ata's proposed Domains that has grown out of an email
discussion with Nancy Soreide, Rich Signell, Donald Denbo, and others.  The
idea is to support the registry of sets of conventions for netCDF files, and
to permit a hierarchy of conventions that can support an object-oriented
approach to discipline-specific netCDF conventions.

We have set up an ftp directory, pub/netcdf/Conventions on, where outside individuals or groups will be able to
create directories and write files.  This directory is a repository for
registered sets of netCDF conventions, as supported by the global
Conventions attribute to be described in the Attribute Conventions section
of the netCDF User's Guide.  Gopher access to these conventions is also
supported through the Unidata gopher server.

The reason it has taken us so long to implement this is that we were trying
to solve some problems with uploading files in the FTP server we're using,
but we have an interim workaround that should permit outside users to upload
and change conventions documents without making our FTP archives
world-writable.  The documentation update for the Conventions attribute will
be included in the next (minor) release, netCDF version 2.3.3.

Description of the Conventions Attribute

If present in a netCDF file, `Conventions' is a global attribute that is a
character array for the name of the conventions followed by the file, in the
form of a string that is interpreted as a directory name relative to

        directory:      pub/netcdf/Conventions on

This permits a hierarchical structure for conventions and provides a place
where descriptions and examples of the conventions may be maintained by the
defining institutions and groups.

For example, if a group named NUWG agrees upon a set of conventions for
dimension names, variable names, required attributes, and netCDF
representations for certain discipline-specific data structures, they may
store a document describing the agreed-upon conventions in a file in the
NUWG/ subdirectory of the Conventions directory, and files that followed
these conventions would contain the global attribute

        :Conventions = "NUWG";

Later, if the group agrees upon some additional conventions for a specific
subset of NUWG data, for example time series data, the description of the
additional conventions might be stored in the NUWG/Time_series/
subdirectory, and files that adhered to these additional conventions would
use the global attribute

        :Conventions = "NUWG/Time_series";

Here are some other examples of plausible values for a Conventions

        :Conventions = "WHOI/Time_Series";              // WHOI's version
        :Conventions = "WHOI/Time_Series/Version_3";    // later extensions
        :Conventions = "PMEL-EPIC/CTD"; // this is a PMEL-EPIC CTD file

Typical contents of a conventions directory will be one or more conventions
documents in some form agreed upon by the community that supports the
conventions and one or more CDL files that provide examples of netCDF file
structures that follow the conventions.

Unidata makes available a limited amount of disk space for anonymous FTP
access for these convention documents and provides mechanisms for outside
groups to create and maintain their own convention hierarchies.  Unidata
does not endorse or maintain any conventions provided by outside groups.

Russ Rew                                        Unidata Program Center
russ@xxxxxxxxxxxxxxxx                           UCAR, PO Box 3000
                                                Boulder, CO 80307-3000