next up previous contents index
Next: Speichern und Abfragen von Up: Rasterdatenverarbeitung Previous: Kartenalgebra mit r.mapcalc   Contents   Index


Zuweisen von Attributen bei Rasterkarten

Eine häufiger benötigte Zuweisung von Attributen ist die Zuweisung der Flächenwerte als Rasterzellenwert. Hier wird mittels r.stats eine Zuweisungsdatei aus der Rasterkarten-Flächenstatistik (für jede Legendeneinheit, Option: -a) erstellt und durch "`UNIX-Piping"' an das Modul r.reclass zur Erstellung einer neuen Karte übergeben (GRASS 4.x):

$ r.stats -a fs== in=karte | r.reclass in=karte out=neuekarte

In GRASS 5.0.x müssen, da das Ergebnis von r.stats im Fließkommaformat angezeigt wird, aber r.reclass nur mit Integerwerten reklassifizieren kann, die Werte über awk konvertiert werden (mit anderem Feldtrennzeichen, in einer Zeile einzugeben):

$ r.stats -an in=karte | awk '{printf "%d=%d\n", $1, $2}' | 
   r.reclass in=karte out=neuekarte
Sollte die Meldung erscheinen "`WARNING: can't read range file for [karte]"', ist die Kartenstatistik neu zu berechnen mit $ r.support ("`Edit header"': n, "`Update stats"': y, weitere Fragen: "`return"').

Die von r.stats erstellte und beim "`UNIX-Piping"' and r.reclass übergebene Zuweisungstabelle für die neue Karte kann beispielsweise folgendermaßen aussehen (wenn mit -n als Option angegeben wurde gilt der Stern $\ast$ für alle NULL ("`no data"') Flächen):

1=81182.908163
2=1406.802721
3=7.993197
4=55037.159864
5=670621.258503
6=19.982993
*=660473.894557
Die Originalfarben können Sie mit $ r.colors (Option: rast, vgl. Abschnitt 6.7) kopieren.

Alternativ ist denkbar, dass die Gesamtflächen in Quadratmeter zusätzlich auch als erklärendes Textattribut zugewiesen werden sollen (um bei Abfragen mit d.what.rast etc. klare Aussagen zu bekommen). Bitte beachten Sie die Leerzeichen (Befehl in einer Zeile eingeben):

$ r.stats -a karte | awk '{printf "%d=%d Flaeche: %dm^2\n",$1, $1, $1 }' |  
  r.reclass in=karte out=neuekarte
Das "`awk"'-Programm übernimmt hier die Erzeugung der Klassifizierungsregeln:
1=1 Fläche: 81182.908163m^2
2=2 Fläche: 1406.802721m^2
3=3 Fläche: 7.993197m^2
4=4 Fläche: 55037.159864m^2
5=5 Fläche: 670621.258503m^2
6=6 Fläche: 19.982993m^2
*=* Fläche: 660473.894557m^2
Der Nachteil dieser Zuweisung ist allerdings, dass immer die Gesamtfläche einer Legendeneinheit zugewiesen wird. Sollen objektweise die Flächen einzeln berechnet werden, können Sie mit

$ r.clump

zunächst eine neue Karte erzeugen, in der jede zusammenhängende Fläche mit einer laufenden Nummer versehen wird. Anschließend benutzen Sie obigen Befehl (mit oder ohne "`awk"') unter Verwendung dieser neu erstellten Karte, um die Flächengrößen den Einzelflächen als Attribut zuzuweisen.


next up previous contents index
Next: Speichern und Abfragen von Up: Rasterdatenverarbeitung Previous: Kartenalgebra mit r.mapcalc   Contents   Index
Markus Neteler 2005-04-14