적절한 라우팅 엔진을 선택하도록 도와주세요


16

경로 계획 시스템을 구축하고 있지만 여전히 사용할 기본 라우팅 엔진을 결정해야합니다. 지금까지 나는 pgrouting과 neo4j를 발견했습니다.

postgresql / postgis 데이터베이스 (도형 파일에서 가져옴)에 경로 네트워크가 있습니다. 나는 노드 (가는 방향이나 막 다른 방향을 결정 해야하는 방법의 종점)를 추출하고 가장자리를 추출하는 쿼리를 만들었습니다 (종종 여러 가지 연속적인 방법으로 구성됨). 내 모든 가장자리는 양방향입니다.

나의 주요 목표는 거리 = 비용 인 A-star 알고리즘을 사용하여이 네트워크에서 경로를 계산하는 것입니다.

내 느낌은 neo4j와 같은 그래프 데이터베이스가 갈 수있는 방법이라고 말하지만 (이 목적을 위해 만들어진 것처럼) 기본적으로 A-star를 지원하지 않으며 기하학의 실제 감각이 없습니다. . 지도 대신 소셜 네트워크에 더 적합합니다.

  • pgrouting이 내 요구를 충족시킬 수 있습니까?
  • 즉석 쿼리 (+ -2000 노드, + -4000 에지)에 충분한 속도입니까? 일반적으로 이것은 A-star의 경우 몇 ms이지만 SQL 에서이 구현에 대해 확신이 없습니다.
  • pgrouting A-star는 노드와 모서리의 목록을 제공합니까?
  • 대부분의 예에서 pgrouting에 대해 알 수 있습니다. 일반적으로 경로 계산 후 "X에서 좌회전 할 때 등"과 같은 명령 목록이 있습니다. pgrouting이 이것을 생성합니까 아니면 다른 시스템에서 생성합니까?

바라건대 누군가가 어떤 시스템을 선택할지에 대한 정보를 줄 수 있기를 바랍니다. Neo4j, pgrouting 또는 다른 시스템.


3
대부분의 라우팅 알고리즘은 "지오메트리 감지"로 작동하지 않고 기하학적 속성이 계산되어 비용으로 사용됩니다 (즉, 폴리 라인의 거리 측정). 나는 Neo4j를 사용한 적이 없지만 실제로 가능해 보이며 곧 사용할 수 있습니다. 방금 설명서를 살펴 보았고 A-Star를 사용하는 것이 가능해 보입니다. docs.neo4j.org/chunked/stable/graph-algo.html docs.neo4j.org/chunked/stable/… pgRouting도 가능합니다. 나는 그것을 좋아하는 팬입니다. 이 두 솔루션의 성능을 비교하는 것이 흥미로울 것입니다.
Allan Adair

먼저, urbansim 을 오픈 소스 토지 이용 모델 로 살펴볼 것을 제안합니다 . 라우팅 질문에 관해서는, 이것이 계획 응용 프로그램 인 경우 TransCAD, CUBE, PLANAR 또는 EMME / 2와 같은 소프트웨어를 기능 및 사용자 인터페이스에 대해 먼저 살펴 보는 것이 좋습니다. 그들은 일반적으로 소프트웨어의 1 시간 또는 2 시간 데모 CD를 제공합니다 (소프트웨어는 한 두 시간 동안 실행하여 느낌을 얻습니다). 온라인 또는 데스크탑 용으로 무언가를 구축하려면 pgRouting을보십시오. 그러나 경험상 때로는 워크숍 / 자습서가 그것을 묘사하는 것만 큼 쉽지 않습니다.
dassouki

나는 별 작업과 pgrouting있어 그리고 그것은 굉장하다! 첫 세 질문에 예라고 대답합니다. 아직도 여기 누군가가 자세한 탐색 방향 생성에 대해 알고 있는지 궁금합니다. 계산 된 경로의 출력에서 ​​자세한 방향 ( "200m 회전 후 등")을 생성하는 pgrouting과 협력하는 툴링이 있습니까?
mrg

답변:


8

나는 현재 연구 논문의 목적으로 당신과 같은 문제를 탐구하고 있습니다. 이 두 데이터베이스의 테스트를 시작하기 전에 귀하와 동일한 추정이있었습니다. Neo4j 그래프 데이터베이스는 이런 종류의 문제에 대한 완벽한 솔루션입니다. 그리고 부분적으로는 문제가 있지만 많은 문제가 있습니다.

첫 번째 문제는 A-Star가 REST API (서버)가 아닌 내장 데이터베이스를 사용하는 경우에만 구현된다는 것입니다. REST API와 함께 Neo4j를 사용하려는 경우 Dijkstra 알고리즘 만 지원됩니다. 두 번째 문제는 Neo4j의 하드웨어 메모리 요구 사항입니다. "더 큰"네트워크에서 라우팅 (Dijkstra)하려면 많은 RAM이 필요합니다. 대규모 네트워크의 경우 독일 OSM 도로 데이터베이스의 크기와 같은 것을 의미 합니다. 6GB RAM 서버 (현재는 전부 임)에서 테스트를 실행했으며 OutOfMemory 예외 오류없이 더 작은 네트워크 만 라우팅 할 수 있습니다. 필자의 테스트 사례에서 "작은"네트워크는 예를 들어 오스트리아 또는 크로아티아의 OSM 도로 데이터베이스입니다. 동시 쿼리는 여전히 Neo4j로 테스트하지 않았습니다.

이 모든 문제가 pgRouting에 존재하지 않습니다. 메모리는 그러한 문제가 아니지만 동시 쿼리는 필요한 메모리 양을 증가시킵니다. 예를 들어, 동시 요청이 두 개인 경우 두 배의 메모리가 필요합니다. 이것은 모든 동시 요청에 아무런 문제없이 pgRouting이 라우팅 된 독일 OSM 데이터 셋에서도 문제가되지 않았습니다.

성능 : 대부분의 경우 Neo4j가 pgRouting보다 성능이 우수합니다. 그러나 주어진 데이터 세트에 충분한 메모리가 있고 모든 노드와 관계가 메모리에있는 경우에만 (핫 스타트). 성능의 증가 / 감소는 많은 요인에 따라 다르지만 주로 소스와 대상 노드 사이의 네트워크 크기 및 거리 (홉)에 따라 다릅니다.

네트워크 크기가 매우 작으므로 메모리에 아무런 문제가 없습니다. 아마도 Neo4j는 나쁜 선택은 아니지만 표준 관계 데이터베이스와는 다른 "작은"데이터 모델에 적응해야합니다.

질문에 대답하려면 :

  • pgRouting에서는 이미 구현 된 SQL의 AStar 구현에 대해 걱정할 필요가 없습니다.
  • 예, pgRouting은 노드 및 에지 목록을 제공 할 수 있습니다
  • pgRouting이 쿼리에 대한 사용자 정의 작업없이 그러한 정보를 제공 할 수 있다고 생각하지 않습니다. 그러나 내가 틀렸을 수도 있고, 누군가이 작업을 수행했을 수도 있고이 질문에 대해 더 많은 도움을 줄 수도 있습니다.

그것이 당신에게 직접 도움이되는지 모르겠지만, 내가 찾은 가장 빠른 라우팅 서버 중 하나는 osm2po 입니다. OSM 데이터 세트와 함께 작동하며 매우 빠릅니다. 현재 dijkstra 만 구현되었지만 개발자는 AStar도 발표했습니다. 이 중 일부가 도움이되기를 바랍니다. :)


실제로 두 시스템을 모두 테스트 한 사람의 의견을 듣는 것이 좋습니다. 한편 나는 pgrouting에 대해 더 많은 경험을 가지고 있습니다. pgrouting이 각 쿼리에 대해 전체 그래프를 작성하고 큰 네트워크 (독일 크기)의 경우 다소 느리게 만드는 것을 알았으므로 pgrouting이 Neo4j보다 적은 메모리를 필요로하는 이유를 알 수 없습니다. 다음 시도는 실시간 라우팅에 대한 빠른 응답을 보장하기 위해 전체 그래프를 램에서 정적 상태로 가져오고 (neo4j, nx_spatial 등을 사용하여) 라우팅하는 것입니다.
mrg

예, 그래프가 클수록 pgrouting과 neo4j의 차이가 더 큽니다. 아마도 전체 그래프를 가장 빠른 솔루션보다 메모리에 넣으면 그것에 대해 의문의 여지가 없습니다. Neo4j는 모든 그래프가 메모리에로드 될 때 매우 빠릅니다. nx_spatial에 대해 모르지만 테스트하지는 않았지만 아마도 그럴 것입니다. Neo4j보다 성능이 우수하다고 생각합니다. 그러나이 솔루션은 응용 프로그램에 적합하면 좋습니다.
마리오 밀러

1
@mrg 여전히 여전히 문제인지 확실하지 않지만 OSRM (C ++) 및 GraphHopper (Java)가 있습니다. 세계적인 그래프로 확장 가능, 예를 들어 GraphHopper는 독일의 경우 1GB 미만이 필요합니다 (저는 저자)
Karussell

Karussell, 정보 주셔서 감사합니다! 이미 OSRM을 찾았지만 GraphHopper가 처음입니다.
mrg

0

RW Net 4 패키지 (www.routeware.dk)도 볼 수 있습니다. SHP 파일에서 직접 A *를 사용하여 최단 경로 계산을 수행 할 수 있습니다. € 500의 기본 패키지는 귀하의 필요에 충분한 것으로 보입니다.


귀하의 빠른 답변에 감사드립니다. 그러나 제 프로젝트는 아직 돈을 지출 할 필요가 있는지 아직 확실하지 않습니다. 또한 나는 데이터에 대한 pgrouting을 얻었으므로 지금은 알 수없는 문제가 해결되었습니다.
mrg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.