Mehr

Ermitteln der Zeit, die für den Edge benötigt wird, mit dem GraphHopper-Map-Matching

Ermitteln der Zeit, die für den Edge benötigt wird, mit dem GraphHopper-Map-Matching


Hier sind die GPX-Daten, die ich der GraphHopper Map-Matching-Bibliothek gebe:

private Liste getList() { Liste SampleEntries = neue ArrayList(); GPXEntry point1 = neuer GPXEntry(13.0009316,77.5947316, 1431849367077L); GPXEntry point2 = neuer GPXEntry(12.9868999,77.6042,1431849683112L); GPXEntry point3 = neuer GPXEntry(12.9867766,77.6043633,1431849718336L); GPXEntry-Punkt4 = neuer GPXEntry(12.98658,77.6043283,1431849752169L); GPXEntry point5 = neuer GPXEntry(12.9846133,77.6052366,1431850069237L); SampleEntries.add(Punkt1); SampleEntries.add(Punkt2); SampleEntries.add(Punkt3); SampleEntries.add(Punkt4); SampleEntries.add(Punkt5); Mustereinträge zurückgeben; }

Es ist eine Liste vonGPX-EintragObjekte, die jeweils Lat, Long und den Zeitstempel des Fahrzeugs enthalten, als der Standort aufgezeichnet wurde.

Mit der Kartenbibliothek bin ich jetzt in der Lage, Kanten und Pfade mit dem Dijkstra-Algorithmus zu erhalten. DasAbfrageergebnisseObjekt hat folgendes:

for (QueryResult item : queryResult) { System.out.println("Snapped Position: "+ item.getSnappedPoint()); edgeMap.put(item.getClosestEdge().getEdge(), item.getQueryDistance()); }

Ich erhalte eine Kanten-ID und am Ende ist die berechnete Entfernung auch korrekt, wenn ich mit der GoogleMaps-Entfernung vergleiche. Ich möchte jedoch die timeStamp(epoch)-Daten verwenden, die ich in den GPX-Daten angegeben habe. Ich gehe davon aus, dass die Bibliothek Kanten basierend auf den von mir angegebenen Positionspunkten erstellt und sie an der tatsächlichen Route ausrichtet, auf die von der OSM-Datei verwiesen wird.

Ich möchte für jede EdgeID wissen, wie erhalte ich die benötigte Zeit? Für z.B. Zeit zwischenPunkt 1undPunkt2sollte sein(1431849683112L-1431849367077L). Bietet die Bibliothek dafür etwas oder muss ich das separat tun.


Sie können die zugehörige Zeit indirekt für jede Kante über die EdgeMatch-Klasse abrufen, indem Sie die Entfernung und Geschwindigkeit für jeden verknüpften edgeState verwenden.

BTW: Du machst wahrscheinlich den Map-Matching nicht richtig. Obwohl der QueryGraph etwas Ähnliches macht und z.B. Wir verwenden dies unter der Haube in der Map-Matching-Komponente, dies allein wird für viele Punkte nicht so gut funktionieren. Bitte werfen Sie einen Blick in den Java-Teil der Map-Matching-Bibliothek