Next: , Previous: Parallel Access, Up: Structure


4.11 Interoperability with HDF5

To create HDF5 files that can be read by netCDF-4, use HDF5 1.8, which is not yet released. However most (but not all) of the necessary features can be found in their latest development snapshot.

HDF5 has some features that will not be supported by netCDF-4, and will cause problems for interoperability:

These are fairly easy requirements to meet, but there is one relating to shared dimensions which is a little more challenging. Every HDF5 dataset must have a dimension scale attached to each dimension.

Dimension scales are a new feature for HF 1.8, which allow specification of shared dimensions.

(In the future netCDF-4 will be able to deal with HDF5 files which do not have dimension scales. However, this is not expected before netCDF 4.1.)

Finally, there is one feature which is missing from all current HDF5 releases, but which will be in 1.8 - the ability to track object creation order. As you may know, netCDF keeps track of the creation order of variables, dimensions, etc. HDF5 (currently) does not.

There is a bit of a hack in place in netCDF-4 files for this, but that hack will go away when HDF5 1.8 comes out.

Without creation order, the files will still be readable to netCDF-4, it's just that netCDF-4 will number the variables in alphabetical, rather than creation, order.

Interoperability is a complex task, and all of this is in the alpha release stage. It is tested in libsrc4/tst_interops.c, which contains some examples of how to create HDF5 files, modify them in netCDF-4, and then verify them in HDF5. (And vice versa).