Extrahieren von Objekten anhand der Tag-Historie
Mit dem Werkzeug osmium-tool kann man OSM-Extrakte nach Schlüssel/Wert-Kombinationen filtern. Das funktioniert auch mit History-Dateien. Dabei werden alle Objekte herausgefiltert, bei denen es einen Version mit der gesuchten Schlüssel-Wert-Kombination gibt. Auf diese Weise ist es z.B. möglich, alle Objekte zu extrahieren, bei denen der Wert eines Schlüssel in der Versionshistorie des Objekts in einer bestimmten Weise geändert wurde, z.B. von highway=track auf highway=service|unclassified|tertiary:
# Create data file from history file to ensure consistency between data and history files:
osmium time-filter extract.osh.pbf -o extract.osm.pbf
# Get all ways with highway=track in any version
# (Discard nodes in the first step in order to eliminate nodes that are no longer part of the current versions of the ways)
osmium tags-filter --omit-referenced extract.osh.pbf w/highway=track -o track-w.osm.pbf
osmium getid --id-osm-file track-w.osm.pbf --add-referenced extract.osm.pbf -o track.osm.pbf
# Keep only ways that are now service,unclassified or tertiary:
osmium tags-filter track.osm.pbf w/highway=service,unclassified,tertiary -o no-track.osm
Die Datei no-track.osm
kann mit JOSM geöffnet werden.
Filtern nach User und Tag-Änderung
Manchmal ist es hilfreich, Objekte zu extrahieren, an denen der ursprüngliche oder der aktuelle Wert von einem bestimmten User gesetzt wurde. Mit osmium
ist das leider nicht möglich, da nicht nach den Schlüsseln user
und uid
gefiltert werden kann.osmium
kann aber die History-Datei in eine OPL-Datei umwandeln, ein Textformat mit einer Zeile pro Objektversion, in der auch der Username enthalten ist. Eine andere Möglichkeit bietet das Tool
osm-tag-csv-history. Beide Wege werden nachfolgend beschrieben. In beiden Fällen wird zunächst eine History-Datei der bisher herausgefilterten Objekte erstellt:
osmium getid --id-osm-file no-track.osm --with-history extract.osh.pbf -o no-track.osh.pbf