x

Re: Max Speed für alle Streckenabschnitte einer Route bestimmen


Geschrieben von Oranger Assistent (Gast) am 06. Mai 2013 15:06:25: [flux]

Als Antwort auf: Max Speed für alle Streckenabschnitte einer Route bestimmen geschrieben von markusutill (Gast) am 05. Mai 2013 19:56:

Tach.

markusutill wrote:

Ich versuche zur Zeit eine Route zu erstellen und hinterher alle Streckenabschnitte die maximale Geschwindigkeit zu ermitteln.

Bisher bin ich leider nicht viel weiter gekommen als einen Track in einer .gpx Datei zu speichern (extrahiert von http://map.project-osrm.org/).Ich verstehe auch das Format nur leider sind die Daten die man von den Routern erhält recht sperlich.

Deine Aufgabenstellung ist gleichzeitig trivial und recht schwierig.

Die GPX-Datei enthält (bei langen Strecken sehr sehr) viele Wegpunkte jeweils als <rtept>-Eintrag mit Breite und Länge. Jeder dieser Einträge entspricht einem Punkt (Node) in der OSM-Datenbank.

Du kannst (genauer könntest, dazu gleich) zu jedem RTP ein winzig kleines Rechteck erzeugen, indem Du zu/von Lan und Lon jeweils einen sehr kleinen Wert addierst/subtrahierst. Dieses Rechteck nennen wir eine Bounding-Box (BBOX): sie besteht aus minlon undmaxlon, minlat und maxlat und wird als “minlon,minlat,maxlon,maxlat” dargestellt.

Den Inhalt jeder dieser Bounding-Boxen kannst Du jetzt von der API abrufen. Du erhältst jeweils einen Haufen Nodes und ein paar Ways. Die Nodes tragen lat und lon, und Du suchst jetzt die Node heraus, die am nächsten an Deinem rtept liegt, und die Node, die am nächsten am nächsten rtept liegt. Als nächstes suchst Du den Way oder die Ways, auf denen Du *beide* Knoten findet. Was Du machst, wenn Du keinen Way oder mehr als einen findest, “is left as exercice to then students™”. Sollte nicht sehr oft vorkommen.

Der gefundene Way trägt attribute, darunter möglicherweise “maxspeed=…”. Wenn Du kein solches Attribut findest, kannst Du z.B. aus dem Straßentyp “highway=” ein Maxspeed ableiten.

Das gehst Du für alle rtept durch, und Du hast Deine gewünschten Daten.

Jetzt zu dem “könnte” von oben: wenn Du einige tausend bbox-Abragen auf die API machst, sind die Admins des OSM-DB-Servers unglücklich, und es könnte ein schwarzer Van mit schwarz getöten Scheiben vor Deinem Haus auftauchen.

Du musst also den hier skizzierten Algorithmus noch deutlich optimieren.

Orange Grüße
Der Assistent

Edit: Typo