[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.
.shp
networkx? Je pourrais en construire un moi-même en Python, mais je ne réinventerais pas la roue ...Vous pouvez consulter le projet open source GraphHopper - un planificateur d’itinéraires rapide et flexible. Essayez-le ici . Note: je suis l'auteur
la source
Vous pouvez également utiliser le package graphique de GeoTools pour effectuer le routage.
la source
Vous pouvez également consulter les outils de RouteWare . Longue piste et non lié à la base de données
la source
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.
la source
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 .
la source
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.
la source
En version Alpha mais semble prometteur:
GeoDaNet (Alpha) - Analyse spatiale de modèles de points sur des réseaux (basée sur la bibliothèque PySAL Ptyhon, conçue dans le centre GeoDa).
( Diapositives , manuel , téléchargement .)
la source
Vous pouvez utiliser l' API Grasshopper - Ils ont un composant matrices dans lequel vous pouvez travailler, appelé l' API Matrix.
Il y a aussi Mapzen Leaflet Routing Plugin ou le moteur Mapzen Valhalla
ainsi que l’ API Distance Mapbox que vous pouvez exploiter dans le
la source