2016-12-02 4 views
2

Ich habe ein Ziel, jeden Block jeder Straße in meiner Stadt zu führen. Ich habe meinen Fortschritt auf einer benutzerdefinierten Google-Karte, die ich zeichne, verfolgt. Es ist lästig zu loggen und widerlich zu Versuch & Fehlerdiagramm neue WegeKann Python benutzerdefinierte Routenplanung durchführen oder muss ich mich auf eine API verlassen?

Wie ich mehr in Python komme, realisierte ich, dass das eine Aufgabe ist, die für Automatisierung reif ist.

Umschaut, aber ich sehe viele Optionen für die Routenplanung API (Google und GraphHopper sehen überzeugend aus). Aber ich versuche nicht einfach von A-> B zu kommen und die Entfernung zu minimieren.

Ich möchte bestimmte Blöcke (die ich noch laufen lassen muss) und andere (die ich hunderte Male ausgeführt habe) abschwächen. Dies ist definitiv ein gelöstes Problem (zB "aktueller Verkehr" wird verwendet, um Routenoptimierungen zu gewichten), aber ich kann keine guten Beispiele finden.

Gibt es vorhandene Python-Bibliotheken, die Karten gewichten und Routing-Lösungen bereitstellen können?

Oder alternativ, bin ich falsch, einige dieser APIs so bald aufzugeben?

Antwort

1

Ich glaube nicht, dass diese API helfen kann, weil Sie eine Route benötigen, die mit einer benutzerdefinierten "Kostenfunktion" berechnet wird.

Vereinfachung, Routing-APIs wie Graphhopper/Google Maps, verwenden eine Kostenfunktion wie Kosten = Entfernung/Geschwindigkeit.

Stattdessen benötigen Sie eine Kostenfunktion, die niedrigere Werte für "noch zu fahrende" Straßen angibt.

Sie könnten eine lokale Installation von graphhopper tun, und folgen Sie diesem Beispiel https://github.com/graphhopper/graphhopper/blob/0.8/docs/core/weighting.md

oder Sie können PostgreSQL + PostGIS + pgRouting verwenden und eine eigene Kosten auf der Grundlage Ihrer Geschichte zu berechnen. Sie können http://pgrouting.org/docs/howto/oneway.html

Ich bin sicher, dass Sie hier etwas ähnliches wie Ihre Bedürfnisse finden zu einer PostgreSQL-Datenbank mit Python einer Verbindung herstellen können, aber Sie müssen einige zusätzliche Arbeit die notwendige Software installieren und Daten zu importieren.

Graphhopper hat einen eingebauten OSM-Importeur und Sie können eine funktionierende Instanz einfacher (meiner Meinung nach) bekommen.

Verwandte Themen