Szukasz alternatywy dla pgRouting dla routingu / analizy sieci typu open source?

35

Zastanawiałem się, czy istnieją jakieś alternatywy dla narzędzi pgRouting .

Myśląc o tym przez chwilę, myślę, że jedyną alternatywą jest użycie R lub RPY do wykonania analizy.

Zasadniczo próbuję rozwiązać problemy z routingiem w oparciu o bazy danych inne niż PostGIS. Ponieważ większość moich danych jest faktycznie przechowywana w innym formacie; jednak nie jest to trudne do konwersji. Uważam, że pgRouting do mojego głupiego, głupiego mózgu jest trudny do wdrożenia. Być może idealne byłoby dla mnie rozwiązanie nie będące bazą danych, które można łatwo ulepszyć

dassouki
źródło

Odpowiedzi:

21

[Edycja: zostało to zastąpione przez nx_spatial, który jest dostępny z pypi (easy_install nx_spatial). Importowanie plików kształtów jest teraz standardem w Networkx 1.4 ]

Byłem trochę rozczarowany brakiem geometrycznych narzędzi sieciowych w API ESRI Python GP, ​​więc napisałem coś, co ładuje pliki Shapefile i Klasy Cech do grafów kierunkowych networkx (DiGraphs).

Nadal jest w toku, ale może być dobrym punktem wyjścia do czegoś, co może pomóc w rozwiązaniu problemu.

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

Próbki:

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]

Sieć dziedziczy po networkx.DiGraph, więc cała ta funkcjonalność jest dostępna.

bwreilly
źródło
11

Chociaż wątek jest nieco stary, chciałem dodać kilka linków na temat routingu, na wypadek gdyby ktoś skończył tutaj tak jak ja:

María Arias de Reyna Domínguez
źródło
5

Istnieje Flowmap , niszowy pakiet GIS przeznaczony do rozwiązywania problemów z analizą sieci.

Jeśli masz dość prosty przypadek użycia, Quantum Navigator z QGIS może załatwić sprawę .

GRASS obsługuje również analizę sieci , choć może nie być warte wysiłku związanego z konfiguracją środowiska.

scw
źródło
4

Jeśli szukasz programowego rozwiązania pythonowego, spójrz na networkx

perrygeo
źródło
Jakieś biblioteki do przejścia z .shpsiecix? Mógłbym sam go zbudować w Pythonie, ale chciałbym wymyślić koło na nowo ...
fmark
4
Nie jest to dokładnie dopasowanie 1: 1, ponieważ pliki kształtu przechowują dane jako proste funkcje, a nie sieci topologiczne. Musisz najpierw wiedzieć / zakładać pewne rzeczy o źródłowym zbiorze danych - przede wszystkim, że wszystkie skrzyżowania są węzłami końcowymi dla oznaczenia linii. Oto przykład użycia geodjango do konwersji prostych funkcji w graf sieciowy: code.google.com/p/marinemap/source/browse/lingcod/spacing/…
perrygeo
3

Możesz zajrzeć do projektu GraphHopper o otwartym kodzie źródłowym - szybkiego i elastycznego planowania trasy. Wypróbuj tutaj . Uwaga: jestem autorem

Karussell
źródło
Gwarantuję GraphHopper, ponieważ jest bardzo prosty w konfiguracji i obsłudze.
bugmenot123,
2

Możesz także rzucić okiem na narzędzia z RouteWare . Długie doświadczenie i brak powiązań z bazą danych

Uffe Kousgaard
źródło
2

W ostatnich latach przeprowadziliśmy również badania, ale nadal jesteśmy zadowoleni z pgRouting i uważamy, że jest to najlepsze rozwiązanie dla naszych potrzeb GIS-Routing. Niestety niewiele wiem o tym (bez konieczności płacenia tysięcy euro / dolarów). Współpracujemy z Navtech -Data, która ma idealną sieć do pracy, ale nie jest tania. Od czasu do czasu próbowaliśmy również z OSM, który działał OK ... ale zawsze powodował pewne problemy i dlatego nigdy nie wszedł do produkcji.

Właśnie natrafiliśmy na wspomniany wyżej projekt GraphHopper o otwartym kodzie źródłowym (kilka tygodni temu) i myślimy, że ma on bardzo dobrą wydajność i możliwości. O ile mi wiadomo - w swoim projekcie działają także dane OSM.

Leole
źródło
1

Wiele problemów z routingiem wykorzystuje algorytm Dijkstry do określenia najkrótszej ścieżki. Kod jest względnie prosty: http://en.wikipedia.org/wiki/Dijkstra%27s_alameterm

Guido van Rossum napisał także wczesny esej na temat grafów w Pythonie. Jego krótki artykuł zawiera podejście do prymitywnych struktur danych tras i kodowania: http://www.python.org/doc/essays/graphs.html

Istnieje wiele pakietów routingu. Do celów geograficznych, oprócz pgRouting, przychodzi na myśl także serwer grafów (http://bmander.github.com/graphserver/) i ESRI ArcGIS Network Analyst. Społeczność analizująca sieci społecznościowe posiada listę oprogramowania do analizy wykresów pod adresem : http://www.insna.org/software/index.html i http://www.insna.org/software/software_old.html . Wiele z tych pakietów jest typu open source i ma znaczenie w kontekście geograficznym. W przypadku wysoce wyrafinowanych, solidnych lub złożonych obliczeń warto zbadać pakiety programowania liniowego, takie jak CPLEX i Lindo Lingo.

glennon
źródło
problem polega na tym, że większość z tych rozwiązań wymaga systemu węzłów i łączy, a dane GIS zwykle nie są przechowywane w ten sposób
dassouki,
1
Analityk sieci kosztuje około 2500 USD i nie jest tak naprawdę zainteresowany zakupem tego typu. Wolałbym mieć rozwiązanie
pytoniczne
2
Dijjkstra jest dla bardzo podstawowej grafiki. W przypadku rzeczywistych problemów zwykle jest to bardzo ciężki i powolny algorytm. Ponadto oprogramowanie ESRI, ponieważ nie jest otwarte, jest trudne do ulepszenia i powoli pozostaje w tyle za innymi narzędziami.
María Arias de Reyna Domínguez,
@dassouki wszystkie dane GIS to w zasadzie węzły i łącza, a narzędzia takie jak osm2pgrouting i inne skrypty pgRouting w ogóle, przekształcają istniejące dane GIS / dane przestrzenne w niezbędne węzły i łącza i krawędzie, które są używane w pgRouting ...
DPSSpatial
1

W wydaniu Alpha, ale wygląda obiecująco:

GeoDaNet (Alpha) - Analiza wzoru przestrzennego punktu w sieci (na podstawie biblioteki PySAL Ptyhon, uzyskanej w centrum GeoDa).

( Slajdy , instrukcja , pobieranie ).

radek
źródło