이동 업데이트

이동 업데이트는 시간표의 변동을 나타냅니다. 예정된 모든 이동에 대한 이동 업데이트를 실시간으로 받아볼 수 있습니다. 이 업데이트는 경로상의 정류장에 대한 예상 도착 시간 또는 출발 시간을 제공합니다. 또한 이동 업데이트는 이동이 취소되거나 일정에 추가되거나 경로가 변경되는 보다 복잡한 시나리오를 제공할 수도 있습니다.

알림: 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에서 정류장의 정확한 arrivaldeparture 시간을 제공할 수 있습니다. 여기에는 절대 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입니다.