Hexagon Geospatial
MENU

Spatial Modeler Tutorials

Learn more about our products, find answers, get the latest updates, and connect with other Hexagon Geospatial product users, or get support from our professional service team.
Showing results for 
Search instead for 
Do you mean 

Landsat 8 Top of Atmosphere Reflectance Conversion

by Technical Evangelist ‎05-05-2016 08:22 AM - edited ‎08-10-2016 09:32 AM (10,589 Views)

  

Download model

 

Description:

 

This model implements the formulas published by the USGS for converting the quantized and calibrated scaled Digital Numbers (DN) representing multispectral image data acquired by Landsat 8 Operational Land Imager (OLI, bands 1 to 9)  to Top of Atmosphere (ToA) Reflectance. 

 

The conversion formulas require values stored in the metadata for each image (usually an ancillary file with a name such as <image>.met, or <image>_MTL.txt).

 

The published formula for TOA Reflectance is: 

 

R l' = MlQcal + Ar

 

where:

Rl' = TOA planetary reflectance without correction for solar angle.

Ml = Band-specific multiplicative rescaling factor from the metadata (REFLECTANCE_MULT_BAND_x, where x is the band number)

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

Ar = Band-specific additive rescaling factor from the metadata (REFLECTANCE_ADD_BAND_x, where x is the band number)

 

TOA reflectance can be corrected for the sun angle by:

 

Rl = Rl' / cos(solar zenith angle) OR Rl = rl' / sin(solar elevation angle) 

 

where:

Rl = TOA planetary reflectance

Rl' = product of TOA reflectance without correction

Solar Elevation angle = local sun elevation from the metadata (SUN_ELEVATION)  NOTE: SUN_ELEVATION is unique to each Landsat 8 Scene

Solar Zenith angle = 90 - Solar Elevation angle

 

 l8_toa_reflectance-v15-1-5.gmdx
 L8_TOA_Reflectance_2015.PNG
 

 

Input parameters:

 

Landsat 8 MSI: Select the input Landsat 8 image to be converted to reflectance. This could be a multispectral image representing bands 1 to 7, a single band Panchromatic image (band 8), a single band Cirrus image (band 9) or a combination thereof (including individual band files). It should not be the Thermal bands (Bands 10 and 11) or the QA band.

Landsat 8 Reflectance: Name of the output image file containing the ToA Reflectance values. This will be a 32-bit Float data type.

REFLECTANCE_MULT_BAND: Enter a single Reflectance Multiplier correction value to be applied to every input band. The default is 0.00002, but the <image>_MTL.txt metadata file should be reviewed to determine the correct value.

REFLECTANCE_ADD_BAND: Enter a single Reflectance Additive correction value to be applied to every input band. The default is -0.1, but the <image>_MTL.txt metadata file should be reviewed to determine the correct value.

SUN_ELEVATION: Enter a single value for the Sun's elevation (in degrees) above the horizon at the time of image acquisition. This value is unique for every Landsat 8 image and can be determined by finding the SUN_ELEVATION keyword in the input image's <image>_MTL.txt metadata file.

 

 TOA_Dialog.png

   

Assumptions:

 

Most Landsat 8 imagery provided by the USGS download site appears to have already been corrected to ToA Reflectance, but has subsequently had a consistent scale and offset applied to every band to fully utilize an unsigned 16-bit integer data range. Consequently the Reflectance_Mult_Band_n isusually 0.00002 and the Reflectance_Add_Band_n is usually -0.1 for every band in the image. So the current incarnation of the model both defaults to those values, and only has a single input to apply to every band.

 

If a review of the <image>_MTL.txt metadata file indicates that these values actually vary per band, you would need to either:

 

  1. Process each band individually, or
  2. Modify the model to prompt for inputs for all the Multiplier and Additive values, as suggested in the screenshot below (with a similar Table for the Additives), or
  3. Upgrade to ERDAS IMAGINE 2016 and make use of the model which will be posted separately which uses a Python script to parse the metadata file, create a Dictionary of metadata values (including Sun Elevation) and automatically correct all bands based on those values. See the article entitled Using the Python Script operator to ingest sensor metadata

 

 How to modify the model for varying Multipliers and Additives:
 L8_TOA_Reflectance_2015_bands.PNG

 

 

Reference

 

http://landsat.usgs.gov/Landsat8_Using_Product.php

Comments
by Technical Evangelist
on ‎12-21-2018 11:49 AM

Does your data include a background value and you haven't set that to NoData prior to running the model? The fact that the Mode is the Min value as well suggests this. 

 

And yes, it's entirely possible that the corrections that were applied to the data prior to it being delivered to you scale to a reflectance range that's outside 0 - 1. A Mean of 0.262 and a SD of 0.286 seems plausible.

 

Did you check the *_mtl.txt header file to validate the input values?

 

If you data is Landsat 8 you could check out the slightly more automated TOA correction I integrated into this model:

 

https://community.hexagongeospatial.com/t5/Spatial-Modeler-Tutorials/Generating-Burn-Indices-from-Sa...

 

Cheers

by mando
‎12-22-2018 11:10 AM - edited ‎12-22-2018 11:17 AM

hello,

first thanks for your interest, but i dont understand how i can ignore background values before applying the model.

i will attach meta data to be sure about values , and your model applied for erdas 16 but i have only erdas 15

did i can use image with these values ?.

Respects,

mando

Untitled2.jpg

by Technical Evangelist
on ‎01-07-2019 12:46 PM

Hi mando,

 

Easiest way would be to add a Set to NoData operator into the spatial model (after the Raster Input) and use it to set an appropriate value to be considered NoData. 

 

Or you could use the Image Metadata (ImageInfo) utility to set a NoData value on individual datasets (Edit menu > Set / Clear NoData Value...). 

 

Cheers

 

Courses
Contributors