Unidata - To provide the data services, tools, and cyberinfrastructure leadership that advance Earth system science, enhance educational opportunities, and broaden participation. Unidata
         
  advanced  
 

Re: [netcdfgroup] Reading netCDF3 format and writing netCDF4 format

Hi Gabriel,

> I would like to use the netCDF4 library
> (with which I am not familiar yet) to read
> netCDF3 files and to convert them to "classic"
> netCDF4 format (compatible with the
> netCDF3 API).
> 
> What C++ API call should I make for reading
> netCDF3 files and what call for writing classic
> netCDF4 formatted files? Do I need to do some
> in-memory processing of the data read from
> netCDF3 files before writing it in netCDF4
> format?

You could use the nccopy utility that's available in the current
netCDF snapshot release from 

  ftp://ftp.unidata.ucar.edu/pub/netcdf/snapshot/

if you don't mind building from source.  nccopy lets you specify the
kind of output file desired with an argument, so to convert a netCDF
classic or 64-bit offset file (commonly called "netCDF3 files") named
"in.nc" to a netCDF-4 classic model file named "foo_4c.nc", you
could use:

  nccopy -k 4 in.nc foo_4c.nc

Alternatively, you could accomplish the same thing with the NCO
(netCDF Operators) package, available from http://nco.sourceforge.net/
by using the "ncks" program to convert the format, using:

  ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc

If you want a generic C program to convert netCDF classic files to
netCDF-4 classic model files, you could use the example nccopy3.c
available here:

  http://www.unidata.ucar.edu/netcdf/examples/programs/nccopy3.c

and in the nc_create call to create the output file, use:

  stat = nc_create(outfile,NC_CLOBBER|NC_NETCDF4|NC_CLASSIC_MODEL,&ogrp);

Then link the program with the netCDF-4 library and it should work.

We don't have a version of nccopy in C++ yet, but we intend to
eventually provide one as an example for using a new C++ API for
netCDF-4, contributed by Lynton Appel of UKAEA Fusion, that will be made
available soon.

--Russ


 
 
  Contact Us     Site Map     Search     Terms and Conditions     Privacy Policy     Participation Policy
 
National Science Foundation (NSF) UCAR Community Programs   Unidata is a member of the UCAR Community Programs, is managed by the University Corporation for Atmospheric Research, and is sponsored by the National Science Foundation.
P.O. Box 3000     Boulder, CO 80307-3000 USA     Tel: 303-497-8643     Fax: 303-497-8690