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
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.894557Die 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^2Der 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
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.