Data Resources: FAQ on Reading and Interpreting PSL netCDF files

The vast majority of the data that we distribute in netCDF files have been packed into short integers to save space. You must unpack that data to get the correct floating point representation of the data. Each netCDF variable that has been packed has an add_offset and scale_factor attribute associated with it. The scale_factor and add_offset can vary with each netCDF file even for the same variable from the same data set, though this doesn't happen often.

The formula to unpack the data is:

unpacked value = add_offset + ( (packed value) * scale_factor )

NCL has this builtin. Use the function short2flt to read the netCDF files where the data is packed.

First of all, modern versions of ncdump can translate the times in our files to a human readable form. The flag to do so is "-t". All of the times are double values which represent the number of days or hours from an origin date. The units attribute for the time variable is the key to decoding the time values. For example, a file could have time units of "days since 1-1-1 00:00:0.0". With those units, an encoded value of 725738. would be the value for the date 1988-01-01. Now, if you just did some quick arithmetic in your head and you came up with a different value, it's not too surprising. There are many calendar systems that have been existence at various times in history and there are various shifts that won't be accounted for by all algorithms. The translation between the times in the file and human readable times and vice versa can be greatly simplified by using the UDUNITS library from UniData. Additionally, Numerical Recipes implements the correct algorithm as well.

"The NCEP/NCAR 40-years Reanalysis Project" (Bulletin of the American Meteorological Society, Vol. 77, No. 3, March 1996). On-line version. It's also available at NCAR.

CDROMs from the Annual Reanalysis CDROM series can be purchased from NCAR. To find out about which years are available, and how to order the CDROMs from the Web page, Click Here.

The data in our archive are generally global gridded data. Contact the National Center for Environmental Information, they make available historical daily weather summaries for many stations in the United States and throughout the world. Click Here . In addition, NOAA maintains a list of NOAA climate service resources and providers including state climatologists, RISAs, and much more.

Unidata's netCDF package runs on PCs. Unidata's main NetCDF web page is here. The FTP version of the same information is here.
Also, the GrADS analysis and plotting package reads netCDF and works on PCs. However, it requires an X11 server on the PC. For information, see: Download GrADS software page at the GrADS homepage at COLA.

When your machine connects to our machine via ftp we choose to initiate a process called a reverse name look-up. That is to say we ask domain name service to translate your IP address back into a fully qualified domain name. This is a process that many sites are beginning to use as an added security feature. In this way we can verify that you are who you say you are. Now of course, we know that you're not trying to do anything sneaky, but this is something that we require of everyone that connects to us.

At your site, your computer managers maintain two lists of domain names. One is the forward name and the other is the reverse. Often, only the forward name is kept up-to-date. That's the one that is used when you say you want to connect to your machine and give its name. The forward name translates back to the IP address. But, there is also a table that keeps track of the reverse name, the one that answers the question, what name belongs to this IP address.

Hopefully your system manager will understand from this message what's being asked and can correct the problem with a couple minutes of work. Another solution might be to try your ftp from a different machine.

Over land and sea ice, the skin temperature is a prognostic variable. Over open water, the skin temperature is fixed at its initial value (from the NOAA OI SST data). The NOAA OI SST analyses were done weekly and the reconstructed SST done monthly. The analyses were linearly interpolated to daily values which were used for all four analyses (i.e. 0, 6, 12 and 18Z have the same SST values).

The files that contain skin temperature 4 times daily, daily, and monthly are of the form:


List of Gridded Air Temperatures from NCEP/NCAR Reanalysis at PSL Types of Temperature files

pressure/ Temperature (K) at 17 pressure levels. Class A. (Page 463 Column 1)
surface/ Temperature at the lowest sigma level (K). Class B. (Page 463 Column 1)
surface_gauss/ Temperature at 2 meters (K). Class B. (Page 464 Column 1)
surface_gauss/ Temperature at surface (skin temperature) K. Class B. (Page 464 Column 1)
tropopause/ Temperature at the tropopause (K). Class A. (Page 463 Column 1)

Class A indicates that the analysis variable is strongly influenced by observed data and, hence, it is the most reliable class.

Class B indicates that, although there are observational data that directly affect the value of the variable, the model also has a very strong influence on the analysis value.

See our how to subset a file webpage.

The tropopause in the Reanalysis is computed from temperature analysis on model sigma level fields. This is to avoid unnecessary interpolation from sigma to pressure. The definition of tropopause in NCEP's post-processor is as follows:

The tropopause is identified by the lowest level above 450 mb where the temperature lapse rate -dt/dz becomes less than 2 k/km. the tropopause is not allowed higher than 85 mb. Interpolations of variables to tropopause are done linearly in log of pressure.

No one has carefully looked at the product so that you may have to do some verification against Radiosonde observation before using it. It may be a little noisy, therefore, some spatial filtering may be necessary.

Some data in our netCDF files are packed. That is to say they have been transformed by a scale factor and an add offset to reduce the storage needed to two bytes per value. When you extract the short integers, you must unpack the data to recover the correct floating point data values. Data files that contain packed data will have a non-zero add offset and/or a scale factor not equal to 1.

The transformation is: float_value = (short_value * scale_factor) + add_offset

In some of the data sets archived at PSL, notably the NCEP-NCAR Reanalysis 1 data set, a Z axis called "sigma levels" is used. This is used in some models as an alternative to pressure levels. For example, on sigma level 0.995, the pressure in a given grid cell at a specific time step is 0.995 times the surface pressure in that grid cell at that time. Thus, one needs the surface pressure in order to obtain the pressure at the sigma level, and it varies as a function of space and time.

The NCEP-NCAR Reanalysis 1 skin temperature values include values over sea-ice, as the skin temperature is a composite variable, using SST values over open ocean, and a model prognostic otherwise. Thus, even with a land-sea mask, you will see non-SST values in the polar regions. The trick is to plot with smaller range, such as -6 to 6 degrees Centigrade. If one can find a mask for the sea-ice, applying it would be ideal.

We use the meteorologists' convention that positive u winds (zonal) are FROM the west and called westerlies while positive v winds (meridional) are from the south and are called southerlies.

This applies to data sets with winds of higher temporal resolution, such as daily.

Wind speed over a month should be calculated ideally by averaging the wind speed at a higher temporal frequency (e.g., daily). By deriving wind speed from the monthly average U and V winds, a significant part of the wind speed is missed.

You might notice this when making wind vector plots from our various web pages. For some data sets, a wind speed variable is made available that is separately calculated from higher temporal frequency U and V winds. You should use that if available. Note that the vector wind direction will be correct when using the monthly mean U & V winds, although the speed will not.

Specific humidity isn't output from the model directly. For some datasets (such as NCEP/NCAR R1) is is calculated in postprocessing but NCEP did not do this for R2. You can calculate it yourself if you download the relative humidity and temperature and use the pressure. The Clausius–Clapeyron relation allows you to calculate the saturation humidity at a specific T,p and then you use the relative humidity to get the actual humidity. NCL has a routine mixhum_ptrh that does this.

Most climate models use a spherical Earth in which "g", the gravitational constant, is the same for all latitudes. Hence, geopotential height, which is defined as the geopotential divided by g, uses a constant value of g (9.81m/s**2). When g is a constant, meters and geopotential meters are the same. A nice write-up can be found on a NASA webpage discussing geopotential.

See this webpage for a discussion of the sign for NCEP models output.