Mehrere Relationen mit osmosis extrahieren

Hallo,

ich weiss nicht, ob ich hier den richtigen Ansprechpartner finde, ansonsten leitet mich bitte weiter.

Ich versuche mit osmosis Relationen aus einer OSM Datei zu extrahieren.


osmosis.bat --read-xml file=mecklenburg-vorpommern.osm --tf accept-relations landuse=farmland --used-way --used-node --write-xml file=mecklenburg-vorpommern_farmland_rel.osm

und


osmosis.bat --read-xml file=mecklenburg-vorpommern.osm --tf accept-relations landuse=residential --used-way --used-node --write-xml file=mecklenburg-vorpommern_residential_rel.osm

liefert mir da auch schon das passende Endergebnis. Es muss doch aber auch die Möglichkeit geben das ganze in einer Abfrage zu realisieren, oder geht das nicht? Etwa solch eine Abfrage


osmosis.bat --read-xml file=mecklenburg-vorpommern.osm --tf accept-relations landuse=farmland landuse=residential --used-way --used-node --write-xml file=mecklenburg-vorpommern_residential_rel.osm

die aber, sobald man mehrere key/value Paare dranhängt, nicht mehr das richtige Ergebnis liefert.
Für Ways und Nodes gibt es ja den --way-key-value Parameter, mit dem man mehrere key/value Paare angeben kann. Wieso gibt es so einen für Relationen nicht, oder habe ich den nur nicht gefunden?

Gruß,
Tim

Nach http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#–tag-filter_.28–tf.29 ist eine Komma-separierte Liste gefragt.

... --tf accept-relations landuse=farmland,residential ...

Ansonsten wäre osmfilter eine überlegenswerte Alternative.

jo: “Multiple values can be specified for one key, in a comma-separated list.”

siehe https://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage_0.44#–tag-filter_.28–tf.29

allerdings hab schon lange nichts mehr mit tf gemacht.

gruss
walter

edit: Oli-Wan war schneller. ;(

Ah Mist, falsches Beispiel genommen. Die Komma-separierte Liste habe ich auch schon entdeckt gehabt, geht ja aber nur bei gleichen Keys. Wie sähe es denn aus, wenn ich dazu nun noch

waterway=riverbank

mit aufnehmen wollte?
osmfilter kenn ich noch nicht, werde mal nach googeln. Gäbe es dort für mein Einsatzgebiet einen Beispielcode :smiley:

Nicht getestet:

osmfilter mäcpomm.osm --keep-relations="landuse=farmland =residential or waterway=riverbank" -o=filterstaub.osm

Leider kann osmfilter kein pbf, aber das scheint für Dich keine Einschränkung zu sein.

Edit: fehlendes “=” eingefügt.

Danke für das Beispiel, werde es heute Abend einmal ausprobieren mit osmfilter.

Kann ich also davon ausgehen, das mein eigentlicher Wunsch, alles in einen osmosis Aufruf zu verpacken, nicht umsetzbar ist?

Wie kommst du denn darauf? Wir haben dir doch genau beschrieben, wie es in osmosis geht. Sogar 2x von 2 Leuten.

Gruss
walter

Aber nur für den selben Key :wink:

Doch. Für das residential-farmland-riverbank-Beispiel:

osmosis --rx mäcpomm --tf accept-relations landuse=farmland,residential waterway=riverbank --used-way --used-node --wx filterstaub.osm

Der Hinweis auf osmfilter zielte eher darauf ab, daß osmfilter schneller ist, und in der Handhabung m.E. auch etwas bequemer. osmosis kann dafür mehr.

Die Aufreihung der Key/Value Paare im osmosis Aufruf hatte ich ja eigentlich genau so probiert und bekam da aber zu wenig raus? Habe ich wohl was falsche gemacht!?

Wenn osmfilter sogar schneller ist, werde ich aber einfach den Tip weiter verfolgen. Wenn ich osmfilter mit o5m Dateien filtere, soll es ja sogar noch schneller sein.

Zur Orientierung: ich habe gerade aus ein und demselben Testgebiet die residential-farmland-riverbank-Relationen samt Mitgliedern ausgefiltert. osmfilter braucht mit o5m-Ausgangsmaterial 2 Sekunden, osmosis mit pbf 46 Sekunden. D.h. osmosis hatte durch Verwendung des schnelleren Formats sogar noch einen Vorteil.
Der osmfilter-Aufruf (Schnellschuß) oben war übrigens noch nicht vollständig. Besser:

osmfilter mäcpomm.osm --keep-relations="landuse=farmland =residential or waterway=riverbank" --keep-nodes= --keep-ways= -o=filterstaub.osm

Neben dem Verzicht auf pbf hat osmfilter auch noch den Nachteil, nicht mit Streams umgehen zu können, weil es den Input mehrfach liest. Aber auch das sollte für Windows-Nutzer keine Einschränkung darstellen.

ok, hab ich überlesen gehabt getan :wink:

Dann ist doch aber osmfilter schneller und hat den Vorteil?

@Oli-Wan Danke für deinen Tip mit osmfilter und das Beispiel. Hat super geklappt und ich habe meine gewünschten Ergebnisse sogar extrem viel schneller als mit osmosis bekommen.