오픈 소스 라우팅 / 네트워크 분석을위한 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.html 및 http://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.