AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Algorithmus für Track-Analyse (Roadbook)

Ein Thema von DelphiFan2008 · begonnen am 23. Nov 2013 · letzter Beitrag vom 6. Dez 2013
 
DelphiFan2008

Registriert seit: 4. Dez 2008
84 Beiträge
 
Delphi XE2 Starter
 
#6

AW: Algorithmus für Track-Analyse (Roadbook)

  Alt 5. Dez 2013, 13:18
Hallo,

das mit dem Durchlesen ist durchaus richtig - habe wohl Sonntagmorgen einen ganz schönen Stuss geschrieben

Jedoch dachte ich, dass das angehängte Bild ein wenig hilft.

Das ganze Vorhaben dient einer Steckenplanung für Fahrrad/Motorrad/Pkw. Die gewünschte Strecke liegt als GPS-Datei (GPX-Format) vor. Nun soll zusätzlich mittels der GPS-Daten und einer Datenbank, in der alle Orte/Städte und weitere interessante Punkte (Seen, Schlösser, Tunnels, Pässe etc.) vorhanden sind, ein „Roadbook“ erstellt werden.

Roadbook bedeutet: Liste mit den Orten/Städten auf/an der Strecke mit Abstand vom Start, Höhe des Ortes, evtl. Abstand vom Track -> Wenn man die Strecke nun z.B. mit dem Rad abfährt, befindet sich das Roadbook in der Trikottasche und man kann schnell einen Blick darauf werfen, ob etwas interessantes in der Nähe ist oder auch nur zur Orientierung.

Zusätzlich kommt auf das Roadbook eine Grafik des Streckenprofil mit den Achsen Höhe/Entfernung und Basisdaten - Steckenlänge/Höhenmeter etc.

Hier ein „Roadbook“ - nur Liste der Orte - aus meiner ersten Applikation

Delphi-Quellcode:
...
(3) Untervaz / 549hm / 9,8km
(4) Trimmis / 640hm / 14,7km
(5) Chur / 631hm / 22,6km
(6) Churwalden / 1391hm / 30,0km
(7) [Pass:Lenzerheidepass / 1547hm / 35,6km]
...
Daten-Ausgangslage:
  • GPS-Track mit ca. 1.500..5.000 Wertepaaren
  • Orts/Punkte Liste mit ca. 180.000 Einträgen

Eine deutliche Reduzierung der Ort/Punkte Wertepaare erreiche ich indem ich die maximalen Koordinaten (xmin,ymin) und (xmax,ymax) des GPS-Track ermittle und mir nur die Orte/Punkte innerhalb des Rechtecks merke. Bleiben ca. 500..2.000 Ort/Punkte Wertepaare übrig.
  • GPS-Track mit ca. 1.500..5.000 Wertepaaren
  • Gefilterte Orts/Punkte Liste mit ca. 500..2.000 Einträgen

Ziel ist es nun Orte und interessante Punkte (aus den Ort/Punkt Wertepaare) entlang einer Strecke zu ermitteln, welche auf dem Track oder nahe am Track liegen.
Ich denke das Vorhaben sieht auf den ersten Blick trivial aus - bei genauer Betrachtung gibt es doch so manchen Sonderfall und in bin mir noch nicht ganz sicher wie ich den Algorithmus angehe.

Bei einer direkten Strecke von A nach B und einer durchschnittlichen „Ortsdichte“ und dem entsprechend angepassten Fangradius passt mein vorhandener Algorithmus. Schwieriger wird es wenn:
  • Start/Ende an gleichem Punkt
  • Strecke kreuzt (mehrfach)
  • Stecke wird parallel in eine Richtung doppelt/mehrfach gefahren
  • Stecke wird parallel in gegengesetzte Richtung doppelt/mehrfach gefahren
  • Große Städte sind reduziert auf eine Koordinate -> Fangradius zu klein, Stadt fehlt
  • Fangradius zu groß bei hoher Ortsdichte -> zu viele Orte die nicht durchfahren werden
  • Fangradius zu klein bei geringer Ortsdichte z.B. Alpen -> zu wenig Orte an der Strecke

Momentan habe ich nur den Ansatz von „Strecke A nach B“ umgesetzt. Hier durchlaufe ich das Track-Array und vergleiche für jeden Trackpunkt den Abstand zu jedem Ort der gefilterten Orts-Liste. Liegt dieser im Fangradius, so wird der Ort einmalig in einer weiteren Liste abgelegt. Gleichzeitig wird der geringste Abstand Ort/Trackpunkt ermittelt und das Minimum dann dem Ortspunkt in der weiteren Liste zugeordnet.

Gefühlt wird ein „vollautomatische“ Algorithmus nicht funktionieren. Beispiel: Strecke streift den Bodensee, Koordinaten liegen aufgrund der Größe nicht im Fangradius -> manuelle Zuordnung wahrscheinlich notwendig.

Hoffe dass die Beschreibung dieses mal etwas klarer ist

[Edit] Das ganze kann dann so aussehen, siehe Bild im Anhang

Gruß DelphiFan2008
Angehängte Grafiken
Dateityp: jpg Roadbook-Demo_02.jpg (39,2 KB, 22x aufgerufen)

Geändert von DelphiFan2008 ( 5. Dez 2013 um 13:47 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz