¿Busca alternativas a pgRouting para el enrutamiento de código abierto / análisis de red?


35

Me preguntaba si hay alguna alternativa a las herramientas de pgRouting .

Pensándolo un poco, creo que la única alternativa es usar R o RPY para hacer el análisis.

Básicamente estoy tratando de resolver problemas de enrutamiento basados ​​en bases de datos no PostGIS. Como la mayoría de mis datos se almacenan en un formato diferente; Sin embargo, no es difícil de convertir. Estoy descubriendo que pgRouting a mi tonto cerebro tonto es difícil de implementar. Entonces, tal vez una solución que no sea de base de datos que pueda ajustar fácilmente sería ideal para mí

Respuestas:


21

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



5

Hay Flowmap , un paquete de GIS de nicho diseñado para tratar problemas de análisis de red.

Si tiene un caso de uso bastante simple, el Quantum Navigator basado en QGIS podría hacer el truco.

GRASS también es compatible con el análisis de red , aunque puede que no valga la pena tener que configurar las cosas dentro del entorno.


4

Si está buscando una solución pitónica programática, eche un vistazo a networkx


¿Alguna biblioteca para ir .shpa networkx? Podría construir uno yo mismo en Python, pero me Rathe rnot reinventar la rueda ...
fmark

44
No es exactamente una coincidencia 1: 1 ya que los archivos de forma almacenan datos como características simples, no como redes topológicas. Por lo tanto, primero debe saber / asumir algunas cosas sobre su conjunto de datos de origen, principalmente que todas las intersecciones son nodos terminales para una cadena lineal. Aquí hay un ejemplo del uso de geodjango para convertir características simples en un gráfico de networkx
perrygeo

3

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


Estoy a favor de GraphHopper, ya que es muy simple de configurar y usar.
bugmenot123



2

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.



1

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.


El problema es que la mayoría de estas soluciones necesitan un sistema de nodos y enlaces, y los datos SIG generalmente no se almacenan de esa manera
Dssouki

1
El analista de red cuesta alrededor de $ 2,500 y no está realmente interesado en hacer tal compra ahora. Prefiero tener una solución
pitónica

2
Dijjkstra es para gráficos muy básicos. Para problemas de la vida real, generalmente es un algoritmo muy pesado y lento. Además, el software ESRI, ya que no es de código abierto, es difícil de mejorar y lentamente se está quedando atrás en favor de otras herramientas.
María Arias de Reyna Domínguez

@dassouki todos los datos SIG son esencialmente nodos y enlaces, y herramientas como osm2pgrouting y otros scripts pgRouting en general, convierten los datos SIG / espaciales existentes en los nodos y enlaces y bordes necesarios que se utilizan en pgRouting ...
DPSSpatial

1

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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.