Georeference

Note, that GDAL simple affine georeference model 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.

Before GDAL 1.10.2, a maximum of 11 x 20 GCPs were reported. This might be
unsuitable for correct warping. Starting with GDAL 1.10.2, a much higher density
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.

Starting with GDAL 1.11, 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.

Data

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.

Metadata

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.

Starting with GDAL 1.11, 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 8.3.1.3.3.1 for NOAA >=15.

Subdatasets

(Starting with GDAL 1.11)

NOAA <=14 datasets advertize 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 advertize 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

(Starting with GDAL 2.0)

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.

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.