우선, 약간의 배경.
지역 교통 기관에서 일합니다. 피더 버스 서비스에 대해 "진단"하고 있습니다. 우리는 자동차를 타는 대신 버스를 타고 기차역에 갈 수있는 사용자의 비율을 알고 싶습니다. 이 과정은 여러 차례 수행되었지만 이제는 gtfs를 기본 데이터 소스로 사용하므로 방법론을 다시 생각해야합니다.
열차를 "먹이는"것으로 간주 되려면 버스 노선이 기차역에서 일정 거리 (빨간색 버퍼) 내에 정차해야합니다. 또한 버스가 열차 30 분 전에 기차역에 도착하면 대기 시간이 너무 길어 아침 20 분 더 자고 차를 타러 갈 수 있기 때문에 열차 서비스와의 동시성이 매우 중요합니다.
정류장 12에서 라인 A (파란색)를 타십시오. 정류장 13에서 버스를 내립니다. 버스는 정류장 5에 도달하는 정류장 인 정류장 13에 도착합니다. 아주 좋습니다. 1 ~ 13 정거장의 버스 노선을 이용하는 모든 사람들은 그 열차 5 분 전에 도착한다는 의미입니다.
그런 다음, 많은 학교와 교차로가있는 인구 밀집 지역을 통과하는 열차는 속도를 크게 낮추어야합니다. 그 동안 버스는 14-17 번 정류장에서 승객을 태우고 기차 10 분 전에 기차역 # 2에 도착합니다. 따라서 14 ~ 17 번 정류장에서 버스를 타는 승객은 기차역에 도착하면 대기 시간이 10 분입니다. 따라서 버스 노선을 따라 1 번에서 13 번 정류장에서 버스를 타는 승객은 5 분의 대기 시간을 가지며 14 번에서 17 번 정류장에서 버스를 타는 승객은 10 분의 대기 시간을 갖습니다.
트랙의 반대편에있는 B 라인은 1 번 기차역 근처를 통과하지만 정류장은 너무 멀어서 1 번 기차역을 "공급"하는 것을 고려하지 않습니다. 열차 7 분 전에 기차역 # 2에 도착합니다 (아침 출퇴근 시간 동안 모든 열차에 대해 운행하며 동기화가 잘되어 있습니다). 따라서 1 번 버스에서 1 번 버스에서 59 번 버스를 타는 승객은 B 라인을 따라 7 분의 대기 시간이 있습니다.
자, 내 질문입니다. LineA.13 및 LineA.17 정거장이 내 열차를 운행하고 있음을 확인한 후 (PostGIS에서 공간적으로 수행됨), # 13 이전 정거장에서 버스를 타는 대기 시간은 5 분이지만 10 분의 대기 시간, 대기 시간을 모든 정류장에 할당하려면 어떻게해야합니까?
Postgres / PostGIS (pl / pgsql 또는 pl / python)에서하고 싶지만 순수한 파이썬 (OS 또는 arcpy)도 사용할 수 있습니다.
제 생각 엔 뒤로 고리를 돌릴 수있었습니다. 따라서, 맞는 정류장 (여기서는 LineA.17)을 발견하면 16 번, 15 번까지 동일한 대기 시간을 할당 한 다음 기준에 맞는 다른 정류장을 찾은 다음 (LineA.13) 나머지는 할당하십시오. 13 번과 동일한 대기 시간
그래도 그런 루프를 만드는 방법을 모르겠습니다. SQL로 할 수 있다고 생각하지 않으므로 PostgreSQL에서 절차 언어를 사용해야합니다.
pgRouting을 사용하여 각 피더 정지 점 사이의 경로를 찾아서 A 라인이 2로 나뉘어집니다 (1 ~ 13 정거장과 13 ~ 17 정거장). 더 쉬울까요?
다음 단계는 pgRouting을 사용하여 대기 시간이있는 모든 정류장에서 운행 시간을 계산하고 (LineA.18 이상에 죄송합니다!) 버스 일정과 비교하여 경쟁력을 계산하는 것입니다 (5 소요) 차에서 버스에 몇 분 더?)
어떤 아이디어? 나는 지금까지 진행 한 노력을 보여주기 위해 오랫동안 진행중인 작업 스크립트를 게시하지만 갇혀 있습니다!