Stellen Sie sich vor, Sie haben eine Liste von Punkten (Breite + Länge), die Sie zuvor mit einem GPS-Empfänger aufgezeichnet haben. Jetzt müssen Sie es in eine Textdarstellung der Route konvertieren, der Sie gefolgt sind. Beispiel:
- Beginnen Sie an der Redmond Avenue 12
- Gehen Sie 200 m
- Biegen Sie links ab in eine andere St.
- Gehen Sie 100 m
- Halten Sie an einer anderen St. 10
- Ende
Es muss nicht wirklich sehr detailliert sein. Die erste Idee, die mir in den Sinn kommt, ist die Verwendung eines externen Dienstes (Google, Yahoo ...), um den Geocode für jeden Punkt umzukehren. Wenden Sie dann einen einfachen Algorithmus an, um die Route zu schreiben, wenn ich eine Änderung des Straßennamens feststelle.
Jeder Tipp, welcher Algorithmus am besten zu verwenden ist oder welche (offene) Implementierung vorhanden ist, ist willkommen. Es scheint nicht trivial zu sein.
Start at Redmond Avenue 12
undWalk 200 m
ich will nicht wissen , in welche Richtung zu gehen? Entschuldigung für das Nitpicking.Antworten:
Wenn Sie einen externen Dienst verwenden können, bietet die Google Directions-API diese Funktionalität direkt an. Es unterstützt Wegpunkte entlang des Pfades, sodass Sie Folgendes tun können:
Dies gibt ein
JSON
Dokument mitsteps
für jede Richtung zurück.Wenn Sie dies selbst tun möchten, müssen Sie einige Schritte ausführen, um die Verarbeitungsanweisungen zu starten: Sie benötigen ein Dataset für das Routing der Pfade, z. B. OSM , und eine Routing-Engine wie pgRouting . So etwas wie OSM2PostGIS bietet das notwendige schwere Heben, um ein solches Setup zum Laufen zu bringen. Anschließend möchten Sie jeden Ihrer Punkte auf der nächsten Kante neu positionieren. Dies kann in PostGIS mit
ST_Line_Locate_Point
( Dokumentation ) erfolgen. Zwischen der linearen Referenzierung in PostGIS und pgRouting sollten Sie in der Lage sein, ausreichend vernünftige Richtungen zu erstellen.quelle