Wie kann ich eine extern berech­ne­te Rou­te exakt mit der Map­Trip Navi­ga­ti­on abfahren?

Ziel­grup­pe #

Die­ses Tuto­ri­al rich­tet sich an Anwen­der und Inte­gra­to­ren, die Rou­ten in einem belie­bi­gen Tou­ren­pla­nungs­sy­stem berech­nen und sicher­stel­len möch­ten, dass die Map­Trip Navi­ga­ti­on exakt die­sen Strecken­ver­lauf abfährt – ohne eige­ne Neu­be­rech­nung. Es geht in die­sem Bei­spiel um die Berech­nung einer Rou­te auf einem Ser­ver und die Kom­mu­ni­ka­ti­on mit Map­Trip über die Server-API.


Ziel #

Eine extern berech­ne­te Rou­te soll von Map­Trip ver­bind­lich und repro­du­zier­bar abge­fah­ren wer­den, auch wenn:

  • das Pla­nungs­sy­stem und die Navi­ga­ti­on unter­schied­li­che Kar­ten verwenden
  • meh­re­re alter­na­ti­ve Stra­ßen in unmit­tel­ba­rer Nähe existieren
  • kom­ple­xe Kreu­zun­gen, Auto­bahn­an­schlüs­se oder Par­al­lel­fahr­bah­nen vor­han­den sind

Grund­prin­zip #

Tou­ren­pla­nungs­sy­ste­me und Navi­ga­ti­ons­sy­ste­me ver­wen­den in der Regel unter­schied­li­che Kar­ten- und Rou­ting­mo­del­le.
Wenn eine Navi­ga­ti­on ledig­lich Start‑, Ziel‑ oder Zwi­schen­punk­te erhält, wird sie den Strecken­ver­lauf eigen­stän­dig neu berech­nen.

Um dies zu ver­mei­den, muss der Navi­ga­ti­on der kon­kre­te Strecken­ver­lauf geo­me­trisch vor­ge­ge­ben werden.

Die Map­Trip Ser­ver-API stellt hier­für den Endpunkt

POST /remote/route/reference

bereit. Die­ser End­punkt erwar­tet eine Koor­di­na­ten­fol­ge, die den gewünsch­ten Rou­ten­ver­lauf beschreibt.


Zen­tra­le Annah­me die­ses Tuto­ri­als: die Polyline #

Unab­hän­gig vom ver­wen­de­ten Tou­ren­pla­nungs­sy­stem basiert jede berech­ne­te Rou­te kon­zep­tio­nell auf einer Poly­line.

Was ist hier mit „Poly­line“ gemeint? #

Eine Poly­line ist eine geord­ne­te Liste von Koor­di­na­ten­punk­ten, die den gerou­te­ten Stra­ßen­ver­lauf beschreibt:

  • Punkt­fol­ge: P0, P1, P2, …, Pn
  • Jeder Punkt ist ein Koor­di­na­ten­paar in WGS84
  • Die Rei­hen­fol­ge ent­spricht der Fahrtrichtung

Die­se Poly­line kann in sehr unter­schied­li­chen For­ma­ten vor­lie­gen (z.B. Geo­J­SON, KML, GPX, JSON‑Objekte, kom­pri­mier­te Strings).
Für die­ses Tuto­ri­al ist aus­schließ­lich das kon­zep­tio­nel­le Ergeb­nis rele­vant:
eine geord­ne­te Punkt­li­ste ent­lang der Route.


Schritt 1: Rou­ten­geo­me­trie exportieren #

Expor­tie­ren Sie aus Ihrem Tou­ren­pla­nungs­sy­stem die Lini­en­geo­me­trie der Rou­te, nicht nur Stopps oder Wegpunkte.

Geeig­ne­te For­ma­te sind unter anderem:

  • Geo­J­SON LineSt­ring / MultiLineString
  • KML LineSt­ring
  • GPX Track
  • JSON‑Strukturen mit Koordinatenpunkten
  • kom­pri­mier­te Poly­li­nes (z.B. encoded polylines)

Hin­weis
Falls meh­re­re For­ma­te zur Ver­fü­gung ste­hen, emp­feh­len sich For­ma­te mit expli­zi­ten Koor­di­na­ten (Geo­J­SON, KML, GPX), da die­se leicht prüf­bar und visua­li­sier­bar sind.


Schritt 2: Poly­line normalisieren #

Ziel die­ses Schritts ist es, die Rou­ten­geo­me­trie in eine ein­fa­che Punkt­li­ste zu überführen:

[(lat0, lon0), (lat1, lon1), …, (latn, lonn)]

Dabei ist zu beachten:

  • Man­che For­ma­te ver­wen­den (longitude, latitude)
  • Man­che ver­wen­den (latitude, longitude)
  • Man­che bezeich­nen Koor­di­na­ten als x/y

Vor­ge­hens­wei­se

  • Ver­ein­heit­li­chen Sie alle Punk­te auf (latitude, longitude)
  • Stel­len Sie sicher, dass das Koor­di­na­ten­sy­stem WGS84 ist
  • Ent­fer­nen Sie optio­nal direkt auf­ein­an­der­fol­gen­de Duplikate

Schritt 4: Resam­pling auf äqui­di­stan­te Punk­te (emp­foh­len: 30 m) #

Die Stütz­punk­te einer Poly­line sind nicht gleich­mä­ßig ver­teilt:

  • Lan­ge, gera­de Stra­ßen kön­nen mit sehr weni­gen Punk­ten beschrie­ben sein
  • Kur­vi­ge Abschnit­te ent­hal­ten mehr Punkte
  • Punkt­ab­stän­de kön­nen stark variieren

Für ein Navi­ga­ti­ons­sy­stem mit ande­rem Kar­ten­ma­te­ri­al ist die­se Geo­me­trie nicht ein­deu­tig genug, um Neu­be­rech­nun­gen sicher zu verhindern.

Ziel des Resamplings #

Erzeu­gung einer neu­en Punkt­li­ste, bei der:

  • alle Punk­te exakt auf dem ursprüng­li­chen Rou­ten­ver­lauf liegen
  • der Abstand zwi­schen auf­ein­an­der­fol­gen­den Punk­ten nahe­zu kon­stant ist
  • der Strecken­ver­lauf ein­deu­tig „fixiert“ wird

Emp­foh­le­ner Punktabstand #

  • 30 m (Stan­dard, bewährt)
  • 20 m in sehr dich­ten Innenstadtbereichen
  • Abstän­de >50 m sind nicht empfohlen

Resampling‑Algorithmus (kon­zep­tio­nell) #

Ein­ga­be:
Eine Punkt­li­ste P0 … Pn (Poly­line)

Aus­ga­be:
Eine neue Punkt­li­ste Q0 … Qm mit kon­stan­tem Abstand

Vor­ge­hen:

  1. Über­neh­men Sie den ersten Punkt P0 als Q0
  2. Durch­lau­fen Sie die Poly­line seg­ment­wei­se (Pi → Pi+1)
  3. Berech­nen Sie die Län­ge jedes Segments
  4. Sobald ent­lang der Rou­te der näch­ste gewünsch­te Abstand (z.B. 30 m) erreicht ist: 
    • inter­po­lie­ren Sie einen neu­en Punkt inner­halb des aktu­el­len Segments
    • fügen Sie die­sen Punkt zur Ergeb­nis­li­ste hinzu
    • set­zen Sie die Zäh­lung fort, bis das Seg­ment voll­stän­dig ver­ar­bei­tet ist
  5. Fügen Sie den letz­ten Punkt der Rou­te hin­zu, falls er nicht bereits ent­hal­ten ist

Die Inter­po­la­ti­on erfolgt line­ar zwi­schen zwei Punk­ten; bei kur­zen Abstän­den (≈30 m) ist dies hin­rei­chend genau.


Schritt 5: CSV für Map­Trip erzeugen #

Erzeu­gen Sie aus der resam­pel­ten Punkt­li­ste eine CSV‑Datei im fol­gen­den Format:

latitude;longitude
50.732695;7.096295
50.732666;7.096394
50.732649;7.096367
...

Anfor­de­run­gen

  • Semi­ko­lon als Trennzeichen
  • WGS84
  • Punk­te in exak­ter Rei­hen­fol­ge ent­lang der Route
  • Kei­ne zusätz­li­chen Spal­ten erforderlich

Schritt 6: Über­ga­be an MapTrip #

Über­ge­ben Sie die CSV‑Datei an den End­punkt

POST /remote/route/reference

Map­Trip:

  • matched die Punk­te auf das eige­ne Kartenmaterial
  • inter­pre­tiert sie als ver­bind­li­che Referenzroute
  • fährt den vor­ge­ge­be­nen Strecken­ver­lauf ohne freie Neu­be­rech­nung ab

Check­li­ste zur Fehlersuche #

Bevor Sie die Rou­te an Map­Trip über­ge­ben, prü­fen Sie:

  1. Liegt eine Lini­en­geo­me­trie vor (nicht nur Stopps)?
  2. Sind alle Koor­di­na­ten kor­rekt als (latitude, longitude) angegeben?
  3. Ist die Punkt­li­ste in Fahrt­rich­tung sortiert?
  4. Wur­de ein äqui­di­stan­tes Resam­pling durchgeführt?
  5. Ent­spricht die CSV exakt dem erwar­te­ten Format?

Zusam­men­fas­sung #

  • Jede extern berech­ne­te Rou­te lässt sich kon­zep­tio­nell als Poly­line beschreiben
  • Die­se Poly­line ist geo­me­trisch kor­rekt, aber nicht aus­rei­chend ein­deu­tig für frem­des Kartenmaterial
  • Durch äqui­di­stan­tes Resam­pling (≈30 m) ent­steht eine robu­ste Referenzroute
  • Map­Trip kann die­se Refe­renz nut­zen, um den Strecken­ver­lauf exakt und repro­du­zier­bar abzufahren