PgRouting-최대 비용에 도달 할 때 링크를 자르는 방법?


13

도로 네트워크를 나타내는 폴리 라인 쉐이프 파일과 점을 포함하는 두 번째 쉐이프 파일이 있습니다. PostGIS (아마도 PgRouting)를 사용하여이 지점에서 나오는 하위 네트워크 또는 서비스 영역을 식별하고 싶습니다.

본질적으로, 나는 "X 지점에서 시작하여 도로 네트워크를 따라 총 1km의 여행 예산을 감안할 때 주어진 방향으로 얼마나 멀리 걸을 수 있습니까?"라는 질문을하고 싶습니다. 결과는 1km의 여행 예산을 감안할 때 총 여행 가능성 범위를 나타내는 일련의 잘린 폴리 라인이됩니다.

참고로,이 GRASS 분석은 내가하고 싶은 일처럼 보입니다 (PostGIS 에서이 작업을 수행하려는 경우 제외) : http://www.gdf-hannover.de/lit_html/grass60_v1.2_en/node57.html#sec : 옵 탈록

이 다음 예제는 것으로 보인다 거의 가 질문에 대답하는 것을 제외하고, 내가하고 싶은 것을 "나는 X 거리의 여행 일정 예산에 여행 할 수 노드를?" http://underdark.wordpress.com/2011/02/12/drive-time-isochrones/

두 번째는 폴리 라인이 이동 거리에 잘 리기를 원하므로 원하는 답이 아닙니다. 노드까지 연결해도 상관 없습니다.


나에게 발생하는 한 가지 옵션은 어떻게 든 내 폴리 라인을 많은 점으로 분할하는 것입니다. 그것은 정답에 더 가까워 지지만 꽤 해키처럼 보이지만 여전히 저를 거기로 데려 가지 않습니다.
피터

답변:


2

1) driving_distance 루틴을 실행하고 2) pgRouting (alphashape 함수를 호출 함)의 "points_as_polygon"루틴을 사용하여 driving_distance 루틴의 포인트를 기준으로 주어진 비용 거리에서 가장 작은 다각형을 생성하는 것으로 생각했습니다. 보고. 그런 다음 다각형 내 모든 거리를 선택하여 일반적인 여행 아이디어를 얻을 수 있습니다.

pgRouting users list 에 대한 토론을 따르지 않았다면 최근에 더 많은 옵션을 논의한 것입니다 (2011 년 5 월 및 6 월 스레드).


1
흥미로운 사용자 목록 토론. driving_distance 함수가 잘못되었습니다.
underdark

1

이것은 실제로 그래프 문제이므로 필요한 것은 연결성 / 토폴로지 + 비용 정보입니다. pg_routing의 경우, 가장 짧은 경로 알고리즘으로 보내는 테이블입니다. 이 기사에는 빌드 방법에 대한 정보가 있습니다 (이미 이미 가지고 있다고 가정합니다). pg_routing에서 정확한 기능을 제공 할 수는 없지만 죄송합니다. 그러나 shortest_path를 계속 반복해서 호출하면 알고리즘을 반복해서 수행하고 결과를 휴지통에 버리고 있다는 것은 전혀 효율적이지 않습니다.

그런 다음 솔루션은 "걸음 목록"에 추가하고 예산 (예 : 거리)이 초과 될 때까지 비용을 계산하면서 모든면을 걷게됩니다. 예산이 허용 가능한 경우 (예 : 예산을 초과하지 않은 경우) "허용 가능한 목록 형상 백"에 형상을 추가합니다. 각 모서리를 정확히 한 번만 처리하면됩니다. 가장 마지막에있는 (예산을 초과 한 경우) 길이를 가져오고 여행하려는 정확한 거리를 보간 한 다음 결과를 "허용 가능한 목록"에 추가해야합니다. 결과는 해당 형상 가방 의 결합 입니다.


1
마지막 단계에는 미묘한 부분이 있습니다. 끝점 중 하나에서 일부 가장자리에 도달 할 수 있습니다. 이로 인해 엔드 포인트 중 하나에서 전체 모서리를 통과하면 예산 한계를 초과 하더라도 양쪽 끝에 일부 또는 전체 모서리가 포함될 수 있습니다 . 예를 들어, 단위 길이 가장자리 {(a, b), (a, c), (b, c)} 및 예산 1.6의 무 방향 그래프를 따라 지점 a에서 이동하는 것을 고려하십시오 . 당신은 1의 비용으로 b 또는 c 에 도달 할 수 있으며 , 0.6은 남게됩니다. 그러면 가장자리 (b, c)를 따라 모든 점에 액세스 할 수 있습니다.
whuber

당신은 맞습니다 :) +1
Ragi Yaser Burhum

1

"X 지점부터 시작하여 도로 네트워크를 따라 총 여행 예산이 1km 인 경우 주어진 방향으로 어느 정도 걸을 수 있습니까?"

작은 영역 (최대 1km 반경) 만 고려하면되므로, 원하는 정확도에 따라 링크를 여러 개의 작은 조각으로 분할하고 필요한 노드를 만들 수 있습니다. 결과 "고해상도"네트워크는 여전히 관리 가능해야합니다.

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