[Grass-de] Rasteroperation
Christoph Heibl
christoph.heibl at gmx.net
Do Okt 1 14:38:37 CEST 2009
Hallo zusammen,
Ich habe zwei Rasterkarten mit unterschiedlicher Anzahl an Kategorien.
Für alle Kategorien i von 1 bis n in der Rasterkarte A
möchte ich die Werte all der Zellen in der Rasterkarte B aufsummieren,
die in Rasterkarte A jeweils den Wert der iten Kategorie haben.
Ein Beispiel:
A:
0 0 1 0
2 0 2 0
B:
3 4 6 2
5 7 4 4
Das Ergebnis wäre:
0: 3 + 4 + 2 + 7 + 4 = 20
1: 6
2: 5 + 4 = 9
In GRASS habe ich kein Modul gefunden, womit man das direkt machen
kann. Oder gibt es doch eins, bwz. eine Möglichkeit?
Alternativ habe ich versucht ein bash script zusammenzubasteln. In
einem Loop wird soll dort die ite Kategorie an r.mapcalc übergeben
werden, aber das schlägt fehl. Weiß jemand warum?
Hier der Code:
cat=`r.category map=A`
for i in $cat; do
if [ $i -lt 0 ]; then
r.mapcalc val='if(A-$i,0,B,0)'
else
r.mapcalc val='if(A+$i,0,B,0)'
fi
echo "Category "$i":"
r.sum val --q
done
Für Tipps bin ich wie immer sehr dankbar!
Christoph
________________________________________________________
Christoph Heibl
Systematic Botany
Ludwig-Maximilians-Universität München
Menzinger Str. 67
D-80638 München
GERMANY
phone: +49-(0)89-17861-251
e-mail: heibl at lmu.de
http://www.christophheibl.de/ch-home.html
SAVE PAPER - THINK BEFORE YOU PRINT