CMDAC's netCDF and Stranger file formats

This disk has two primary components: a netCDF archive and an ASCII archive. Each contains all of the WOCE current meter records. Both formats are described here.

1. The netCDF format

netCDF is a relatively compact binary format. It is self-documenting: that is, each file contains metadata that describe the file - where and when the data were gathered, which parameters are present, what their units are, etc. We have employed the netCDF format here in response to an initiative in the oceanographic community to establish a common data format. At the present writing (June 2002) it appears that netCDF may eventually gain wide currency. It is both compact and flexible and is an excellect medium for time series and other dimensional data.

Our implementation of netCDF is based on a standard established by the Unidata Program Center of UCAR. The netCDF standard is described on UCAR's website:

https://www.unidata.ucar.edu/software/netcdf/

From links on this site you can download a user's guide and netCDF software for several different operating systems. In addition, several Linux distributions such as Redhat, Ubuntu and openSUSE also provide netCDF by means of installers like dnf, apt, and zypper.

The current meter records on this disk are presented as files that contain one or more time series. Each file corresponds to one instrument. Consider, for example, an experiment in which 30 instruments produced data. The experiment will be represented here by 30 files, one for each instrument. If a particular instrument recorded, say, speed, direction, temperature, and pressure, the file from that instrument will contain the following 6 time series: speed, direction, eastward component, northward component, temperature, and pressure. Note that we have redundantly included the two current components as well as speed and direction. In compliance with the WOCE/COARDS netCDF standard the file will also contain 3 additional series that measure time: (1) time in minutes since 0000 hrs 1 January 1980, (2) a date series with units of yyyymmdd, and (3) a time-of-day series with units of hhhhmmss.dd.

Software to access and manipulate netCDF is widely available. A useful utility is the Matlab/netCDF interface created by CSIRO. This add-on to Matlab allows you to extract and manipulate data from a netCDF file with a few simple commands. To translate netCDF files to their companion CDL format you can use the UCAR utility NCDUMP, which is a standard part of every netCDF distribution. NCDUMP reads a netCDF file and produces ASCII output that shows metadata and one or more of the time series in the file. NCDUMP is run from the UNIX, Linux, or Windows command-line interface. As an example, the listing below (in green) was produced by the command

ncdump -v speed rcm01000.nc > speed.cdl

In this command rcm01000.nc is the name of the input file, a netCDF current meter record on this disk. speed.cdl is the name of the output file and is arbitrary (you can choose any name you wish). The command requests metadata and just one time series, current speed. -v is a flag that requests a particular time series or combination of time series. In this case only speed is requested.


netcdf rcm01000 {
dimensions:
	time = 11831 ;
	depth = 1 ;
	latitude = 1 ;
	longitude = 1 ;
variables:
	int time(time) ;
		time:long_name = "time" ;
		time:units = "minutes since 1980-1-1 0:0:0" ;
		time:data_min = 6563160 ;
		time:data_max = 7272960 ;
	float depth(depth) ;
		depth:long_name = "depth" ;
		depth:units = "meters" ;
		depth:positive = "down" ;
		depth:data_min = 210. ;
		depth:data_max = 210. ;
	float latitude(latitude) ;
		latitude:long_name = "latitude" ;
		latitude:units = "degrees_N" ;
		latitude:data_min = -30.0032 ;
		latitude:data_max = -30.0032 ;
	float longitude(longitude) ;
		longitude:long_name = "longitude" ;
		longitude:units = "degrees_E" ;
		longitude:data_min = 5.9958 ;
		longitude:data_max = 5.9958 ;
	int woce_date(time) ;
		woce_date:long_name = "WOCE date" ;
		woce_date:units = "yyyymmdd UTC" ;
		woce_date:data_min = 19920623 ;
		woce_date:data_max = 19931029 ;
	float woce_time(time) ;
		woce_time:long_name = "WOCE time" ;
		woce_time:units = "hhmmss.dd UTC" ;
		woce_time:data_min = 0. ;
		woce_time:data_max = 230000. ;
	float speed(time) ;
		speed:long_name = "current speed" ;
		speed:units = "meters per second" ;
		speed:data_min = 0.0093 ;
		speed:data_max = 0.6821 ;
	float direction(time) ;
		direction:long_name = "true direction (toward)" ;
		direction:units = "degrees, clockwise from N" ;
		direction:data_min = 0. ;
		direction:data_max = 359. ;
	float u(time) ;
		u:long_name = "eastward velocity component" ;
		u:units = "meters per second" ;
		u:data_min = -0.4486 ;
		u:data_max = 0.4254 ;
	float v(time) ;
		v:long_name = "northward velocity component" ;
		v:units = "meters per second" ;
		v:data_min = -0.6566 ;
		v:data_max = 0.5341 ;
	float temperature(time) ;
		temperature:long_name = "temperature" ;
		temperature:units = "degrees C" ;
		temperature:data_min = 10.775 ;
		temperature:data_max = 16.871 ;
	float pressure(time) ;
		pressure:long_name = "pressure" ;
		pressure:units = "decibars" ;
		pressure:data_min = 213.6 ;
		pressure:data_max = 324.3 ;

// global attributes:
		:WOCE_Version = "3.0" ;
		:conventions = "COARDS/WOCE" ;
		:EXPOCODE = "91AF105, 74DI202, 323008" ;
		:experiment_name = "BEST (ACM4)" ;
		:mooring_name = "BEST 4" ;
		:pi_name = "R.D.Pillsbury/A.L.Gordon" ;
		:instrument_type = "Aanderaa RCM-8" ;
		:latitude = "-30.0032" ;
		:longitude = "   5.9958" ;
		:instrument_depth = "210.0 m" ;
		:seafloor_depth = " 5180 m" ;
		:sampling_interval = "  60 min" ;
		:earliest_start_time = "23-jun-1992 18:00:00" ;
		:latest_stop_time = "29-oct-1993 16:00:00" ;
		:missing_value = -999.9 ;
data:

 speed = 0.1661, 0.1575, 0.1719, 0.2035, 0.1834, 0.1891, 0.192, 0.192, 
    0.2006, 0.1546, 0.1259, 0.1345, 0.1431, 0.1316, 0.1431, 0.1259, 0.0801, 
    0.0801, 0.0972, 0.0915, 0.1087, 0.1374, 0.1604, 0.169, 0.1805, 0.1805, 
    0.192, 0.1863, 0.192, 0.2064, 0.192, 0.1978, 0.2006, 0.2006, 0.1805, 
    0.1805, 0.1632, 0.1345, 0.1288, 0.1001, 0.0801, 0.0773, 0.0744, 0.0659, 
    0.0547, 0.0773, 0.1201, 0.1661, 0.1949, 0.1863, 0.1949, 0.2035, 0.2122, 
    0.2064, 0.1863, 0.169, 0.1632, 0.1604, 0.1604, 0.1489, 0.123, 0.0915, 
    0.0575, 0.0382, 0.0355, 0.0382, 0.0491, 0.0463, 0.0575, 0.0801, 0.1173, 
    0.1345, 0.1604, 0.1776, 0.1978, 0.1863, 0.1431, 0.1374, 0.1316, 0.1001, 
    0.0716, 0.0491, 0.0463, 0.0519, 0.0858, 0.1144, 0.1345, 0.1087, 0.1144, 
       .
       .
       .

This listing shows metadata and the first 10 lines of the speed series. The format shown above is called "CDL" by UCAR. CDL stands for Common Data form Language. NCDUMP is described in the netCDF user's guide, which you can download from UCAR. UCAR's package is written in the C language but contains a Fortran interface to the C routines.

2. Stranger format

The OSU Buoy Group has for many years provided current meter data to other organizations in a simple ASCII format that we have named the Stranger format ("Stranger" because any stranger can easily understand and use it). We have included here a second archive identical to the netCDF archive, except that all the files have the Stranger format. This format is easily readable by both humans and computers; you may find it preferable to netCDF. It has been adopted by a number of other groups. We show below a portion of the Stranger version of the netCDF file displayed above:


    22 header lines
 11831 data lines
(i4,3i3,f8.2,f7.1,2f8.2,f8.3,f8.1,i6)                                   
Experiment name:  BEST (ACM4)             
Mooring name:     BEST 4                  
Mooring position:  30.003 deg S,   5.996 deg E
Instrument depth:   210 meters
Seafloor depth:    5180 meters
Instrument type:   Aanderaa RCM8
CMDB accession number:   1000
Parameters:  
      hour 
      day  
      month
      year 
      speed (cm/sec)    
      dir (deg true)    
      u (cm/sec)        
      v (cm/sec)        
      temp (deg C)      
      pressure (db)     
      line count
1800 23  6 92   16.61  283.0  -16.19    3.74  14.352   232.0     1
1900 23  6 92   15.75  289.0  -14.89    5.13  14.477   231.2     2
2000 23  6 92   17.19  286.0  -16.52    4.74  14.139   231.2     3
2100 23  6 92   20.35  282.0  -19.91    4.23  14.050   230.5     4
2200 23  6 92   18.34  275.0  -18.27    1.60  14.103   230.5     5
2300 23  6 92   18.91  276.0  -18.81    1.98  13.935   230.5     6
   0 24  6 92   19.20  276.0  -19.10    2.01  14.094   230.5     7
 100 24  6 92   19.20  275.0  -19.13    1.67  13.855   230.5     8
 200 24  6 92   20.06  272.0  -20.05    0.70  13.563   230.5     9
 300 24  6 92   15.46  261.0  -15.27   -2.42  13.837   230.5    10
      .
      .
      .

This file, like the netCDF dump, begins with metadata. Following the metadata, each line represents one sampling cycle and contains hour, day, month, year, speed, direction, eastward component, northward component, temperature, pressure and a line count. Note that if you read this file with a computer program, the first line of the file tells the program where the data begins, the second line tells it how many lines of data there are, and the third line describes the format of the data. You can examine a Stranger format file with any text editor, and you can easily strip off the header and import it into a spreadsheet program.

Return to the top window.