K jednoduchým, ale i komplikovaným výpočtům mapové algebry slouží modul r.mapcalc
Veškerá dokumentace k modulu je dostupná z manuálových stránek:
GRASS> g.manual r.mapcalc
Zobrazte si mapu spot.image a vyhlaďte extrénmní hodnoty:
GRASS> r.mapcalc "spot_lowpass=
(spot.image[-1,-1]+spot.image[-1,0]+spot.image[1,1]+
spot.image[0,-1] +spot.image[0,0] +spot.image[0,1]+
spot.image[1,-1] +spot.image[1,0] +spot.image[1,1]
)/9"
Před zobrazením mapy spot_lowpass je potřeba nastavit barvy, aby odpovídaly mapě spot.image
GRASS> r.colors map=spot_lowpass rast=spot.image
Zobrazit lesy v nadm. výšce větší, než 1450 m:
GRASS> r.mapcalc "horsky_les=if(
(elevation.dem>=1200 && elevation.dem<=1450) &&
(vegcover==3 || vegcover==4 || vegcover==5),1,null())"
GRASS> r.mapcalc "spot_sincos=if(sin(x()/10) + cos(y()/10) < 0, spot.image, null())"
GRASS> d.rast -o spot_sincos
Ještě správné nastavení barev a překreslení:
GRASS> r.colors map=spot_sincos rast=spot.image
GRASS> d.redraw
r.mapcalc projde všechny buňky v rastrové mapě a provede s nimi požadovanou operaci
r.mapcalc neumí smyčky (např. for (i =-1, i<=1, i++){...), ani postupně definované podmínky. Je potřeba používat podmínky vnořené:
if(map1 ==3, 1,
if(map2 == 2, 2,
if(map3 == 3, 1,null() ) ) )"
Citlivý na zlomy řádku, mezery, atd.
Od určitého bodu je výhodné implementovat danou operaci v jazyce C přímo jako samostaný modul.
Grafické rozhraní k modulu r.mapcalc. Lze s ním pracovat jen omezeně
Několik rastrových map lze spojit modulem r.mapcalc, při definování mnoha různých podmínek
Potřebujeme-li však pouze spojit více rastrových map, použijeme raději r.patch:
GRASS> r.patch in=roads,railroads out=bariery_odtoku