# How can I find water surface temperature from landsat-9 bands?

19 views (last 30 days)
Commented: Umar on 2 Jul 2024
I would like to find water surface temperature by using Lansat-9 bands.
% this one hasn't work!
% (Extract ML, AL, K1, and K2 from the metadata file)
% Calculate Top of Atmospheric (TOA) spectral radiance
ML=3.3420E-04;
AL=0.1;
TOA = ML .* B10 + AL;
% Convert radiance to brightness temperature (in Kelvin)
K2=1321.0789;
K1=774.8853;
T_B = K2 ./ (log(K1 ./ (TOA + 1)));
% Adjust for water surface emissivity (assume ~0.98)
emissivity = 0.98;
% Calculate Land Surface Temperature (LST)
rho = 1.4388e-2; % Stefan-Boltzmann constant
LST = T_B ./ (1 + (T_B ./ rho) .* log(emissivity));
Umar on 30 Jun 2024
Your aim is to calculate the Land Surface Temperature (LST) from a thermal band image. The code reads a thermal band image, extracts metadata parameters, calculates the Top of Atmospheric (TOA) spectral radiance, converts radiance to brightness temperature, and finally computes the Land Surface Temperature (LST). Sounds reasonable.
The reason your above code is not working is due to incorrect adjustment for water surface emissivity in the calculation of Land Surface Temperature (LST). The formula used to adjust for emissivity is not applied properly, leading to inaccurate temperature calculations.
Hope this will help resolve your problem.

Umar on 30 Jun 2024
To calculate water surface temperature using Landsat-9 bands in Matlab, you can utilize the following functions:
data = multibandread('your_image.tif', [rows, cols, bands], 'datatype', 'single', 'ieee-le', 'bsq');
band2tir: This function converts Landsat-9 band data to Top of Atmosphere (TOA) brightness temperature.
tir = band2tir(data, 'Landsat8', '10', 'B10');
To analyze water surface temperature using Landsat-9 bands in Matlab, you can follow these steps:
Import Landsat-9 Data: Load the Landsat-9 bands into Matlab using the multibandread function.
Convert Digital Numbers to Radiance: Convert the digital numbers to radiance values using the provided conversion coefficients.
Calculate Brightness Temperature: Utilize the Planck's law equation to calculate brightness temperature from radiance.
Apply Atmospheric Correction: Implement atmospheric correction algorithms to enhance the accuracy of temperature estimation.
Derive Water Surface Temperature: Use specific band combinations and algorithms to derive water surface temperature from Landsat-9 data.
By combining these functions and processing the Landsat-9 bands data accordingly, you can derive the water surface temperature effectively.
Image Analyst on 2 Jul 2024
Actually I think @Riyadh has already figured out how to extract the bands. Look at this filename : 'LC08_L2SP_169037_20200821_20200905_02_T1_ST_B10.tif' That looks Band 10 that has been extracted into a single gray scale TIFF image. So, once that's been done, imread() should work fine.
Umar on 2 Jul 2024
I agree

Image Analyst on 30 Jun 2024
Use multibandread to read bands 10 and 11. I'm not sure of the difference between those two bands (presumably you do), but their website says those are the two thermal bands:

### Categories

Find more on Data Import and Export in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!