pylandtemp is a Python library that provides a simple API for computing global land surface temperature and emissivity from NASA's Landsat satellite images. It contains some implementations of Single-Channel and split window techniques. More methodologies under these groups will be added in the future.
Additionally, it also provides multiple methods for computing land surface emissivity. It is targeted towards supporting research and science workflows in many fields including climate science, earth sciences, remote sensing, space tech, geospatial data science, environmental studies, among others.
Even though only Landsat images are currently 'officially' supported, the methods available via this Python tool can be applied to other dataset including ASTER and MODIS.
The pylandtemp Python package is available through PyPI:
pip install pylandtemp
The pylandtemp Python library is divided into multiple methods which provide access to set of algorithms for different computations.
-
Land surface temperature
- Single-Channel: through the
single_window()
method - Split window: through the
split_window()
method
- Single-Channel: through the
-
Land surface emissivity
- Through the
emmissivity()
method.
- Through the
-
Brightness temperature
- Through the
brightness_temperature()
method.
- Through the
-
Normalized Difference Vegetation Index (NDVI)
- Through the
ndvi()
method.
- Through the
To compute land surface temperature using Jiminez-Munoz et al. (2014) split window technique and Ugur Avdan et al. (2014) emissivity computation method, a simple implementation is shown below:
import numpy as np
from pylandtemp import split_window
# lst_method and emissivity_method should point to keys of chosen -
# algorithms for temeprature and emmisivity, respectively
# Keys for available algorithms are presented in the next section
# tempImage10 is a numpy array of band 10 brightness temperature
# tempImage11 is a numpy array of band 10 brightness temperature
# redImage is a numpy array of the red band
# nirImage is a numpy array of the near infra-red (NIR) band
lst_image_split_window = split_window(
tempImage10,
tempImage11,
redImage,
nirImage,
lst_method='jiminez_munoz',
emissivity_method='avdan',
unit='celcius'
)
# The function returns a numpy array which is the land surface temperature image.
Algorithm | key |
---|---|
Jiminez-Munoz et al. (2014) | 'jiminez-munoz' |
Coll C. et al. (1997) | 'coll-caselles' |
Sobrino et al. (1993) | 'sobrino-1993' |
Kerr et al. (1992) | 'kerr' |
McClain et al. (1985) | 'mc-clain' |
Price (1984) | 'price' |
Algorithm | key |
---|---|
Ugur Avdan et al. (2014) | 'mono-window' |
Algorithm | key |
---|---|
Gopinadh Rongali et al. (2018) | 'gopinadh' |
Ugur Avdan et al. (2014) | 'advan' |
Xiaolei Yu et al. (2014) | 'xiaolei' |
The notebooks here are tutorials on how to use pylandtemp package.
All kinds of contributions are welcome --- development of enhancements, bug fixes, documentation, tutorial notebooks, new methods, new data, etc....
A guide to get you started with contributing will soon be made available.
- December 2021: version 0.0.1-alpha.1 pre-release version is out on PyPI. Find it here
- December 2021: Implemented tutorial notebooks based on the different methods. Find them here
- November 2021: Implemented a runner for dynamic dispatch.
The code of this library is available under the Apache 2.0 license.
Mudele, O., (2021). pylandtemp: A Python package for computing land surface
temperature from Landsat satellite imagery. GitHub: https://github.com/pylandtemp/pylandtemp.
If preferred, here is the BibTex:
@Misc{pylandtemp,
author = {Oladimeji Mudele},
title = {pylandtemp: A Python package for computing land surface temperature from Landsat satellite imagery},
howpublished = {GitHub},
year = {2021},
url = {https://github.com/pylandtemp/pylandtemp}
}