Eric Samson

Land Surface Temperature From Landsat 8

ArcGIS Pro Python script tool that will calculate LST from user's input Landsat 8 bands.


April 17th, 2020 | github

Update 11/15/2022: This tool will only work with Landsat Collection 2 Level-1 data for landsat 8. It is currently not compatible with Level-2 data.

I was working with some Landsat 8 data the other day and thought, "I wonder if I could calculate the land surface temperature using these bands?" I started up the google machine and found many resources offering instructions on how to estimate land surface temperature (LST) from landsat 8 bands. The steps seemed a little long and cumbersome, but I noticed that the entire process could be automated pretty easily, so I decided to create a tool for the process. I’ve outlined the three basic steps that the tool helps automate:

  1. Find and retrieve variables within a Landsat metadata file.
  2. Use bands 4 and 5 to create an NDVI layer.
  3. Make a series of raster calculations using the variables gathered from the metadata file, information from the NDVI layer, and bands 10 and 11.
The top image is a Landsat 8 image of California's central valley. The bottom images in the slider are a couple output rasters from the LST tool. The tool outputs an NDISI raster and an LST raster, and optionally outputs an NDVI or MNDWI raster.

The images above serve as a good example of the value land surface temperature data can deliver to the agricultural industry. The top image shows a region of fields in the central valley of California. By using the tool I created, users can quickly create a land surface temperature raster visualizing fields that might be suffering drought stress or fields that are being over watered.

After doing the process manually a number of times, I started writing the python script as an ArcGIS pro tool:

The tool is capable of calculating the following products:

  1. LST (Land Surface Temperature)
  2. NDVI (Normalized Difference Vegetation Index)
  3. NDISI (Normalized Difference Impervious Surface Index)
  4. MNDWI (Modified Normalized Difference Water Index)

As shown in the screenshot above, the tool will need a path to the folder holding the Landsat 8 bands and metadata. To get this data, you may download a Level-1 landsat 8 bundle from the USGS's EarthExplorer. Optionally, the tool can take a mask geometry. It is best to mask the rasters to the area of interest before the tool is run, or by using the mask option within the tool itself. I have included an empty polygon feature class for quick polygon creation within the folder (see zip of "MaskFeature_Sample.gdb") on the github page. The output LST raster will be in degrees Celsius. The output names will appear as: 'LST_184457GMT_20200403', which stands for 'Land Surface Temperature_Time Image Acquired in GMT_Date Acquired'


Resources: