GRASS logo

Note: A new GRASS GIS stable version has been released: GRASS GIS 7. Go directly to the new manual page here


i.landsat.toar - Calculates top-of-atmosphere radiance or reflectance and temperature for Landsat MSS/TM/ETM+/OLI


imagery, Landsat, radiance, reflectance, brightness temperature, atmospheric correction


i.landsat.toar help
i.landsat.toar [-rnp] input_prefix=string output_prefix=string [metfile=name] [sensor=string] [method=string] [date=yyyy-mm-dd] [sun_elevation=float] [product_date=yyyy-mm-dd] [gain=string] [percent=float] [pixel=integer] [rayleigh=float] [--verbose] [--quiet]


Output at-sensor radiance instead of reflectance for all bands
Input raster maps use as extension the number of the band instead the code
Print output metadata info
Verbose module output
Quiet module output


Base name of input raster bands
Example: 'B.' for B.1, B.2, ...
Prefix for output raster maps
Example: 'B.toar.' generates B.toar.1, B.toar.2, ...
Name of Landsat metadata file (.met or MTL.txt)
Spacecraft sensor
Required only if 'metfile' not given (recommended for sanity)
Options: mss1,mss2,mss3,mss4,mss5,tm4,tm5,tm7,oli8
mss1: Landsat_1 MSS
mss2: Landsat_2 MSS
mss3: Landsat_3 MSS
mss4: Landsat_4 MSS
mss5: Landsat_5 MSS
tm4: Landsat_4 TM
tm5: Landsat_5 TM
tm7: Landsat_7 ETM+
oli8: Landsat_8 OLI/TIRS
Atmospheric correction method
Atmospheric correction method
Options: uncorrected,dos1,dos2,dos2b,dos3,dos4
Default: uncorrected
Image acquisition date (yyyy-mm-dd)
Required only if 'metfile' not given
Sun elevation in degrees
Required only if 'metfile' not given
Image creation date (yyyy-mm-dd)
Required only if 'metfile' not given
Gain (H/L) of all Landsat ETM+ bands (1-5,61,62,7,8)
Required only if 'metfile' not given
Percent of solar radiance in path radiance
Required only if 'method' is any DOS
Default: 0.01
Minimum pixels to consider digital number as dark object
Required only if 'method' is any DOS
Default: 1000
Rayleigh atmosphere (diffuse sky irradiance)
Required only if 'method' is DOS3
Default: 0.0


i.landsat.toar is used to transform the calibrated digital number of Landsat imagery products to top-of-atmosphere radiance or top-of-atmosphere reflectance and temperature (band 6 of the sensors TM and ETM+). Optionally, it can be used to calculate the at-surface radiance or reflectance with atmospheric correction (DOS method).

Usually, to do so the production date, the acquisition date, and the solar elevation are needed. Moreover, for Landsat-7 ETM+ it is also needed the gain (high or low) of the nine respective bands.

Optionally (recommended), the data can be read from metadata file (.met or MTL.txt) for all Landsat MSS, TM, ETM+ and OLI/TIRS. However, if the solar elevation is given the value of the metadata file is overwritten. This is necessary when the data in the .met file is incorrect or not accurate. Also, if acquisition or production dates are not found in the metadata file then the command line values are used.

Attention: Any null value or smaller than QCALmin in the input raster is set to null in the output raster and it is not included in the equations.

Uncorrected at-sensor values (method=uncorrected, default)

The standard geometric and radiometric corrections result in a calibrated digital number (QCAL = DN) images. To further standardize the impact of illumination geometry, the QCAL images are first converted first to at-sensor radiance and then to at-sensor reflectance. The thermal band is first converted from QCAL to at-sensor radiance, and then to effective at-sensor temperature in Kelvin degrees.

Radiometric calibration converts QCAL to at-sensor radiance, a radiometric quantity measured in W/(m² * sr * µm) using the equations:

where, Lmax and Lmin are the calibration constants, and QCALmax and QCALmin are the highest and the lowest points of the range of rescaled radiance in QCAL.

Then, to calculate at-sensor reflectance the equations are:

where, d is the earth-sun distance in astronomical units, e is the solar elevation angle, and Esun is the mean solar exoatmospheric irradiance in W/(m² * µm).

Simplified at-surface values (method=dos[1-4])

Atmospheric correction and reflectance calibration remove the path radiance, i.e. the stray light from the atmosphere, and the spectral effect of solar illumination. To output these simple at-surface radiance and at-surface reflectance, the equations are (not for thermal bands): where, percent is a value between 0.0 and 1.0 (usually 0.01), Esky is the diffuse sky irradiance, TAUz is the atmospheric transmittance along the path from the sun to the ground surface, and TAUv is the atmospheric transmittance along the path from the ground surface to the sensor. radiance_dark is the at-sensor radiance calculated from the darkest object, i.e. DN with a least 'dark_parameter' (usually 1000) pixels for the entire image. The values are, Attention: Output radiance remain untouched (i.e. no set to 0.0 when it is negative) then they are possible negative values. However, output reflectance is set to 0.0 when is obtained a negative value.


On Landsat-8 metadata file

NASA reports a structure of the L1G Metadata file (LDCM-DFCB-004.pdf) for Landsat Data Continuity Mission (i.e. Landsat-8).

NASA retains in MIN_MAX_RADIANCE group the necessary information to transform Digital Numbers (DN) in radiance values. Then, i.landsat.toar replaces the possible standard values with the metadata values. The results match with the values reported by the metada file in RADIOMETRIC_RESCALING group.

Also, NASA reports the same values of reflectance for all bands in max-min values and in gain-bias values. This is strange that all bands have the same range of reflectance. Also, they wrote in the web page as to calculate reflectance directly from DN, first with RADIOMETRIC_RESCALING values and second divided by sin(sun_elevation).

This is a simple rescaling

The problem arises when we need ESUN values (not provided) to compute sun_radiance and DOS. We assume that REFLECTANCE_MAXIMUM corresponds to the RADIANCE_MAXIMUM, then

where d is the earth-sun distance provided by metadata file or computed inside the program.

The i.landsat.toar reverts back the NASA rescaling to continue using Lmax, Lmin, and Esun values to compute the constant to convert DN to radiance and radiance to reflectance with the "traditional" equations and simple atmospheric corrections. Attention: When MAXIMUM values are not provided, i.landsat.toar tries to calculate Lmax, Lmin, and Esun from RADIOMETRIC_RESCALING (in tests the results were the same).

Calibration constants

In verbose mode (flag --verbose), the program write basic satellite data and the parameters used in the transformations.

Production date is not an exact value but it is necessary to apply correct calibration constants, which were changed in the dates:


Transform digital numbers of Landsat-7 ETM+ in band rasters 203_30.1, 203_30.2 [...] to uncorrected at-sensor reflectance in output files 203_30.1_toar, 203_30.2_toar [...] and at-sensor temperature in output files 293_39.61_toar and 293_39.62_toar:
i.landsat.toar input_prefix=203_30. output_prefix=_toar \
i.landsat.toar input_prefix=L5121060_06020060714. \
  output_prefix=L5121060_06020060714_toar \
i.landsat.toar input_prefix=203_30. output_prefix=_toar \
  sensor=tm7 product_date=2004-06-07 date=2001-06-20 \
  sun_elevation=64.3242970 gain="HHHLHLHHL"
i.landsat.toar input_prefix=LC80160352013134LGN03_B output_prefix=toar \
  metfile=LC80160352013134LGN03_MTL.txt sensor=oli8 date=2013-05-14



i.atcorr, r.mapcalc,

Landsat Data Dictionary by USGS


E. Jorge Tizado (ej.tizado unileon es), Dept. Biodiversity and Environmental Management, University of León, Spain

Last changed: $Date: 2014-11-25 08:54:02 -0800 (Tue, 25 Nov 2014) $

Main index - imagery index - Full index

© 2003-2016 GRASS Development Team