i.topo.corr(1)
โจ i.topo.corr โ the glow-up your satellite pics deserve โจ
okay bestie, welcome to i.topo.corr(1), the GRASS GIS tool that fixes the whole "one side of the mountain is in shadow and looks like a completely different planet" situation ๐
This is the page for i.topo.corr, and honestly? It ate.
๐ท๏ธ NAME
i.topo.corr โ Computes topographic correction of reflectance. That's it, that's the job. ๐ซถ
๐ KEYWORDS
imagery, terrain, topographic correction
๐ SYNOPSIS
i.topo.corr
i.topo.corr --help
i.topo.corr [-is] [input=name[,name,...]] output=name basemap=name
zenith=float [azimuth=float] [method=string] [--overwrite]
[--help] [--verbose] [--quiet] [--ui]
๐ฉ Flags
-iโ Output sun illumination terrain model. like, it makes the light map instead of the corrected map.-sโ Scale output to input and copy color rules. matchy-matchy behavior โจ--overwriteโ Allow output files to overwrite existing files. (careful, it will absolutely bulldoze what's already there ๐)--helpโ Print usage summary. the classic "help me" button.--verboseโ Verbose module output. it will tell you everything.--quietโ Quiet module output. shhh, no talking ๐คซ--uiโ Force launching GUI dialog. for the visual girlies.
๐ Parameters
input=name[,name,...]โ Name of reflectance raster maps to be corrected topographically. you can pass a whole list, comma-separated, no cap.output=name[required] โ Name (flag-i) or prefix for output raster maps. required, bestie, you can't skip it.basemap=name[required] โ Name of input base raster map (elevation or illumination). also required!zenith=float[required] โ Solar zenith in degrees. required.azimuth=floatโ Solar azimuth in degrees (only if flag-i). so only when you're building the illumination model.method=stringโ Topographic correction method. Options:cosine,minnaert,c-factor,percentDefault:c-factor
๐ DESCRIPTION
i.topo.corr is used to topographically correct reflectance from imagery files, e.g. obtained with i.landsat.toar, using a sun illumination terrain model. This illumination model represents the cosine of the incident angle i, i.e. the angle between the normal to the ground and the sun rays. so it's literally describing how much sun a pixel is catching based on how the ground is tilted. iconic.
Note: If needed, the sun position can be calculated for a given date and time with r.sunmask. Figure showing terrain and solar angles
Using the -i flag and given an elevation basemap (metric), i.topo.corr creates a simple illumination model using the formula:
cos_i = cos(s) * cos(z) + sin(s) * sin(z) * cos(a - o)
where,
iis the incident angle to be calculated,sis the terrain slope angle (fromr.slope.aspect),zis the solar zenith angle (i.e., 90ยฐ - solar horizon angle fromr.sunmask),athe solar azimuth angle (fromr.sunmask),othe terrain aspect angle (fromr.slope.aspect).
For each band file, the corrected reflectance (ref_c) is calculate from the original reflectance (ref_o) using one of the four offered methods (one lambertian and two non-lambertian). yes the math said "four" and "two" in the same sentence, we don't question the ancestors, we just run the module ๐
๐งฎ Method: cosine
ref_c = ref_o * cos_z / cos_i
๐งฎ Method: minnaert
ref_c = ref_o * (cos_z / cos_i) ^k
where, k is obtained by linear regression of ln(ref_o) = ln(ref_c) - k ln(cos_i/cos_z)
๐งฎ Method: c-factor
ref_c = ref_o * (cos_z + c)/ (cos_i + c)
where, c is a/m from ref_o = a + m * cos_i
๐งฎ Method: percent
We can use cos_i to estimate the percent of solar incidence on the surface, then the transformation (cos_i + 1)/2 varied from 0 (surface in the side in opposition to the sun: infinite correction) to 1 (direct exhibition to the sun: no correction) and the corrected reflectance can be calculated as
ref_c = ref_o * 2 / (cos_i + 1)
๐ NOTES
- The illumination model (
cos_i) with flag-iuses the actual region as limits and the resolution of the elevation map. - The topographic correction use the full reflectance file (null remain null) and its resolution.
- The elevation map to calculate the illumination model should be metric.
๐จ note note note: number 3 is not a suggestion, bestie. if your elevation map isn't metric, the vibes are off and so is your math.
๐งช EXAMPLES
First, make a illumination model from the elevation map (here, SRTM). Then make perform the topographic correction of e.g. the bands toar.5, toar.4 and toar.3 with output as tcor.toar.5, tcor.toar.4, and tcor.toar.3 using c-factor (= c-correction) method:
# first pass: create illumination model
i.topo.corr -i base=SRTM zenith=33.3631 azimuth=59.8897 output=SRTM.illumination
# second pass: apply illumination model
i.topo.corr base=SRTM.illumination input=toar.5,toar.4,toar.3 output=tcor \
zenith=33.3631 method=c-factor
two passes, one glow-up. periodt. ๐
๐ REFERENCES
- Law K.H. and Nichol J, 2004. Topographic Correction For Differential Illumination Effects On Ikonos Satellite Imagery. International Archives of Photogrammetry Remote Sensing and Spatial Information, pp. 641-646.
- Meyer, P. and Itten, K.I. and Kellenberger, KJ and Sandmeier, S. and Sandmeier, R., 1993. Radiometric corrections of topographically induced effects on Landsat TM data in alpine terrain. Photogrammetric Engineering and Remote Sensing 48(17).
- Riaรฑo, D. and Chuvieco, E. and Salas, J. and Aguado, I., 2003. Assessment of Different Topographic Corrections in Landsat-TM Data for Mapping Vegetation Types. IEEE Transactions On Geoscience And Remote Sensing, Vol. 41, No. 5
- Twele A. and Erasmi S, 2005. Evaluating topographic correction algorithms for improved land cover discrimination in mountainous areas of Central Sulawesi. Gรถttinger Geographische Abhandlungen, vol. 113.
๐ SEE ALSO
i.landsat.toar, r.mapcalc, r.sun r.sunmask
๐ AUTHOR
E. Jorge Tizado (ej.tizado unileon es) Dept. Biodiversity and Environmental Management, University of Leรณn, Spain
Figure derived from Neteler & Mitasova, 2008.
๐พ SOURCE CODE
Available at: i.topo.corr source code (history)
Accessed: Saturday Jan 17 05:41:44 2026
Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index
and that's the whole page, bestie ๐ฆ this came to you from the GRASS GIS 8.4.2 Reference Manual, ยฉ 2003-2025 GRASS Development Team, running on GRASS 8.4.2 โ go correct some reflectance, you've got this ๐โจ๐
๐ฆ where this page comes from
- fedora 44: grass 8.4.2-4.fc44 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms