[Bearbeiten: Dies wurde durch nx_spatial ersetzt, das von pypi erhältlich ist (easy_install nx_spatial). Das Importieren von Shapefiles ist jetzt Standard in networkx 1.4 ]
Der Mangel an geometrischen Netzwerkwerkzeugen in der Python GP-API von ESRI hat mich etwas enttäuscht. Deshalb habe ich etwas geschrieben, das Shapefiles und Feature-Classes in direktionale networkx- Diagramme (DiGraphs) lädt.
Es ist noch in Arbeit, aber es könnte ein guter Ausgangspunkt für etwas sein, das bei Ihrem Problem helfen kann.
http://bitbucket.org/gallipoli/utilitynetwork/
Proben:
from utilitynetwork import Network
net = Network()
#load single file, method reqs OGR
net.loadshp("/shapefiles/test.shp")
#load directory full of shapefiles
net.loadshp("/shapefiles")
#load a feature class, req ESRI gp object, should work with shps as well
import arcgisscripting
gp = arcgisscripting.create(9.3)
net.loadfc("C:\somedb.gdb\featureclass", gp)
#Accessing node/edge data is done by the key value (the geometry as a tuple).
#access node data at x=4, y=2
nodekey = (4, 2)
net.node[nodekey]
Das Netzwerk wird von networkx.DiGraph geerbt, sodass die gesamte Funktionalität verfügbar ist.
.shp
Gibt es Bibliotheken für den Wechsel von zu networkx? Ich konnte mich ein in Python bauen, aber ich würde Rathe rnot das Rad neu erfinden ...Sie können einen Blick in das Open Source GraphHopper- Projekt werfen - einen schnellen und flexiblen Routenplaner. Probieren Sie es hier aus . Hinweis: Ich bin der Autor
quelle
Sie können auch das GeoTools-Grafikpaket verwenden, um das Routing durchzuführen.
quelle
Sie können sich auch die Tools von RouteWare ansehen . Langer Track Record und nicht datenbankgebunden
quelle
Wir haben in den letzten Jahren auch einige Nachforschungen angestellt, sind aber immer noch mit pgRouting zufrieden und halten es für die beste Lösung für unsere GIS-Routing-Anforderungen. Leider gibt es nicht viel, von dem ich weiß (ohne Tausende von Euro / Dollar bezahlen zu müssen). Wir arbeiten mit Navtech- Data, das ein perfektes Netzwerk hat, aber nicht billig ist. Wir haben auch von Zeit zu Zeit versucht, mit OSM zu arbeiten, was in Ordnung war. Aber wir haben immer ein paar Probleme gemacht und es deshalb nie in die Produktion geschafft.
Wir sind auch gerade auf das oben erwähnte Open Source GraphHopper- Projekt gestoßen (vor einigen Wochen) und sind der Meinung, dass es eine sehr gute Leistung und gute Möglichkeiten hat. Soweit ich weiß, laufen in ihrem Projekt auch OSM-Daten.
quelle
Wir sind uns nicht sicher, ob dies Ihren speziellen Anforderungen entspricht, aber es könnte sich lohnen, die Netzwerkerweiterung von gvSIG zu prüfen .
quelle
Viele Routing-Probleme verwenden den Dijkstra-Algorithmus, um den kürzesten Weg zu bestimmen. Der Code ist relativ einfach: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
Guido van Rossum schrieb auch einen frühen Aufsatz über Graphen in Python. Sein kurzes Stück enthält einen Ansatz für primitive Routendatenstrukturen und Codierung: http://www.python.org/doc/essays/graphs.html
Es gibt viele Routing-Pakete. Für spezifisch geografische Zwecke kommen neben pgRouting auch graphserver (http://bmander.github.com/graphserver/) und ESRI ArcGIS Network Analyst in Frage. Die Community für soziale Netzwerkanalysen verfügt über eine Liste von Grafikanalysesoftware unter: http://www.insna.org/software/index.html und http://www.insna.org/software/software_old.html . Viele dieser Pakete sind Open Source und in einem geografischen Kontext relevant. Für hochentwickelte, robuste oder komplexe Berechnungen sind lineare Programmierpakete wie CPLEX und Lindo Lingo möglicherweise eine Untersuchung wert.
quelle
In Alpha Release sieht das aber vielversprechend aus:
GeoDaNet (Alpha) - Analyse von räumlichen Punktmustern in Netzwerken (basierend auf der PySAL Ptyhon-Bibliothek, die im GeoDa-Zentrum erstellt wurde).
( Folien , Handbuch , Download .)
quelle
Sie können die Grasshopper-API verwenden. Sie haben eine Matrizen-Komponente, die Sie verwenden können, die Matrix-API
Es gibt auch das Mapzen Leaflet Routing Plugin oder die Mapzen Valhalla Engine
sowie die Mapbox Distance API, auf die Sie tippen können
quelle