오픈 소스 라우팅 / 네트워크 분석을위한 pgRouting의 대안을 찾고 있습니까?


35

pgRouting 도구에 대한 대안이 있는지 궁금합니다 .

그것에 대해 조금 생각하면, 유일한 대안은 R 또는 RPY를 사용하여 분석을 수행하는 것입니다.

기본적으로 PostGIS 이외의 데이터베이스를 기반으로 라우팅 문제를 해결하려고합니다. 내 데이터의 대부분은 실제로 다른 형식으로 저장됩니다. 그러나 변환하기가 어렵지 않습니다. 바보 같은 두뇌에 대한 pgRouting을 구현하기가 어렵다는 것을 알고 있습니다. 따라서 쉽게 조정할 수있는 비 데이터베이스 솔루션이 나에게 이상적 일 것입니다.

답변:


21

[편집 : 이것은 pypi (easy_install nx_spatial)에서 사용 가능한 nx_spatial 로 대체되었습니다 . shapefile 가져 오기는 이제 networkx 1.4 에서 표준입니다 ]

ESRI의 Python GP API에 기하학적 네트워크 도구가 없기 때문에 실망했습니다. 그래서 Shapefiles 및 Feature Classs 를 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

네트워크 분석 문제를 처리하도록 설계된 틈새 GIS 패키지 인 Flowmap 이 있습니다.

상당히 간단한 유스 케이스가있는 경우 QGIS 기반 Quantum Navigator 가 트릭을 수행 할 수 있습니다.

GRASS는 네트워크 분석 도 지원 하지만 환경 내부에 설정하는 데 따른 마찰은 가치가 없습니다.


4

프로그래밍 방식의 파이 토닉 솔루션을 찾고 있다면 networkx를 살펴보십시오.


.shpnetworkx 로가는 라이브러리가 있습니까? 파이썬으로 직접 만들 수는 있지만 바퀴를 재발 명
하지는 않습니다

4
shapefile은 토폴로지 네트워크가 아닌 간단한 기능으로 데이터를 저장하기 때문에 정확히 1 : 1 일치하지 않습니다. 따라서 소스 데이터 셋에 대해 먼저 알아야 할 사항이 있습니다. 주로 모든 교차점이 선 스트링의 터미널 노드입니다. 다음은 geodjango를 사용하여 간단한 기능을 networkx 그래프로 변환하는 예입니다. code.google.com/p/marinemap/source/browse/lingcod/spacing/…
perrygeo

3

빠르고 유연한 경로 플래너 인 오픈 소스 GraphHopper 프로젝트를 살펴볼 수 있습니다 . 여기서 사용해보십시오 . 참고 : 저는 저자입니다


GraphHopper는 설정 및 사용이 매우 간단하므로 보증합니다.
bugmenot123



2

우리는 또한 지난 몇 년 동안 약간의 연구를 수행했지만 pgRouting에 여전히 만족하고 있으며 GIS 라우팅 필요에 가장 적합한 솔루션이라고 생각합니다. 불행히도 내가 아는 것은 많지 않습니다 (수천 유로 / 달러를 지불하지 않아도 됨). 우리는 Navtech -Data 와 협력하는데 , 이는 완벽한 네트워크를 가지고 있지만 저렴하지는 않습니다. 우리는 또한 정상적으로 작동하는 OSM으로 때때로 시도했지만 항상 문제를 일으켰으므로 결코 생산에 들어 가지 않았습니다.

우리는 또한 위에서 언급 한 오픈 소스 GraphHopper 프로젝트 (몇 주 전)를 보았고 성능과 가능성이 매우 우수하다고 생각합니다. 내가 아는 한, 그들은 또한 프로젝트 내에서 OSM 데이터를 실행하고 있습니다.



1

많은 라우팅 문제는 Dijkstra의 알고리즘을 사용하여 최단 경로를 결정합니다. 코드 작성은 비교적 간단합니다. http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

또한 귀도 반 로섬 (Guido van Rossum)은 파이썬의 그래프에 대한 초기 에세이를 썼습니다. 그의 짧은 작품에는 기본 경로 데이터 구조 및 코딩에 대한 접근 방식이 포함됩니다. 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.htmlhttp://www.insna.org/software/software_old.html 에 그래프 분석 소프트웨어 목록이 있습니다. 이러한 패키지 중 다수는 오픈 소스이며 지리적으로 관련이 있습니다. 고도로 정교하고 강력하거나 복잡한 계산을 위해서는 CPLEX 및 Lindo Lingo와 같은 선형 프로그래밍 패키지를 조사해 볼 가치가 있습니다.


문제는 이러한 솔루션의 대부분이 노드와 링크 시스템을 필요로하고 GIS 데이터는 일반적으로 그렇게 저장되지 않는다는 것입니다.
dassouki

1
네트워크 분석가는 약 2,500 달러이며 지금은 그러한 구매에 관심이 없습니다. 나는 오히려 pythonic 해결책을 갖고 싶다
dassouki

2
Dijjkstra는 매우 기본적인 그래픽을위한 것입니다. 실제 문제의 경우 일반적으로 매우 무겁고 느린 알고리즘입니다. 또한 ESRI 소프트웨어는 오픈 소스가 아니기 때문에 개선하기가 어렵고 다른 도구를 선호하여 서서히 남겨지고 있습니다.
María Arias de Reyna Domínguez '12

@dassouki 모든 GIS 데이터는 기본적으로 노드 및 링크이며 osm2pgrouting과 같은 도구 및 기타 pgRouting 스크립트는 일반적으로 기존 GIS / 공간 데이터를 pgRouting에 사용되는 필수 노드 및 링크 및 에지로 변환합니다 ...
DPSSpatial


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.