Skip Top Navigation
only rendered in printing; ARL website banner
Air Resources Laboratory banner imageNOAA logo

Gridded Meteorological Data Archives


Overview

The National Weather Service's National Centers for Environmental Prediction (NCEP) runs a series of computer analyses and forecasts operationally. NOAA's Air Resources Laboratory (ARL) routinely uses NCEP model data for use in air quality transport and dispersion modeling calculations. In 1989 ARL began to archive some of these datasets for future research studies. ARL has in the past, or is presently archiving the following NCEP datasets, which can be retrieved via ftp by clicking on the name of the dataset:


Currently Available Data


Data No Longer Updated

All of these datasets contain basic fields such as the u- and v-wind components, temperature, and humidity. However, the archives differ from each other because of the horizontal and vertical resolution, as well as in the specific fields provided by NCEP. All fields were selected by ARL according to what is most relevant for transport and dispersion studies and disk space limitations.

Data Packing Format

NCEP typically saves their model output in GRIB format. However, at ARL the data are reprocessed and stored in a 1-byte packing algorithm. This 1- byte packing is a bit more compact than GRIB and can be directly used on a variety of computing platforms with direct access I/O.

The data array is packed and stored into one byte characters. To preserve as much data precision as possible the difference between the values at grid points is saved and packed rather than the actual values. The grid is then reconstructed by adding the differences between grid values starting with the first value, which is stored in unpacked ASCII form in the header record. To illustrate the process, assume that a grid of real data, R, of dimensions i,j is given by the example below.

1,j       2,j        ....   i-1,j      i,j
1,j-1     2,j-1      ....   i-1,j-1    i,j-1
....     ....      ....   ....      ....
1,2       2,2        ....   i-1,2      i,2
1,1       2,1        ....   i-1,1      i,1

The packed value, P, is then given by

Pi,j = (Ri,j  - Ri-1,j)* (2**(7-N)),

where the scaling exponent

N = ln dRmax / ln 2 .

The value of dRmax is the maximum difference between any two adjacent grid points for the entire array. It is computed from the differences along each i index holding j constant. The difference at index (1,j) is computed from index (1,j-1), and at 1,1 the difference is always zero. The packed values are one byte unsigned integers, where values from 0 to 126 represent -127 to -1, 127 represents zero, and values of 128 to 254 represent 1 to 127. Each record length is then equal in bytes to the number of array elements plus 50 bytes for the header label information. The 50 byte label field precedes each packed data field and contains the following ASCII data:


Field          Format    Description                             
Year           I2        Greenwich date for which data valid
Month          I2                       "
Day            I2                       "
Hour           I2                       "
Forecast*      I2        Hours forecast, zero for analysis
Level          I2        Level from the surface up (see Table 3)
Grid           I2        Grid identification (see Table 1)
Variable       A4        Variable label (see Table 2)
Exponent       I4        Scaling exponent needed for unpacking
Precision      E14.7     Precision of unpacked data
Value 1,1      E14.7     Unpacked data value at grid point 1,1

*Forecast hour is -1 for missing data. 

The following Fortran90 program can be used to to unpack and read the first few elements of the data array for each record of an ARL packed meteorological file.

CHK_DATA.F