[Fossgis-talk] Der Sinn von "-d" in GRASS' v.extract ?

Martin Spott Martin.Spott at mgras.net
So Nov 28 13:04:33 CET 2010


Moin Markus, lang' nicht mehr geschrieben  ;-)

Markus Neteler wrote:
> 2010/11/15 Martin Spott <Martin.Spott at mgras.net>:

>> ich haette hier ein GRASS7, ganz frisch von heute morgen auss'm SVN.
>> Das setze ich auf einen Haufen CORINE-Daten an (ja, dieselben, die ich
>> schonmal in einem frueheren Thread erwaehnt habe  :-)
>> Die Areale in meiner GRASS-DB haben alle keine Attribute mehr sondern
>> tragen als Unterscheidungsmerkmal nur noch ihre jeweilige Kategorie.
>> Alle sitzen zusammen in einer einzigen Map, teilweise grenzen Areale
>> gleicher Kategorie direkt aneinander - das bringt der Datensatz
>> offenbar aus historischen Gruenden so mit sich (wohl aus der Zeit, als
>> das noch dutzende einzelne Kacheln waren).
>>
>> Ich hatte vor, den Krempel mit "v.extract -d ... type=area"
>> entsprechend jeder der vorhandenen Kategorien in eine einzelne Map zu
>> extrahieren und diese dann mit "v.out.ogr" in Shapefiles zu
>> exportieren.  Nach meinem Verstaendnis sollte das "-d" im "v.extract"
>> dafuer sorgen, dass besagte Grenzen zwischen Arealen gleicher
>> Kategorie beim Vorgang des Extrahierens sofort aufgeloest werden.
>> Werden sie aber nicht - das kann ich mir mit einem huebschen QGIS
>> anhand der exportierten Shapefiles angucken.
> 
> Sind es wirklich die Kategorien ("cat") oder doch Attribute?
> v.category can da helfen bzw. d.vect mit disp=cat.
> 
> v.extract -d arbeitet nur mir den "echten" Kategorien und nicht
> mit Attributen, fuer Letzteres ist v.dissolve da.

Als Ausgangsmaterial habe ich mehrere Maps mit Attributen, etwa so eine:

hypersphere /home/martin> v.db.connect -c map=c522

INTEGER|cat
[...]
INTEGER|code_00


Die laufen allesamt durch ein "v.reclass [...] column=code_00 [...]" -
und nach meinem Verstaendnis haben die ab dem Moment gar keine
Attribute mehr. Das Manual zu "v.reclass" sagt jedenfalls: "No table is
created for the reclassed map if the column option is used and the
column type is integer". Genau das ist ja hier der Fall und ich glaube,
dass das auch tatsaechlich so funktioniert - denn so sieht das Ergebnis
nach "v.reclass" aus:

hypersphere /home/martin> v.db.connect -c map=c522_int
ERROR: Database connection for map <c522_int> is not defined in DB file


Dann setze ich den Kram mit "v.patch" zusammen, onduliere mit "v.clean"
eine Weile darauf rum und will den Krempel anschliessend anhand seiner
Kategorien wieder zerlegen.
Dann duerften dort eigentlich immer noch keine Attribute sein und wenn
ich, wie oben, mit einem "v.db.connect" nachgucke, dann gibt's auch zu
der zusammengesetzten Map keine DB-Tabelle - es sei denn, ich begehe
hier gerade einen Denkfehler.

Beste Gruesse,
	Martin.
-- 
 Unix _IS_ user friendly - it's just selective about who its friends are !
--------------------------------------------------------------------------