Шукаєте альтернативи pgRouting для маршрутизації / аналізу з відкритим кодом?


35

Мені було цікаво, чи є альтернативи інструментам pgRouting .

Думаючи про це трохи, я думаю, що єдиною альтернативою є використання R або RPY для аналізу.

В основному я намагаюся вирішити проблеми маршрутизації на основі баз даних nonPostGIS. Оскільки більшість моїх даних фактично зберігаються в іншому форматі; однак конвертувати це не важко. Я вважаю, що pgRouting на мій тупий нерозумний мозок важко реалізувати. Тож можливо для мене ідеальним було б рішення, яке не має баз даних

Відповіді:


21

[Редагувати: це було замінено nx_spatial, який доступний у pypi (easy_install nx_spatial). Імпорт форм- файлів тепер стандартний у мережіx 1.4 ]

Я був розчарований відсутністю геометричних мережевих інструментів у API Python GP ESRI, тому я записав щось, що завантажує форми Shapefiles та Feature Class в networkx спрямовані графіки (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

Існує Flowmap , нішевий GIS-пакет, розроблений для вирішення проблем аналізу мережі.

Якщо у вас досить простий варіант використання, квантовий навігатор на основі QGIS може зробити цю справу.

GRASS також підтримує мережевий аналіз , хоча, можливо, не варто тертя щодо налаштування речей всередині середовища.


4

Якщо ви шукаєте програмне пітонічне рішення, погляньте на мережуx


Будь-які бібліотеки для переходу .shpна мережуx? Я міг би сам побудувати його в Python, але я б не намагався винаходити колесо ...
fmark

4
Це не зовсім 1: 1, оскільки shapefiles зберігає дані як прості функції, а не топологічні мережі. Тому потрібно спочатку знати / припустити деякі речі з набору даних джерела - насамперед, що всі перетини є кінцевими вузлами для рядкової лінії. Ось приклад використання geodjango для перетворення простих функцій в графік networkx: code.google.com/p/marinemap/source/browse/lingcod/spacing/…
perrygeo

3

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


Я поручую GraphHopper, оскільки це дуже просто в налаштуванні та використанні.
bugmenot123



2

Ми також робили кілька досліджень в останні роки, але ми все ще задоволені pgRouting і вважаємо, що це найкраще рішення для наших потреб у GIS-маршрутизації. На жаль, все, що я знаю, не так багато (без того, щоб платити тисячі євро / доларів). Ми працюємо з Navtech -Data, яка має ідеальну мережу для роботи, але не з дешевих. Ми також час від часу намагалися працювати з ОСМ, яка працювала в порядку ... але завжди створювала деякі проблеми і тому ніколи не вступала у виробництво.

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



1

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

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

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


проблема полягає в тому, що для більшості цих рішень потрібна система вузлів і посилань, а дані GIS зазвичай не зберігаються таким чином
dassouki

1
Мережевий аналітик коштує близько 2500 доларів і зараз не дуже зацікавлений у здійсненні такої покупки. Я вважаю за краще пітонічне рішення
dassouki

2
Dijjkstra призначений для дуже базової графіки. Для проблем з реальним життям, як правило, це дуже важкий і повільний алгоритм. Також програмне забезпечення ESRI, оскільки воно не є відкритим джерелом, важко вдосконалити і повільно залишається на користь інших інструментів.
María Arias de Reyna Domínguez

@dassouki всі дані GIS - це по суті вузли та посилання, а такі інструменти, як osm2pgrouting, та інші сценарії pgRouting в цілому перетворюють наявні GIS / просторові дані в необхідні вузли та посилання та краї, які використовуються в pgRouting ...
DPSSpatial


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.