[Editar: esto ha sido reemplazado por nx_spatial que está disponible desde pypi (easy_install nx_spatial). Importar archivos de forma ahora es estándar en networkx 1.4 ]
Me ha decepcionado un poco la falta de herramientas de red geométricas en la API Python GP de ESRI, así que escribí algo que carga Shapefiles y Clases de entidades en gráficos direccionales de red (DiGraphs).
Todavía es un trabajo en progreso, pero podría ser un buen punto de partida para algo que pueda ayudarlo con su problema.
http://bitbucket.org/gallipoli/utilitynetwork/
Muestras:
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]
La red se hereda de networkx.DiGraph, por lo que toda esa funcionalidad está disponible.
.shp
a networkx? Podría construir uno yo mismo en Python, pero me Rathe rnot reinventar la rueda ...Puede echar un vistazo al proyecto GraphHopper de código abierto : un planificador de rutas rápido y flexible. Pruébalo aquí . Nota: soy el autor
fuente
También puede usar el paquete de gráficos de GeoTools para hacer el enrutamiento.
fuente
También puede echar un vistazo a las herramientas de RouteWare . Larga trayectoria y no vinculada a la base de datos
fuente
También investigamos un poco en los últimos años, pero todavía estamos contentos con pgRouting y creemos que es la mejor solución para nuestras necesidades de enrutamiento SIG. Desafortunadamente, no hay mucho que yo sepa (sin tener que pagar miles de euros / dólares). Trabajamos con Navtech -Data, que tiene una red perfecta para trabajar pero no es barata. También intentamos de vez en cuando con OSM que funcionaba bien ... pero siempre tenía algunos problemas y, por lo tanto, nunca llegaba a producción.
También acabamos de encontrar el proyecto GraphHopper de código abierto mencionado anteriormente (hace algunas semanas) y pensamos que tiene muy buen rendimiento y posibilidades. Hasta donde yo sé, también tienen datos OSM ejecutándose dentro de su proyecto.
fuente
No estoy seguro si eso se ajusta a sus requisitos particulares, pero podría valer la pena mirar la extensión de red de gvSIG .
fuente
Muchos problemas de enrutamiento utilizan el algoritmo de Dijkstra para determinar la ruta más corta. Es relativamente sencillo de codificar: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
Además, Guido van Rossum escribió un primer ensayo sobre gráficos en Python. Su breve artículo incluye un enfoque para la codificación y las estructuras de datos de rutas primitivas: http://www.python.org/doc/essays/graphs.html
Hay muchos paquetes de enrutamiento por ahí. Para fines geográficos específicos, además de pgRouting, me vienen a la mente Graphserver (http://bmander.github.com/graphserver/) y ESRI ArcGIS Network Analyst. La comunidad de análisis de redes sociales tiene una lista de software de análisis de gráficos en: http://www.insna.org/software/index.html y http://www.insna.org/software/software_old.html . Muchos de esos paquetes son de código abierto y relevantes en un contexto geográfico. Para cálculos altamente sofisticados, robustos o complejos, vale la pena investigar los paquetes de programación lineal como CPLEX y Lindo Lingo.
fuente
En la versión Alpha, pero parece prometedor:
GeoDaNet (Alpha): análisis de patrones de puntos espaciales en redes (basado en la biblioteca PySAL Ptyhon, concebida en el centro GeoDa).
( Diapositivas , manual , descarga ).
fuente
Puede usar Grasshopper API : tienen un componente de matrices en el que puede trabajar llamado Matrix API
También existe el complemento Mapzen Leaflet Routing o el motor Mapzen Valhalla
así como la API de distancia de Mapbox que puede aprovechar
fuente