OpenStreetMap logo OpenStreetMap

rainerU's Diary

Recent diary entries

[out:csv(name,
         highway,
         bicycle,
         cycleway,
         "cycleway:both",
         "cycleway:left",
         "cycleway:right",
         "sidewalk:bicycle",
         "sidewalk:both:bicycle",
         "sidewalk:right:bicycle",
         "sidewalk:left:bicycle",
         length)]
[timeout:120];
area["de:amtlicher_gemeindeschluessel"=08421000]->.a;
way(area.a)["highway"];
convert result ::=::,::geom=geom(),length=length();
out geom;

Mapillary-Overlay für Garmin-Geräte

Posted by rainerU on 7 July 2021 in German (Deutsch). Last updated on 8 July 2021.

Wenn ich mit der Kamera am Fahrrad unterwegs bin, um Bildsequenzen für Mapillary aufzunehmen, ist es oft hilfreich zu wissen, für welche Straßenabschnitte schon aktuelle Bilder auf Mapillary vorhanden sind. Ich kann dann die Fahrtstrecke so anpassen, dass ich bevorzugt Straßen und Wege abfahre, für die noch keine aktuellen Aufnahmen existieren. Dafür nutze ich eine Overlay-Karte auf meinem Garmin Etrex 30s, auf der alle Mapillary-Sequenzen als grüne Linie angezeigt werden, die ab einem bestimmten Datum erzeugt wurden. Abgesehen davon, dass dabei die Aufnahmewinkel nicht angezeigt werden, hat sich dieses Overlay in der Praxis gut bewährt. Mit QMapShak kann ich das Overlay auch für die Planung am PC nutzen. Nachfolgend beschreibe ich, wie ich das Overlay erstelle.

Die Karte wird für ein geografisches Rechteck (Bounding Box, BBox) erzeugt, das durch die Koordinaten (in Dezimalgrad) der linken unteren und der rechten oberen Ecke definiert ist. Verwendet werden Kommandozeilen-Tools unter Linux/Bash. Die Karte wird in drei Schritten erstellt:

  • Herunterladen der Bildsequenzen von mapillary.com
  • Erzeugen einer OSM-XML-Datei
  • Erstellen der Garmin-Karte

Herunterladen der Bildsequenzen

Seit der Umstellung auf die API-Version V4 können die Daten der Bildsequenzen als Vektorkacheln im Mapbox Vector Tile Format herunter geladen werden. Die hier verwendeten Coverage Tiles enthalten eine Ebene image mit den einzelnen Bildpunkten und deren Daten und eine Ebene sequence mit den Bildsequenzen als Polygonzüge. Diese Ebene wird im Folgenden verwendet, um die Sequenzen als Linien über einer Grundkarte darzustellen.

See full entry

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

See full entry