경로 업데이트는 일정의 변동을 나타냅니다. 예정된 모든 경로에 대한 경로 업데이트를 실시간으로 받아볼 수 있습니다. 이 업데이트는 경로상의 정류장 예상 도착 시간 또는 출발 시간을 제공합니다. 또한 경로 업데이트는 일정에서 경로가 취소되거나 추가되거나 경로가 변경되는 보다 복잡한 시나리오를 제공할 수도 있습니다.
알림: GTFS에서 경로는 특정 기간에 정류장 2곳 이상을 순차적으로 이동하는 경우에 주어집니다.
예정된 각 경로에 대해 최대 하나의 경로 업데이트가 있어야 합니다. 예정된 경로에 대한 경로 업데이트가 없는 경우 해당 경로에 대한 실시간 데이터가 없는 것으로 간주합니다. 데이터 사용자는 이동이 일정에 따라 진행되고 있다고 가정하지 않아야 합니다
정차 시간 업데이트
경로 업데이트는 StopTimeUpdate
메시지라고 하는 차량 정차 시간에 대한 하나 이상의 업데이트로 구성됩니다. 이는 과거 및 미래의 정차 시간에 대해 제공될 수 있습니다. 과거 정차 시간을 삭제할 수 있지만 반드시 그럴 필요는 없습니다. 주어진 이동에서 앞으로 예정된 도착 시간이 있는 정류장인 경우(즉, 차량이 일정보다 먼저 정류장을 지나간 경우) 이전 StopTimeUpdate
를 삭제하지 않아야 합니다. 삭제하면 이 정류장에 대한 업데이트가 없는 것으로 간주됩니다.
예를 들어 GTFS-rt 피드에 다음 데이터가 나타나는 경우:
- 정류장 4: 10:18am에 예측됨(10:20am에 예정됨, 2분 먼저)
- 정류장 5: 10:30am에 예측됨(10:30am에 예정됨, 정시)
...버스가 실제로 10:18am에 정류장을 통과하더라도 10:21am까지는 정류장 4에 대한 예측 시간을 피드에서 삭제할 수 없습니다. 10:18am 또는 10:19am에 정류장 4에 대한 StopTimeUpdate
가 삭제되고 예정된 도착 시간이 10:20am인 경우, 해당 시간에 정류장 4에 대한 실시간 정보가 없다고 가정하고 GTFS의 일정 데이터를 사용해야 합니다.
각 StopTimeUpdate
는 정류장과 연결됩니다. 대개 GTFS stop_sequence
또는 GTFS stop_id
를 사용하여 이 작업을 처리할 수 있습니다. 그러나 GTFS trip_id
가 없는 경로에 대한 업데이트를 제공하는 경우 stop_sequence
에 값이 없으므로 stop_id
를 지정해야 합니다. stop_id
는 GTFS의 stop_id
를 계속 참조해야 합니다. 경로상에 동일한 stop_id
를 두 번 이상 방문하면 해당 경로에서 stop_id
에 대한 모든 StopTimeUpdate
메시지에 stop_sequence
가 제공되어야 합니다.
이 업데이트는 StopTimeEvent
를 사용하여 StopTimeUpdate
에서 정류장의 정확한 arrival
및 departure
시간을 제공할 수 있습니다.
여기에는 절대 time
또는 delay
(예: 초 단위의 예정된 시간 오프셋)가 포함되어야 합니다. delay
필드는 빈도 기반 경로와 달리 경로 업데이트가 예정된 GTFS 경로를 가리키는 경우에만 사용할 수 있습니다. 이 경우 시간은 예정된 시간 + 지연 시간과 동일해야 합니다. StopTimeEvent
와 함께 예측의 uncertainty
를 지정할 수도 있습니다. 이에 대해서는 페이지 하단의 불확실성 섹션에서 자세히 설명합니다.
각 StopTimeUpdate
에 대해 기본 일정 관계는 scheduled
입니다. 이는 경로에 대한 일정 관계와 다릅니다. 정류장에서 정차하지 않은 경우 skipped
로 변경할 수 있고 일부 이동에 대한 실시간 데이터만 있는 경우 no data
로 변경할 수 있습니다.
업데이트는 stop_sequence
(또는 경로상에서 발생하는 순서대로 stop_ids
)에 따라 정렬해야 합니다.
경로에서 하나 이상의 정류장이 누락된 경우 업데이트가 모든 후속 정류장에 전달됩니다. 즉, 특정 정류장에 대한 정차 시간을 업데이트하면 다른 정보가 없는 경우 모든 후속 정류장이 변경됩니다.
예 1
정류장이 20개인 경로의 경우 StopTimeUpdate
에서 현재 정류장의 stop_sequence
에 대한 도착 지연 및 출발 지연이 0
(StopTimeEvent
)이면 이동이 정확히 일정에 따라 진행되고 있음을 의미합니다.
예 2
동일한 이동 인스턴스의 경우 3개의 StopTimeUpdate
메시지가 제공됩니다.
stop_sequence
3의 경우 300초 지연stop_sequence
8의 경우 60초 지연stop_sequence
10의 경우 지연 시간 미지정
이는 다음과 같이 해석됩니다.
stop_sequence
메시지 1, 2의 지연 시간은 알 수 없습니다.stop_sequence
메시지 3, 4, 5, 6, 7의 지연 시간은 300초입니다.stop_sequence
메시지 8, 9의 지연 시간은 60초입니다.stop_sequence
메시지 10,.., 20의 지연 시간은 알 수 없습니다.
경로 설명어
경로 설명어에서 제공되는 정보는 업데이트 중인 경로의 일정 관계에 따라 다릅니다. 다음과 같은 다양한 옵션을 설정할 수 있습니다.
값 | 설명 |
---|---|
Scheduled |
GTFS 일정에 따라 운행되거나 연결될 경로와 가장 유사한 경로입니다. |
Added |
예정되지 않았지만 추가된 경로입니다. 예를 들어 수요에 대처하거나 부서진 차량을 교체하는 경우입니다. |
Unscheduled |
운행 중이지만 일정과 관련이 없는 경로입니다. 예를 들어 일정이 없고 셔틀 서비스로 버스가 운행되는 경우입니다. |
Canceled |
예정되었지만 지금은 삭제된 경로입니다. |
대부분의 경우 이 업데이트와 관련된 GTFS에서 예정된 경로의 trip_id
를 제공해야 합니다.
trip_id 값이 반복되는 시스템
trip_id
값을 반복해서 사용하는 시스템(예: frequencies.txt
를 사용하여 모델링된 경로)은 빈도 기반 경로이므로 trip_id
자체는 특정 시간 구성 요소가 없기 때문에 단일 여정의 고유 식별자가 아닙니다.
TripDescriptor
내에서 이러한 경로를 고유하게 식별하려면 세 가지 식별자를 제공해야 합니다.
trip_id
start_time
start_date
start_time
이 먼저 게시되어야 하고 이후의 피드 업데이트는 동일한 여정을 언급할 때 동일한 start_time
을 사용해야 합니다. 조정을 표시하려면 StopTimeUpdate
를 사용해야 합니다. start_time
은 첫 번째 역의 출발 시간과 매우 가까울지라도 해당 시간과 정확하게 일치할 필요는 없습니다.
예를 들어 2015년 5월 25일 10:00에 trip_id=T
인 경로를 start_time=10:10:00
에 시작하기로 결정하고 10:01에 실시간 피드를 통해 이 정보를 제공한다고 가정해 보겠습니다. 10:05에 갑자기 이동이 10:10이 아닌 10:13에 시작한다는 사실을 알게 될 경우, 새로운 실시간 피드에서 이 경로를 (T, 2015-05-25, 10:10:00)
으로 식별할 수 있지만 첫 번째 정류장의 출발 시간이 10:13:00인 StopTimeUpdate
를 제공합니다.
대체 경로 일치
빈도를 기반으로 하지 않는 경로는 다음 조합을 포함한 TripDescriptor
로 고유하게 식별할 수 있습니다.
route_id
direction_id
start_time
start_date
제공된 id의 조합으로 고유한 경로를 식별하는 경우 start_time
은 정적 일정에 정의된 예정된 시작 시간입니다.
불확실성
불확실성은 StopTimeUpdate
의 시간 값과 지연 값 모두에 적용됩니다.
불확실성은 실제 지연에서 예상되는 오류를 정수(초)로 대략적으로 지정합니다(단, 정확한 통계적 의미는 아직 정의되지 않았음). 예를 들어 컴퓨터 타이밍 제어에 따라 구동되는 열차의 경우 불확실성이 0
일 수 있습니다.
예를 들어 4분(즉, +2/-2분)의 오류 범위 내에서 다음 정류장에 15분 지연되어 도착할 것으로 예측되는 장거리 버스는 uncertainty
값이 240
입니다.