Ищете альтернативы pgRouting для маршрутизации с открытым исходным кодом / сетевого анализа?


35

Мне было интересно, есть ли какие-либо альтернативы инструментам pgRouting .

Подумав немного, я думаю, что единственная альтернатива - использовать R или RPY для анализа.

В основном я пытаюсь решить проблемы с маршрутизацией на основе баз данных, отличных от PostGIS. Поскольку большинство моих данных на самом деле хранятся в другом формате; Тем не менее, это не трудно конвертировать. Я обнаружил, что pgRouting в мой тупой глупый мозг трудно реализовать. Так что, возможно, решение без базы данных, которое я могу легко настроить, было бы идеально для меня

Ответы:


21

[Редактировать: это было заменено nx_spatial, который доступен из pypi (easy_install nx_spatial). Импорт шейп-файлов теперь является стандартным в сети x 1.4 ]

Я был немного разочарован отсутствием инструментов геометрической сети в Python GP API ESRI, поэтому я написал кое-что, что загружает шейп- файлы и классы объектов в диаграммы направленности сети (DiGraphs).

Это все еще в стадии разработки, но это может быть хорошей отправной точкой для чего-то, что может помочь с вашей проблемой.

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

Образцы:

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]

Сеть наследуется от networkx.DiGraph, поэтому все эти функции доступны.



5

Есть блок-схема , нишевый ГИС-пакет, предназначенный для решения проблем сетевого анализа.

Если у вас достаточно простой пример использования, то Quantum Navigator на основе QGIS может помочь.

GRASS также поддерживает сетевой анализ , хотя, возможно, не стоит тратить силы на настройку объектов в среде.


4

Если вы ищете программное решение для pythonic, взгляните на networkx


Какие-нибудь библиотеки для перехода с .shpnetworkx? Я мог бы создать его сам в Python, но я бы не смог заново изобрести колесо ...
fmark

4
Это не совсем соответствует 1: 1, так как шейп-файлы хранят данные как простые функции, а не как топологические сети. Поэтому вам нужно сначала знать / предполагать некоторые вещи в исходном наборе данных - прежде всего, что все пересечения являются конечными узлами для линейной строки. Вот пример использования geodjango для преобразования простых функций в график networkx
perrygeo

3

Вы можете взглянуть на проект GraphHopper с открытым исходным кодом - быстрый и гибкий планировщик маршрута. Попробуйте это здесь . Примечание: я автор


Я ручаюсь за GraphHopper, поскольку он очень прост в настройке и использовании.
bugmenot123



2

Мы также провели некоторые исследования в последние годы, но мы по-прежнему довольны pgRouting и считаем, что это лучшее решение для наших потребностей GIS-Routing. К сожалению, не так много, что я знаю (без необходимости платить тысячи евро / долларов). Мы работаем с Navtech-Data , у которой есть идеальная сеть для работы, но это не дешево. Мы также пытались время от времени работать с OSM, который работал нормально ... но всегда создавал некоторые проблемы и, следовательно, так и не попал в производство.

Мы также только что натолкнулись на вышеупомянутый проект GraphHopper с открытым исходным кодом (несколько недель назад) и думаем, что он имеет очень хорошую производительность и возможности. Насколько я знаю - у них также есть OSM Data, работающая в рамках их проекта.



1

Многие проблемы маршрутизации используют алгоритм Дейкстры для определения кратчайшего пути. Код относительно прост: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Также Гвидо ван Россум написал раннее эссе о графах в Python. Его короткая часть включает подход к примитивным структурам данных маршрутов и кодированию: http://www.python.org/doc/essays/graphs.html

Существует множество пакетов маршрутизации. Для конкретных географических целей, помимо pgRouting, на ум приходят Graphserver (http://bmander.github.com/graphserver/) и ESRI ArcGIS Network Analyst. Сообщество по анализу социальных сетей имеет список программного обеспечения для анализа графиков по адресу: http://www.insna.org/software/index.html и http://www.insna.org/software/software_old.html . Многие из этих пакетов имеют открытый исходный код и актуальны в географическом контексте. Для сложных, надежных или сложных вычислений стоило бы исследовать пакеты линейного программирования, такие как CPLEX и Lindo Lingo.


проблема в том, что большинству этих решений нужна система узлов и связей, и данные ГИС обычно не хранятся таким образом
dassouki

1
Сетевой аналитик стоит около 2500 долларов и не очень заинтересован в совершении такой покупки сейчас. Я бы предпочел
питонное

2
Dijjkstra для очень простой графики. Для реальных проблем, как правило, это очень тяжелый и медленный алгоритм. Кроме того, программное обеспечение ESRI, поскольку оно не является открытым исходным кодом, трудно улучшить, и его постепенно отстают в пользу других инструментов.
Мария Ариас де Рейна Домингес

@dassouki все данные ГИС - это, по сути, узлы и ссылки, а также такие инструменты, как osm2pgrouting и другие сценарии pgRouting, которые в целом преобразуют существующие ГИС / пространственные данные в необходимые узлы и ссылки и ребра, которые используются в pgRouting ...
DPSSpatial,


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.