Alle Punkte eines Tracks in die gleiche Richtung um den gleichen Offset zu verschieben ist relativ einfach.
Das war aber nicht mein Ziel. Ich wollte einen neuen Track,
Der neue Track soll parallel zum Originaltrack verlaufen,
Man kann wahlweise:
⇒⇒ Nur den verschobenen Track anzeigen um den Weg auf der Karte noch erkennen zu können.
⇒⇒ Beide Tracks mit unterschiedlicher Farbe zur besseren Erkennbarkeit anzeigen.
Achtung: es werden nur Tracks verschoben, keine Routen!
Neben vielen proprietären Formaten hat sich .gpx als Standard für GPS-Tracks,
Erste Aufgabe ist also, eine .gpx-Datei vom lokalen Rechner zu laden
Da ich das Tool als Web-Lösung implementieren wollte, habe ich mich für
Seit HTML5 ist sowohl das Laden einer lokalen Datei, als auch das Parsen
In einer .gpx-Datei können mehrere Tracks mit jeweils mehreren Tracksegmenten
Da es uns nur um die Darstellung geht, interessiert uns nur die Position der Trackpunkte.
Alle anderen Informationen, wie Höhe, Geschwindigkeit, Richtung,
Die Position eines Trackpunktes sieht wie folgt aus:
<trkpt lat="47.852157969027758" lon="16.830248180776834">
<ele="125.25">
</trkpt>
latist die geografische Breite von - 90° (Südpol) ... + 90° (Nordpol)
lonist die geografische Länge von -180° (Westen) ... +180° (Osten)
eleist die geografische Höhe in Meter
Nach dem Parsen erhalten wir ein Array mit allen Trackpunkten, wobei jeder Trackpunkt nur die Informationen "lat", "lon" und "ele" enthält.
Da der Winkel zwischen 2 Trackpunkten proportional zur Länge des Kreissegmentes ist,
Wir benötigen aber auch die Entfernung in Meter,
Während der Abstand zwischen zwei Breitenkreisen (lat)
Konkret berechnet sich der Abstand zwischen zwei Längenkreisen (lon)
Jeder Track besteht aus einer Anzahl von Linien,
Da wir jede dieser Linien in eine andere Richtung verschieben wollen,
Nun verschieben wir alle Linien im rechten Winkel um den gewünschten Abstand,
Durch das Verschieben entstehen Lücken bzw. Überlappungen !
Aber immerhin, wir haben schon ansatzweise einen verschobenen Track :-)
Wir machen aus den verschobenen Linien wieder einen Track,
Der Schnittpunkt ist jeweils ein Trackpunkt unseres verschobenen Tracks.
Für parallele Linien und Linien,
Ganz enge Serpentinen im Bereich der Verschiebedistanz
Den verschobenen Track speichern wir als .gpx-Datei ab.
Wenn wir nun beide Tracks auf das GPS-Gerät laden