Erstellen eines GPX-Tracks aus einer OSM-Relation (Perl-Skript)

In der OpenStreetMap-Datenbank sind viele Wanderwege und Radtouren als Relationen erfasst. Dieses Perl-Skript erzeugt aus einer solchen Relation einen GPX-Track für die Verwendung in einem GPS-Navigationsgerät. Daneben werden viele nützliche Informationen ausgegeben, die als Grundlage für eine Verbesserung der Relation in der OSM-Datenbank dienen können.

Die meisten Touren sind nicht vollständig erfasst sondern in Teilsegmenten mit mehr oder weniger großen Lücken dazwischen. Das Skript versucht die Teilsegmente nach Möglichkeit vernünftig zu sortieren.

Das Skript berücksichtigt auch Kreisverkehre, die in OSM mit "roundabout" getaggt sind. Diese geschlossenen Wege können nicht direkt in den GPX-Track übernommen werden. Sie werden deshalb durch einen Weg quer über den Kreisverkehr ersetzt.

Am Ende der der Bearbeitung wird eine Liste der Teilsegmente mit statistischen Daten ausgegeben. Dies gibt bereits einen Hinweis auf die Qualität des erzeugten Tracks. In vielen Fällen ist trotzdem eine manuelle Nachbearbeitung erforderlich.

Optional wird eine HTML-Datei erzeugt. Diese Datei enthält die statistischen Daten der Segmente (Länge, Abstand zum nächsten Segment) und für jedes Segment einen JOSM-Remotecontrol-Link. Ein Klick auf diesen Link öffnet in JOSM den Bereich, in dem sich das Ende des Segments und der Beginn des folgenden Segments befinden, zur Bearbeitung.

Das Skript gibt auch eine Reihe von Hinweisen auf Probleme mit der Relation, wie z.B. doppelte Punkte und Wege.

Installation

  • Voraussetzungen:
    • Perl muss installiert sein
    • Benötigte Module: LWP::Simple, IO::Scalar, XML::Parser, Math::Trig
    • Ab Version 0.2 wird für den Zugriff auf lokale XML-Dateien das Modul OSM::osm.pm benötigt. Dieses kann von http://wiki.openstreetmap.org/wiki/Osm.pm heruntergeladen werden. Das Modul muss in einem der Perl-Modul-Verzeichnisse im Unterverzeichnis OSM installiert werden. Eine Liste dieser Verzeichnisse kann mit perl -V ausgegeben werden. Alternativ kann man das Modul in einem Benutzerverzeichnis installieren und dies beim Perl-Aufruf mit der Option -I angeben (ohne /OSM).
  • Die angehängte Datei herunterladen und entpacken.
  • Unter Linux: Datei in einem Verzeichnis aus PATH ablegen oder explizit mit perl pfad/rel2gpx.pl aufrufen

Bedienung

  • Aufruf: rel2gpx {optionen} {Relation-Id}
  • Parameter und Optionen:
    Relation-Id
    Id der zu bearbeitenden Relation. Siehe auch Option -f
    -i datei
    Lese OSM-Daten aus lokaler Datei. Wenn diese Option nicht angegeben wird, dann werden die Daten von openstreetmap.org geladen
    -x datei
    schreibe eine XML-Datei im osm-Format, welche die Daten aller Objekte der Relation enthält (nur zusammen mit -i).
    -r typ
    Bearbeite alle Relationen mit type=route und route=typ (nur zusammen mit -i). Mögliche Werte für typ: bicycle, hiking, train.
    -f datei
    Lese Relation-Ids aus der Datei (nur zusammen mit -i). In der Textdatei kann pro Zeile eine Id angegeben werden. Zeilen, die mit "#" beginnen, werden nicht ausgewertet. Auch in den Datenzeilen können Kommentare eingefügt werden.
    -g
    Erzeuge eine GPX-Trackdatei
    -p
    Aktiviere die Ausgabe diverser Plausibilitätsprüfungen
    -s
    Aktiviere Statistikausgaben auf STDOUT
    -w
    Ausgabe von Statistikdaten und Plausibilitätshinweisen in eine HTML-Datei
    -o
    Berücksichtigen der Fahrtrichtung (oneway, forward/backward).
  • Der Name der GPX- und HTML-Datei wird aus dem Namen der Relation in der OSM-Datenbank gebildet. Existiert dieser nicht, wird die Relation-Id als Name verwendet. Bei Verwendung der Optionen -f oder -i wird der Dateiname aus dem Namen der Relationsliste bzw. der Osm-Datei gebildet.

Download
rel2gpx_v027.tgz
rel2gpx_v026.tgz