À la recherche d'alternatives à pgRouting pour le routage open source / l'analyse de réseau?


35

Je me demandais s'il existe des alternatives aux outils pgRouting .

En y réfléchissant un peu, je pense que la seule alternative est d’utiliser R ou RPY pour faire l’analyse.

En gros, j'essaie de résoudre des problèmes de routage basés sur des bases de données non PostGIS. Comme la plupart de mes données sont en réalité stockées dans un format différent; Cependant, il n'est pas difficile de convertir. Je trouve que mon cerveau stupide et stupide est difficile à appliquer. Alors peut-être une solution non-base de données que je peux facilement modifier serait idéale pour moi

Réponses:


21

[Edit: cela a été remplacé par nx_spatial qui est disponible chez pypi (easy_install nx_spatial). L'importation de fichiers de formes est maintenant standard dans networkx 1.4 ]

J'ai été un peu déçu par le manque d'outils réseau géométriques dans l'API Python GP de ESRI. J'ai donc écrit quelque chose qui charge les fichiers de formes et les classes d' entités dans des graphes directionnels networkx (DiGraphs).

C'est toujours un travail en cours, mais cela pourrait être un bon point de départ pour quelque chose qui puisse vous aider avec votre problème.

http://bitbucket.org/gallipoli/utilitynetwork/

Échantillons:

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]

Network est hérité de networkx.DiGraph, donc toutes les fonctionnalités sont disponibles.



5

Il existe Flowmap , un package de niche SIG conçu pour traiter les problèmes d’analyse de réseau.

Si vous avez un cas d'utilisation assez simple, le navigateur Quantum basé sur QGIS pourrait faire l'affaire.

GRASS prend également en charge l’ analyse de réseau , bien que la nécessité de mettre en place des éléments dans l’environnement ne présente aucun intérêt.


4

Si vous cherchez une solution pythonique programmatique, jetez un coup d’œil à networkx


Des bibliothèques pour aller de .shpnetworkx? Je pourrais en construire un moi-même en Python, mais je ne réinventerais pas la roue ...
fmark

4
Ce n'est pas exactement une correspondance 1: 1 car les fichiers de formes stockent les données sous forme de fonctionnalités simples, pas de réseaux topologiques. Par conséquent, vous devez d’abord savoir / assumer certaines choses à propos de votre jeu de données source - principalement que toutes les intersections sont des nœuds terminaux d’une chaîne de lignes. Voici un exemple d'utilisation de geodjango pour convertir des entités simples en un graphique networkx
perrygeo

3

Vous pouvez consulter le projet open source GraphHopper - un planificateur d’itinéraires rapide et flexible. Essayez-le ici . Note: je suis l'auteur


Je me porte garant de GraphHopper car il est très simple à installer et à utiliser.
bugmenot123



2

Nous avons également effectué des recherches ces dernières années, mais nous sommes toujours satisfaits de pgRouting et pensons qu’il s’agit de la meilleure solution pour nos besoins en matière de routage SIG. Malheureusement, je ne connais pas grand chose autour de moi (sans avoir à payer des milliers d'euros / dollars). Nous travaillons avec Navtech -Data, qui dispose d’un réseau idéal, mais n’est pas bon marché. Nous avons également essayé de temps en temps avec OSM qui fonctionnait bien ... mais qui posait toujours des problèmes et ne se mettait donc jamais en production.

Nous venons également de découvrir le projet Open Source GraphHopper mentionné ci-dessus (il y a quelques semaines) et pensons qu'il offre de très bonnes performances et possibilités. Autant que je sache, ils ont également des données OSM en cours d'exécution dans leur projet.


1

Vous n'êtes pas sûr que cela corresponde à vos besoins particuliers, mais il pourrait être intéressant de regarder l' extension de réseau de gvSIG .


1

Beaucoup de problèmes de routage utilisent l'algorithme de Dijkstra pour déterminer le chemin le plus court. C'est relativement simple à coder: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Guido van Rossum a également écrit un premier essai sur les graphes en Python. Son court article inclut une approche pour les structures de données de route primitives et le codage: http://www.python.org/doc/essays/graphs.html

Il y a beaucoup de paquets de routage sur le marché. Pour des raisons spécifiquement géographiques, outre pgRouting, graphserver (http://bmander.github.com/graphserver/) et ESRI ArcGIS Network Analyst viennent à l’esprit. La communauté d'analyse de réseaux sociaux dispose d'une liste de logiciels d'analyse de graphes à l' adresse suivante : http://www.insna.org/software/index.html et http://www.insna.org/software/software_old.html . Beaucoup de ces packages sont open source et pertinents dans un contexte géographique. Pour les calculs hautement sophistiqués, robustes ou complexes, il peut être intéressant de rechercher des progiciels de programmation linéaire tels que CPLEX et Lindo Lingo.


le problème est que la plupart de ces solutions nécessitent un système de nœuds et de liens, et les données SIG ne sont généralement pas stockées de cette façon
dassouki

1
L'analyste de réseau coûte environ 2 500 dollars et n'est pas vraiment intéressé par un tel achat maintenant. Je préférerais une solution
pythonique

2
Dijjkstra est pour les graphiques très basiques. Pour les problèmes de la vie réelle, il s’agit généralement d’un algorithme très lourd et lent. En outre, le logiciel ESRI, dans la mesure où il n’est pas à source ouverte, est difficile à améliorer et est lentement laissé pour compte, au profit d’autres outils.
María Arias de Reyna Domínguez

@dassouki Toutes les données SIG sont essentiellement des noeuds et des liens. Des outils tels que osm2pgrouting et d'autres scripts pgRouting en général convertissent les données SIG / spatiales existantes en noeuds, liens et arêtes nécessaires utilisés dans pgRouting ...
DPSSpatial


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.