[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