# Rasters

## Raster algebra

*Raster algebra*(or

*raster map algebra*) is probably the most general way of manipulating rasters which is accessible to the user.

### if statement

Let's determine forested areas which are higher then certain elevation. Set computational region (both extent and resolution) to the landclass raster:g.region rast=landclass96

See what are the land classes (raster categories) in the raster:
r.report map=landclass96 units=p

See also univariate statistics for the elevation raster:
r.univar map=elevation

Use raster algebra to select areas higher than chosen elevation and
with forest land class:
r.mapcalc "forest_high = if(elevation > 120 && landclass96 == 5, 1, null())"

## Advanced raster algebra

`eval`

function

If the output of the computation should be only one map
but the expression is so complex that it is better
to split it to several expressions, the eval function can be used:
r.mapcalc "eval(elev_200 = elevation - 200, elev_5 = 5 * elevation, elev_p = pow(elev_5, 2)); elevation_result = (0.5 * elev_200) + 0.8 * elev_p"

### neighborhood operator `[ , ]`

Apply low pass filter (smoothing) on a Landsat image using *r.mapcalc*:

r.mapcalc "lsat7_2002_10_smooth = (lsat7_2002_10[-1,-1] + lsat7_2002_10[-1,0] + lsat7_2002_10[1,1] + lsat7_2002_10[0,-1] + lsat7_2002_10[0,0] + lsat7_2002_10[0,1] + lsat7_2002_10[1,-1] + lsat7_2002_10[1,0] + lsat7_2002_10[1,1]) / 9"

Set the same color table as the original raster map has:
r.colors map=lsat7_2002_10_smooth raster=lsat7_2002_10

Use Map Swipe to compare original and resulting map.
Map Swipe is available from File menu or using:
g.gui.mapswipe first=lsat7_2002_10 second=lsat7_2002_10_smooth

Note that in this case the same operation which was done using
*r.mapcalc*could be done using

*r.neighbors*module.

## Learn more

- Raster data processing in GRASS GIS (intro in manual)