[Grass-de] Rasteroperation

Tom Gottfried tom.gottfried at wzw.tum.de
Do Okt 1 15:30:30 CEST 2009


Hallo Christoph,

habe sowas auch noch nicht gemacht, aber das Beispiel in der Hilfe zu  
r.sum und der Parameter maskcats zu r.mask scheinen mir hilfreich.
Wo das Problem in deinem bash-Code liegt ist sicher einfacher  
herauszufinden, wenn es dazu eine Fehlermeldung gibt oder aber das  
unerwartete Ergebnis oder was immer dazu führt, dass du sagst, es  
schlägt fehl. Einen Verdacht hab ich aber schon: `r.category map=A`  
ergibt mein ich eine Zeile pro Kategorie. Die Variable cat sollte  
also nach cat=`r.category map=A` lediglich die Zeichen vor dem ersten  
Leerzeichen in der ersten Zeile der Ausgabe von `r.category map=A'  
enthalten (Kannst Du mit `echo $cat; r.category map=A' überprüfen).  
Falls dem so ist kannst du versuchen mit sed nur die Zeichen, die Du  
brauchst, in eine Zeile zu packen.

Gruß,
Tom

Am 01.10.2009 um 14:38 schrieb Christoph Heibl:

> 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
>
>
>
> _______________________________________________
> Grass-de-liste mailing list
> Grass-de-liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/grass-de-liste