2014-05-27 11 views
0

강가의 네트워크 shapefile을 가지고 있고 그것을 라우팅하기 위해 pgRouting 2.0을 사용합니다. 나는pgRouting 소스와 타겟의 수를 할당하십시오.

alter table tc_15000_w_area add column source integer; 
alter table tc_15000_w_area add column target integer; 
select pgr_createTopology('tc_15000_w_area', 0.0001, 'the_geom', 'gid'); 

내가 원하는 모든 라우팅 테이블이 소스/대상 및 대상에 대한 모든 소스에서 방향을 포함이다 강의 방향과 같은, 그것은 라우팅하기 위해 다음과 같은 SQL 코드를 사용합니다. 여기 회로도 사진,

enter image description here

보라색 라인은

빨간 점은 노드 (정점)이다 강

가요 빨간색 숫자는 노드의 숫자

모든 하천 구간은 그 출처 (노드)와 타깃을 가지고있다.

하지만 결과 테이블을 확인하면 노드 # 11이 항상 대상임을 알 수 있습니다. 이렇게하면 가장자리 중 하나 이상이 잘못된 방향 (흐름 방향)을 갖게됩니다.

enter image description here

는 pgRouting이 나는 서로 다른 공차를 사용했다?

무엇을 할 수 있는지? 그렇지 않다면, 흐름 방향과 동일을 대상으로 소스에서 방향을 소스 및 대상의 번호를 지정하고 만들 수 sql 코드와 같은 결과를 얻었지만 PostgreSQL 8.4에서 pgRouting 버전 1.x를 사용하여 동일한 결과를 얻었습니다.

답변

0

공차는 단일 점으로 병합 될 두 점 사이의 최소 거리를 정의합니다. 예를 들어 두 점이 있고 그 사이의 거리가 허용 오차보다 작 으면 동일한 점으로 간주되어 동일한 수로 지정됩니다.

pgr_createtopology()를 실행하기 전에 지오메트리 테이블에 에지 세그먼트를 지정하면 흐름 방향을 어떻게 알 수 있습니까? 디지털화의 방향에 따라? 우리는 숫자를 할당 할 때 이것을 보지 않습니다. 우리가 가장자리를 처리 할 때 첫 번째로 할당 된 기준으로 번호가 지정됩니다.

문제를 해결하기 위해, 당신은 아마 이런 식으로 뭔가 작동하는 노드 넘버링 알고리즘을 작성해야합니다 : 네트워크 싱크에서 1. 실행 pgr_createtopology() 2 (예 : 강 네트워크의 드레인) 않는 깊이 우선 탐색을 수행하고 역순으로 번호를 할당합니다 (배수관에서 최대, 상류로 이동하면 작음).

이 경우 새 노드 소스 및 대상 열을 만들 것입니다. 이 문제를 해결할 수있는 더 좋은 방법이있을 수 있지만 현재로서는 분명하지 않습니다.

+0

모든 가장자리의 위치를 ​​알고 있다면 흐름 방향에 따라 "원본 -> 대상"방향을 확인할 수 있습니다. 그래서 기본적인 문제는 꼭지점에 할당 된 pgRouting 수에 관한 것이 아니라 할당 된 꼭지점을 소스 (또는 타겟) pgRouting의 역할에 관한 것입니다. – Heinz

+0

pgr_createtopology()를 사용하여 원하는대로 번호를 할당 할 수 있습니다. 당신이 찾고있는 것은 위에서 설명한 그래프 분석 알고리즘의 결과입니다. 단일 에지로 문제를 단순화 할 수 있습니다. 이 가장자리에 숫자를 어떻게 할당합니까? 어느 쪽이 소스이고 어느 쪽이 싱크/드레인입니까? –

+0

게시물이이 문제를 해결 한 것 같습니다 (http : // dirkraffel).co.kr/2011/09/06/fixed-wrong-direction-of-segments-of-pgrouting-output/# comments 그러나 게시글의 코드가 drive_distance 함수에 의해 사용될 수 있는지 여부는 알 수 없습니다. 소스와 타겟의 수를 재 할당 하시겠습니까? – Heinz