Processing historical NOAA AVHRR data with precise geometric correction

We published a new article in MDPI Remote Sensing journal on new method to accurately process time series of AVHRR Local Area Coverage (LAC) data. You can read the entire paper here:

We developed a new workflow which can read all the AVHRR LAC level 1B  data over all the NOAA satellites, calibrate them, applied clock drift corrections, geometrically correct them using automated feature matching technique called SIFT and finally applied split window technique to the thermal bands to derive lake surface water temperature as a case study. We found that the SIFT based geometric correction followed by gcp filter using m.gcp.filter addon in GRASS GIS 7 is very efficient in performing image to image corrections on thousands of images.

See the figure 1 to see the orbital drifts of earlier NOAA images, which should be taken into consider while developing long term time series from AVHRR data.

orbital drift

Below given is an example NIR band from AVHRR LAC data acquired by the satellite NOAA9 on 14th August 1985:


We can clearly see the geometric discrepancies along the borders on the image before the correction.

Below figure shows the entire workflow implemented in this project:


The x-axis on top shows each step in the workflow and on x-axis, the open source packages used in achieving each step is listed. One of the main achievement of this paper is the development of two plugins for the Pytroll python library which can read POD – and KLM – NOAA AVHRR LAC data in level 1B format downloaded from CLASS archive. The scripts developed to process these data are included as appendices in the new paper.

See the animation below of some processed AVHRR LAC data, Cloudy images are intentional to show the robustness of new method.


In the next posts I will explain how to process a AVHRR LAC data using pytroll and GRASS GIS.


Leave a Reply

Your email address will not be published. Required fields are marked *