The Thermal InfraRed Sensor (TIRS) is a new instrument carried onboard the Landsat 8 satellite that is dedicated to capturing temperature-specific information.  Using radiation information from the two electromagnetic spectral bands covered by this sensor, it is possible to estimate the temperature at the Earth’s surface (albeit at a 100m resolution, compared to the 30m resolution of the other instrument, the Operational Land Imager).

I used data from the TIRS to estimate the surface temperature in the city-state of Delhi, India as of the 29th of May, 2013.  The relevant tarball file containing the data was downloaded using the United States’ Geological Survey’s (USGS) EarthExplorer tool; the area of interest was encompassed by [scene identifier: path 146 row 040] in the WRS-2 scheme. I think I’ll leave the specific explanations describing WRS-2, path/row values and the other miscellaneous small data-management operations for a later post. For now, I’ll let it be understood that these are important things to know when in the process of actually obtaining this data. When the tarball is unpacked fully, the bands from the TIRS instrument are bands 10 and 11;  the relevant .tif files are [“identifier”_B10.tif] and [“identifier”_B11.tif], and these were clipped to the administrative boundary of Delhi. There’s also a text file containing metadata: [“identifier”_MTL.txt] is essential for the math we’re going to do on these two bands.


Delhi as seen by Landsat 8 Band 10 (TIRS)
Delhi as seen by Landsat 8 Band 10 (TIRS)

Each pixel of processed Level 1 (L1) Landsat 8 ETM+ data is stored as a Digital Number (DN) with a value between 0 and 2^15** . This means that when you visualise the two TIRS bands in your GIS/image-manipulation program of choice, you’re going to see a grey-scale image, where dark is cool and white is hot. The bands differ very slightly from each other; this is because each registers a different band of radiation, which is useful for correcting for atmospheric distortions.

Detail of Delhi as seen by Landsat 8 Band 11 (TIRS)
Detail of Delhi as seen by Landsat 8 Band 11 (TIRS)
Detail of Delhi as seen by Landsat 8 Band 10 (TIRS)
Detail of Delhi as seen by Landsat 8 Band 10 (TIRS)


To obtain actual surface temperature information, we need to first a) convert these DNs to top-of-the-atmosphere (ToA) radiance values, and then secondly b) convert the ToA radiance values to ToA brightness temperature in Kelvin.  The interesting thing is that the satellite stores information as radiance values; it’s converted to DNs when processed from L0 (raw data) to L1. We’re essentially reconverting this information to its original format.




a)             Digital Numbers to ToA radiance values

Lλ = (ML * Qcal) + AL – - equation I


Lλ        =          TOA spectral radiance

ML       =          Band-specific multiplicative rescaling factor

AL        =          Band-specific additive rescaling factor

Qcal        =        Quantized and calibrated standard product pixel values (DN)

Human-readable format:

Spectral Radiance = Band-specific multiplicative rescaling factor[1] into Digital Number plus Band-specific additive rescaling factor from the metadata1.

In practise, this is:

[ Spec_rad_B“X”.tif ] = RADIANCE_MULT_BAND_”X”  * [“identifier”_B”X”.tif] + RADIANCE_ADD_BAND_”X”

where “X” is the specific band number, the RADIANCE values are obtained from the metadata file and Spec_rad_B”X”.tif is the output spectral radiance file name (user-determined).


b)            ToA radiance values to ToA brightness-temperature in Kelvin

T = K2 / (ln (K1/ Lλ +1))[2]   – equation II


T          =          ToA brightness temperature (K)
Lλ        =          TOA spectral radiance
K1        =          Band-specific thermal conversion constant
K2        =          Band-specific thermal conversion constant


Human-readable format:

Temperature (Kelvin) = Band-specific thermal conversion constant I by the natural log of (Band-specific thermal conversion constant II by spectral radiance plus 1)

In practise, this is:

[Temp_B”X”.tif] = K2_CONSTANT_BAND_”X” / ln((K1_CONSTANT_BAND_”X” / [Spec_rad_B”X”.tif]) + 1)

where “X” is the specific band number, the CONSTANT values are extracted from the metadata file and the Temp_B”X”.tif file is the output temperature file name (user-determined).




Since the TIRS has two bands, I conducted the above operation on both, and then averaged the results. I know that there are more sophisticated ways of using both bands to accurately estimate surfacte temperature; as the USGS comment to this post has noted, I’ve only derived ToA brightness temperature here. Another step is required to calculate the actual surface temperature. In fact, a fellow Landsat 8 data user, Valerio de Luca, has informed me that there’s an equation of the split-window algorithm quadratic form that can be used for this purpose; thank you! I’ll update this post again once I test that. Finally, the conversion from degrees Kelvin to degrees anything else has been sufficiently well-documented that I’m going to leave it out; I’ve converted this map into degrees Celsius.


An optional step in the middle is to correct for atmospheric distortion and solar irradiance by converting the DNs to ToA planetary reflectance values and then converting these to ToA radiance values. This requires information such as Earth-Sun distance and the solar angle, some of which is in the metadata file. I’ll be experimenting with this later as well.

Please pitch in if you have any suggestions on improving these techniques; I would definitely welcome points on better ways to use data from the TIRS instrument!

*Update 1 (245am IST on the 9th of August) : Firstly, I’d like to thank the USGS Landsat team, who’ve commented on this post; I’m very grateful for their encouragement and have updated the post accordingly. Please read the map title as ToA brightness-temperature in Delhi; another step is required before it accurately depicts the actual surface temperature values.

**Update 2 (2105 GMT on the 2nd of November) – Landsat 8 ETM+ Digital Number range has been corrected to reflect the fact that the ETM+ sensor stores 16-bit data; thanks for the comment Ciprian!



I’ve referred to the documents below while figuring the math and writing this blogpost; they’re very useful.


USGS equations re: Landsat 8 data


Converting Digital Numbers to Kelvin


Information re: ToA reflectance


GRASS methodology


More information on the inverted Planck function


Markham et al. (2005): Processing data from the EO-1 ALI instrument


Converting from spectral radiance to planetary reflectance

[1] From the Markham et. al. (2005) paper on processing data from the EO-1 ALI instrument, I’m led to understand that the multiplicative and additive scaling factors result in ‘better preservaton of the ALI’s precision and dynamic range in going from raw to calibrated data’; this probably holds true for the L8 instruments as well but do correct me if I’m wrong.

[2] The physics-inclined will realise that this is the inverted form of the Planck function.

33 thoughts on “Using data from the Landsat 8 TIRS instrument to estimate surface* temperature

  1. Hi ,im interestdd in doing the same for Jordan , would you please send me more details about the procudure and step-by step to do it ? Great work !

  2. Greetings, Shashank!

    While an excellent tutorial, please be aware that you are actually deriving Top of Atmosphere brightness temperature, which is not the same as surface temperature. You would need to remove the affects of the atmosphere in the thermal band to get to surface temperature.

    And, just so you know, we are still in the validation process for TIRS, so please watch for notification of a TIRS calibration update at

    Thank you for your contributions to the community!!

  3. hi,Shashank Srinivasan.i’am a postgraduate student majoring in remote sensing .these days i am also want to use landsat 8 TRIS data to retrieval land surface temperature ,but i have some problems during the procedure that convert the satellite brightness temperature to land real temperature .beacuse using the split window algorithm need two essential parameters,transmittance and emissivity .how could you drive this two parameters?
    I look forward to hearing more from you.

    • Hi, I think these parameters are included in the metadata file but I haven’t gotten around to doing it myself yet; Valerio de Luca (see previous comments) may know more so get in touch with him.


  4. hi i am a postgraduate student at university of pretoria, SA working on on retrieval of land surface temperature from landsat 7 ETM+ and landsat 8TRIS using IDL and ENVI 5.0 & Envi classic and Erdas Imagine 9.3 and i will like you to please email me the step by step method for the two images.please its urgent

  5. Hi, I am an interested consultant with some experience in ETM+ data processing including atmospheric correction. So I was hopeful to use the two TIRS with simultaneous measurement to estimate the epsilon without a need to take it from any other source. But I have read now that band 11 would not be provided permanently with band 10 measurements. Which experience do you have?
    The other point is the resampling from 100 m scale to 30 m scale of the TIRS data. Do you know which algorithm is used here?
    I kindly ask you for suggestions.

  6. Hi, I am an interested in doing that in (ksa) . how convert (dn) temperature in degree, using Landsat 8. gis & rs

  7. Hi ,im interestdd in doing the same for India, would you please send me more details about the procudure and step-by step to do it ? Great work !

  8. Hi, I use envi 4.7 and try to open the landsat 8 metadata file but fail, I just try to use band math to calculate to TOA radiance and it’s fail too because it doesn’t read the DN from metadata. Can you help me? How can I process this if using envi 4.7?


  9. well done! I have to say you did a great work.
    these days i am also want to use landsat 8 TRIS data to retrieval land surface and sea surface temperature for East China by using Arcgis 9.3, IDL and ENVI 5.0
    would you be kind to send me step by step procedure of above criteria?
    thank you very much.
    my email address is

  10. Hallo..
    I’m interested for your article.
    can You help me..?
    I am student, and now very need step by step about methode to create temeprature surface from Landsat8. i m using ARCgis 9.3
    can you please send me step by step procedure of above criteria.?
    i am very thankfull.
    my email address is:

  11. Hello,

    I won’t be able to send out individual emails, but I will write a post addressing the various comments above; thank you all for your interest!


  12. hi great work i am trying to compare between surface temperature between landsate 8 and ASTER is it possible ? also could you please send me the procedures i am using ENVI 5 to have surface temp. in both ASTER and Landsat 8 and 7

    my email is :

  13. What does the E stands for in the metadata file in the value of multiplicative rescaling value. ‘RADIANCE_MULT_BAND_10 = 3.3420E-04′. I could not figure it out and getting absurd values in for top of atmospheric temperature while taking it as exponential e to the power minus four. Plz suggest.

  14. Hi, I am interested in calculating surface temperature from thermal band (B10 and B11) of Landsat 8, in ENVI4.7. Can you please send me step by step procedure for the above.
    I will be thankful for this.

  15. Hi
    I found your tutorial very useful. I am interested in applying band 9 to remove clouds from the rest of bands. Can you use similar apprach.

  16. hi Shashank,

    I followed this method for Bangalore and neighborhood, and found that the final temperature map that I get has unique values (I was expecting that each pixel would have a different value) and not a range of values (as seen in your map above). Did you come across this issue as well? When I examined the raw thermal bands, it showed unique values as well, that do not vary across contiguous pixels. Any info on this will be appreciated. Thanks.

  17. hi, Shashank Srinivasan!
    I am also interested in doing same for Vietnam.
    am using Envi 5.1 and ARCgis 10.1
    Could you please send me step by step procedure of above criteria?
    I am very thankful to you.
    My email address is:


  18. Hello!
    I am an undergraduate student in Environment and GIS & Remote sensing
    I am currently working on a project that requires Landsat 8 images to be converted to thermal images and compare & analyze. I think the method used in this article will be very helpful…so please can someone send me the step by step details on this please?
    I have access to ArcMap 10.2.2 and ENVI


Leave a reply


<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>