An automated workflow for fetching and mosaicing Landsat imagery

A false color image of Albuquerque

One extension I had been planning for my previous project involving terrain meshes was the addition of satellite imagery to add color to the models. Landsat, in addition to enabling important climatology research and other science missions, turned out to be a great source of open data to use for this.

As a step toward integrating this data with my terrain mesh generator, I’ve implemented an automated workflow for fetching, radiometrically correcting, and mosaicing these images.

AWS generously provides free access to its S3-based Landsat mirror, however the Worldwide Reference System Landsat uses to index products makes it a bit less than straightforward to identify the right data to fetch. Therefore, I implemented a parser for the provided scene list that resolves requested geodetic extents to a set of footprints which cover them. The script then fetches all of the data needed to generate the requested output product.

After obtaining the data, a bit of massaging is required to make it useful. The data has to be radiometrically calibrated and then warped to a more flexible map projection.

Finally, I’ve implemented a pansharpening operation which uses Landsat 8’s panchromatic band to improve the spatial resolution of its spectral bands and produce a high-fidelity output product.

The code that handles all of this has been released to Github for all to use.