L1B -- NOAA Polar Orbiter Level 1b Data Set (AVHRR)

Driver short name


Driver built-in by default

This driver is built-in by default

GDAL supports NOAA Polar Orbiter Level 1b Data Set format for reading. Now it can read NOAA-9(F) -- NOAA-17(M) datasets. NOTE: only AVHRR instrument supported now, if you want read data from other instruments, write to me (Andrey Kiselev, dron@ak4719.spb.edu). AVHRR LAC/HRPT (1 km resolution) and GAC (4 km resolution) should be processed correctly.

Driver capabilities

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)


Note that GDAL simple affine georeference model is completely unsuitable for the NOAA data. So you should not rely on it. It is recommended to use the thin plate spline warper (tps). Automatic image rectification can be done with ground control points (GCPs) from the input file.

NOAA stores 51 GCPs per scanline both in the LAC and GAC datasets. In fact you may get less than 51 GCPs, especially at end of scanlines. Another approach to rectification is manual selection of the GCPs using external source of georeference information.

A high density of GCPs will be reported, unless the L1B_HIGH_GCP_DENSITY configuration option is set to NO.

Precision of the GCPs determination depends from the satellite type. In the NOAA-9 -- NOAA-14 datasets geographic coordinates of the GCPs stored in integer values as a 128th of a degree. So we can't determine positions more precise than 1/128=0.0078125 of degree (~28"). In NOAA-15 -- NOAA-17 datasets we have much more precise positions, they are stored as 10000th of degree.

The GCPs will also be reported as a geolocation array, with Lagrangian interpolation of the 51 GCPs per scanline to the number of pixels per scanline width.

Image will be always returned with most northern scanline located at the top of image. If you want determine actual direction of the satellite moving you should look at LOCATION metadata record.


In case of NOAA-10 in channel 5 you will get repeated channel 4 data.
AVHRR/3 instrument (NOAA-15 -- NOAA-17) is a six channel radiometer, but only five channels are transmitted to the ground at any given time. Channels 3A and 3B cannot operate simultaneously. Look at channel description field reported by gdalinfo to determine what kind of channel contained in processed file.


Several parameters, obtained from the dataset stored as metadata records.

Metadata records:

  • SATELLITE: Satellite name

  • DATA_TYPE: Type of the data, stored in the Level 1b dataset (AVHRR HRPT/LAC/GAC).

  • REVOLUTION: Orbit number. Note that it can be 1 to 2 off the correct orbit number (according to documentation).

  • SOURCE: Receiving station name.

  • PROCESSING_CENTER: Name of data processing center.

  • START: Time of first scanline acquisition (year, day of year, millisecond of day).

  • STOP: Time of last scanline acquisition (year, day of year, millisecond of day).

  • LOCATION: AVHRR Earth location indication. Will be Ascending when satellite moves from low latitudes to high latitudes and Descending in other case.

Most metadata records can be written to a .CSV file when the L1B_FETCH_METADATA configuration file is set to YES. By default, the filename will be called "[l1b_dataset_name]_metadata.csv", and located in the same directory as the L1B dataset. By defining the L1B_METADATA_DIRECTORY configuration option, it is possible to create that file in another directory. The documentation to interpret those metadata is PODUG 3.1 for NOAA <=14 and KLM for NOAA >=15.


NOAA <=14 datasets advertise a L1B_SOLAR_ZENITH_ANGLES:"l1b_dataset_name" subdataset that contains a maximum of 51 solar zenith angles for each scanline ( beginning at sample 5 with a step of 8 samples for GAC data, beginning at sample 25 with a step of 40 samples for HRPT/LAC/FRAC data).

NOAA >=15 datasets advertise a L1B_ANGLES:"l1b_dataset_name" subdataset that contains 3 bands (solar zenith angles, satellite zenith angles and relative azimuth angles) with 51 values for each scanline ( beginning at sample 5 with a step of 8 samples for GAC data, beginning at sample 25 with a step of 40 samples for HRPT/LAC/FRAC data).

NOAA >=15 datasets advertise a L1B_CLOUDS:"l1b_dataset_name" subdataset that contains a band of same dimensions as bands of the main L1B dataset. The values of each pixel are 0 = unknown; 1 = clear; 2 = cloudy; 3 = partly cloudy.

Nodata mask

NOAA >=15 datasets that report in their header to have missing scan lines will expose a per-dataset mask band (following RFC 15: Band Masks) to indicate such scan lines.

See Also

  • Implemented as l1bdataset.cpp.

  • NOAA Polar Orbiter Level 1b Data Set documented in the ``POD User's Guide'' (TIROS-N -- NOAA-14 satellites) and in the ``NOAA KLM User's Guide'' (NOAA-15 -- NOAA-16 satellites). You can find this manuals at NOAA Technical Documentation Introduction Page

  • There are a great variety of L1B datasets, sometimes with variations in header locations that are not documented in the official NOAA documentation. In case a dataset is not recognized by the GDAL L1B driver, the pytroll package might be able to recognize it.

  • Excellent and complete review contained in the printed book ``The Advanced Very High Resolution Radiometer (AVHRR)'' by Arthur P. Cracknell, Taylor and Francis Ltd., 1997, ISBN 0-7484-0209-8.

  • NOAA data can be downloaded from the Comprehensive Large Array-data Stewardship System (CLASS) (former SAA). Actually it is only source of Level 1b datasets for me, so my implementation tested with that files only.

  • NOAA spacecrafts status page