Suchen Sie nach Alternativen zu pgRouting für Open Source Routing / Netzwerkanalyse?

35

Ich habe mich gefragt, ob es Alternativen zu pgRouting- Tools gibt.

Ich denke, die einzige Alternative besteht darin, R oder RPY für die Analyse zu verwenden.

Grundsätzlich versuche ich Routing-Probleme zu lösen, die auf NonPostGIS-Datenbanken basieren. Da die meisten meiner Daten tatsächlich in einem anderen Format gespeichert sind; es ist jedoch nicht zu schwer zu konvertieren. Ich finde, dass es schwierig ist, pgRouting in mein dummes Gehirn umzusetzen. Vielleicht ist eine Lösung, die keine Datenbank ist und die ich einfach optimieren kann, ideal für mich

dassouki
quelle

Antworten:

21

[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.

bwreilly
quelle
11

Obwohl der Thread ein bisschen alt ist, wollte ich ein paar Links zum Thema Routing hinzufügen, falls hier jemand endet, wie ich es getan habe:

María Arias de Reyna Domínguez
quelle
5

Es gibt Flowmap , ein Nischen-GIS-Paket, das für die Behandlung von Netzwerkanalyseproblemen entwickelt wurde.

Wenn Sie einen relativ einfachen Anwendungsfall haben, kann der QGIS-basierte Quantum Navigator den Trick ausführen.

GRASS unterstützt auch die Netzwerkanalyse , obwohl es sich möglicherweise nicht lohnt, Dinge innerhalb der Umgebung einzurichten.

scw
quelle
4

Wenn Sie nach einer programmgesteuerten Pythonic-Lösung suchen, werfen Sie einen Blick auf networkx

perrygeo
quelle
.shpGibt 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 ...
fmark
4
Es ist keine 1: 1-Übereinstimmung, da Shapefiles Daten als einfache Features und nicht als topologische Netzwerke speichern. Sie müssen also zuerst einige Dinge über Ihren Quelldatensatz wissen / annehmen - hauptsächlich, dass alle Schnittpunkte Endknoten für eine Linienfolge sind. Hier ist ein Beispiel für die Verwendung von Geodjango zum Konvertieren einfacher Features in ein NetworkX-Diagramm: code.google.com/p/marinemap/source/browse/lingcod/spacing/…
perrygeo
3

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

Karussell
quelle
Ich bürge für GraphHopper, da es sehr einfach einzurichten und zu verwenden ist.
Bugmenot123
2

Sie können auch das GeoTools-Grafikpaket verwenden, um das Routing durchzuführen.

Ian Turton
quelle
1
Ich denke, dieses Beispiel bezieht sich auf GeoTools-Diagramm Usefulpracticalgeoblog.blogspot.com/2011/03/…
ThomasG77
2

Sie können sich auch die Tools von RouteWare ansehen . Langer Track Record und nicht datenbankgebunden

Uffe Kousgaard
quelle
2

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.

leole
quelle
1

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.

Glennon
quelle
Das Problem ist, dass die meisten dieser Lösungen ein System von Knoten und Verbindungen benötigen und GIS-Daten normalerweise nicht auf diese Weise gespeichert werden
dassouki
1
Der Netzwerkanalyst kostet ungefähr 2.500 US-Dollar und ist derzeit nicht wirklich daran interessiert, einen solchen Kauf zu tätigen. Ich hätte lieber eine pythonische Lösung
dassouki
2
Dijjkstra ist für sehr einfache Grafiken. Bei Problemen im wirklichen Leben handelt es sich normalerweise um einen sehr schweren und langsamen Algorithmus. Außerdem ist ESRI-Software, da sie nicht aus Open-Source-Quellen stammt, nur schwer zu verbessern und wird langsam zugunsten anderer Tools zurückgelassen.
María Arias de Reyna Domínguez
@dassouki Alle GIS-Daten sind im Wesentlichen Knoten und Links. Tools wie osm2pgrouting und andere pgRouting-Skripte im Allgemeinen konvertieren vorhandene GIS- / Geodaten in die erforderlichen Knoten und Links und Kanten, die in
pgRouting
1

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 .)

radek
quelle