GTFS Realtime 참조

GTFS Realtime 피드를 사용하면 대중교통 기관이 사용자에게 서비스 중단(폐쇄된 역, 운행하지 않는 라인, 중요한 지연 등), 차량 위치 및 예상 도착 시간에 대한 실시간 정보를 제공할 수 있습니다.

이 사이트에서는 피드 사양 버전 2.0을 다루고 관련 내용을 문서화합니다.

용어 정의

필수

GTFS-realtime v2.0 이상에서 필수 열은 대중교통 데이터가 유효하고 애플리케이션에 적합하도록 제작자가 제공해야 하는 입력란에 대해 설명합니다.

필수 입력란에서는 다음 값이 사용됩니다.

  • 필수: 이 입력란은 GTFS-realtime 피드 제작자가 제공해야 합니다.
  • 조건부 필수: 이 입력란은 설명입력란에 설명된 특정 조건일 때만 필수 항목입니다. 해당 조건 이외의 경우에는 선택사항입니다.
  • 선택사항: 이 입력란은 선택사항으로 제작자가 반드시 구현할 필요가 없습니다. 그러나 기본 자동 차량 위치 시스템(예., VehiclePosition timestamp)에서 데이터가 제공되는 경우 가능하면 제작자가 이러한 선택사항 입력란을 제공하는 것이 좋습니다.

의미론적 요구사항은 GTFS-realtime 버전 1.0에 정의되어 있지 않으므로 gtfs_realtime_version1인 피드는 이러한 요구사항을 충족하지 않을 수 있습니다(자세한 내용은 의미론적 요구사항 제안 참고).

카디널리티

카디널리티는 다음 값을 사용하여 특정 입력란에 제공될 수 있는 요소의 수를 나타냅니다.

입력란이 필수인지, 조건부 필수인지, 선택사항인지 확인하려면 필수설명 입력란을 참고하세요. 프로토콜 버퍼 카디널리티는 gtfs-realtime.proto를 참고하세요.

프로토콜 버퍼 데이터 형식

다음 프로토콜 버퍼 데이터 유형은 피드 요소를 설명하는 데 사용됩니다.

  • message: 복합 유형
  • enum: 고정 값 목록

시험용 입력란

시험용이라고 표시된 입력란은 변경될 수 있으며 아직 공식적으로 사양에 포함되지 않은 것입니다. 향후 시험용 입력란이 정식으로 사양에 포함될 수 있습니다.

요소 색인

요소

message FeedMessage

피드 메시지의 내용입니다. 스트림의 각 메시지는 적절한 HTTP GET 요청에 대한 응답으로 가져옵니다. 실시간 피드는 항상 기존 GTFS 피드와 관련하여 정의됩니다. 모든 엔티티 ID는 GTFS 피드와 관련하여 해결됩니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
header FeedHeader 필수 One 이 피드 및 피드 메시지에 대한 메타데이터입니다.
entity FeedEntity 조건부 필수 Many 피드의 내용입니다. 대중교통 시스템에 대한 실시간 정보가 있는 경우 이 입력란을 제공해야 합니다. 이 입력란이 비어 있는 경우 시스템에 사용 가능한 실시간 정보가 없다고 가정해야 합니다.

message FeedHeader

피드에 대한 메타데이터로 피드 메시지에 포함되어 있습니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
gtfs_realtime_version string 필수 One 피드 사양의 버전입니다. 현재 버전은 2.0입니다.
incrementality Incrementality 필수 One
timestamp uint64 필수 One 이 타임스탬프는 이 피드의 내용이 생성된 순간을 식별합니다(서버 시간). POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. 실시간 정보를 생성하고 사용하는 시스템 사이의 시간 지연을 방지하려면 시간 서버에서 타임스탬프를 가져오는 것이 좋습니다. 최대 2초의 시간 차이가 허용되므로 Stratum 3 이하의 서버가 허용됩니다.

enum Incrementality

현재 가져오기가 점진적인지 여부를 결정합니다.

  • FULL_DATASET: 이 피드 업데이트는 피드에 대한 이전의 모든 실시간 정보를 덮어씁니다. 따라서 이 업데이트는 알려진 모든 실시간 정보의 전체 스냅샷을 제공할 것으로 예상됩니다.
  • DIFFERENTIAL: 현재 이 모드는 지원되지 않으며 이 모드를 사용하는 피드에 동작이 지정되지 않습니다. GTFS Realtime 메일링 리스트에 DIFFERENTIAL 모드의 동작을 완벽하게 지정하는 방법에 대한 토론이 있으며, 토론이 완료되면 문서가 업데이트됩니다.

FULL_DATASET
DIFFERENTIAL

message FeedEntity

대중교통 피드의 엔티티에 대한 정의(또는 업데이트)입니다. 엔티티가 삭제되지 않은 경우 'trip_update', 'vehicle' 및 'alert' 입력란 중 하나만 채워야 합니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
id string 필수 One 이 엔티티에 대한 피드 고유의 식별자입니다. ID는 증분 지원을 제공하는 데만 사용됩니다. 피드에서 참조하는 실제 엔티티는 명시적 선택자로 지정해야 합니다(자세한 내용은 아래의 EntitySelector 참고).
is_deleted bool 선택사항 One 이 엔티티를 삭제할지 여부입니다. 증분이 DIFFERENTIAL인 피드에만 제공되어야 합니다. 증분이 FULL_DATASET인 피드에는 이 입력란이 제공되지 않아야 합니다.
trip_update TripUpdate 조건부 필수 One 이동의 실시간 출발 지연에 대한 데이터입니다. trip_update, vehicle 또는 alert 입력란 중 적어도 하나 이상 제공해야 합니다. 이 입력란은 모두 비워 둘 수 없습니다.
vehicle VehiclePosition 조건부 필수 One 차량의 실시간 위치에 대한 데이터입니다. trip_update, vehicle 또는 alert 입력란 중 적어도 하나 이상 제공해야 합니다. 이 입력란은 모두 비워 둘 수 없습니다.
alert 알림 조건부 필수 One 실시간 알림에 대한 데이터입니다. trip_update, vehicle 또는 alert 입력란 중 적어도 하나 이상 제공해야 합니다. 이 입력란은 모두 비워 둘 수 없습니다.

message TripUpdate

이동 중 차량의 진행 상황에 대한 실시간 업데이트입니다. 이동 업데이트 엔티티에 대한 일반적인 설명도 참조하세요.

ScheduleRelationship의 값에 따라 TripUpdate는 다음을 지정할 수 있습니다.

  • 일정대로 진행되는 이동
  • 경로를 따라 진행되지만 일정이 정해지지 않은 이동
  • 일정과 관련하여 추가 또는 삭제된 이동

업데이트는 미래의 예상 도착/출발 이벤트 또는 이미 발생한 과거 이벤트에 대한 업데이트일 수 있습니다. 대부분의 경우 과거 이벤트에 대한 정보는 측정된 값이므로 불확실성 값은 0으로 하는 것이 좋습니다. 그렇지 않은 경우도 있을 수 있으므로 과거 이벤트의 불확실성 값이 0이 아닐 수 있습니다. 업데이트가 완료되지 않았거나 측정이 정확하지 않은 이동의 대략적인 예측인 경우 또는 이벤트 발생 후 확인되지 않은 과거에 대한 예측인 경우 업데이트의 불확실성이 0이 아닐 수 있습니다.

업데이트는 이미 완료된 이동을 다룰 수 있습니다. 이때는 이동의 마지막 정류장에 대한 업데이트만 제공해도 충분합니다. 마지막 정류장의 도착 시간이 과거라면 클라이언트는 전체 이동이 과거라고 결론을 내릴 것입니다(중요하지는 않지만 이전 정류장에 대한 업데이트를 제공할 수도 있음). 이 옵션은 예정보다 앞서 완료된 이동과 가장 관련이 있지만, 이동은 일정에 따라 현재 진행 중입니다. 이 이동에 대한 업데이트를 삭제하면 클라이언트는 이동이 계속 진행 중이라고 추측할 수 있습니다. 피드 제공자는 이전 업데이트를 삭제할 수 있지만 반드시 삭제할 필요는 없습니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
trip TripDescriptor 필수 One 이 메시지가 적용되는 이동입니다. 실제 이동 인스턴스마다 최대 하나의 TripUpdate 엔티티가 있을 수 있습니다. 아무 것도 없으면 이용 가능한 예측 정보가 없는 것입니다. 이는 이동이 일정대로 진행되고 있다는 것을 의미하지 않습니다.
vehicle VehicleDescriptor 선택사항 One 이 이동을 진행 중인 차량에 대한 추가 정보입니다.
stop_time_update StopTimeUpdate 조건부 필수 Many 이동의 StopTimes에 대한 업데이트입니다(즉, 예측의 경우에는 미래의 시간이고 이미 발생한 경우에는 과거의 시간임). 업데이트는 stop_sequence에 따라 정렬해야 하며 이는 지정된 다음 stop_time_update까지 이동 시 거치는 모든 정류장에 적용되어야 합니다. trip.schedule_relationship이 CANCELLED가 아닌 경우 이동에 하나 이상의 stop_time_update를 제공해야 합니다. 이동이 취소된 경우 stop_time_update를 제공할 필요가 없습니다.
timestamp uint64 선택사항 One 차량의 실시간 진행 상황을 측정한 순간입니다. POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다.
delay int32 선택사항 One 이동의 현재 일정 편차입니다. 예상 지연이 GTFS의 기존 일정과 관련하여 지정된 경우에만 지연을 지정해야 합니다.
지연(초 단위)은 양수(차량이 늦었다는 의미) 또는 음수(차량이 예정보다 앞서 있음을 의미)일 수 있습니다. 지연이 0이면 차량이 정확히 일정에 따라 운행되고 있음을 의미합니다.
StopTimeUpdate의 지연 정보가 이동 수준의 지연 정보보다 우선합니다. 따라서 StopTimeUpdate 지연 값이 지정된 이동의 다음 정류장까지만 이동 수준의 지연이 전달됩니다.
피드 제공자는 데이터가 최신인지 평가하기 위해 지연 값이 마지막으로 업데이트된 시점을 나타내는 TripUpdate.timestamp 값을 제공하는 것이 좋습니다.
주의: 이 입력란은 아직 시험용이므로 변경될 수 있으며 향후에 정식으로 도입될 수 있습니다.

message StopTimeEvent

단일 예측 이벤트(도착 또는 출발)에 대한 타이밍 정보입니다. 타이밍은 지연 또는 예상 시간과 불확실성으로 구성됩니다.

  • 예상 지연이 GTFS의 기존 일정과 관련하여 지정된 경우 지연을 사용해야 합니다.
  • 예측된 일정이 있는지 여부에 상관없이 시간을 지정해야 합니다. 시간과 지연이 모두 지정되면 시간이 우선적으로 적용됩니다(일반적으로 예정된 이동에 대해 지정된 시간은 GTFS에 예정된 시간 + 지연과 동일해야 함).

불확실성은 시간과 지연에 동일하게 적용됩니다. 불확실성은 실제 지연에서 예상되는 오류를 대략적으로 지정합니다(단, 정확한 통계적 의미는 아직 정의되지 않았음). 예를 들어 컴퓨터 타이밍 제어에 따라 구동되는 열차의 경우 불확실성이 0일 수 있습니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
delay int32 조건부 필수 One 지연은 초 단위이고 양수(차량이 늦었다는 의미) 또는 음수(차량이 예정보다 앞서 있음을 의미)일 수 있습니다. 지연이 0이면 차량이 정확히 일정에 따라 운행되고 있음을 의미합니다. StopTimeEvent 내에 지연 또는 시간을 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다.
time int64 조건부 필수 One 이벤트의 절대 시간입니다. POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. StopTimeEvent 내에 지연 또는 시간을 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다.
uncertainty int32 선택사항 One 불확실성이 생략되면 알려지지 않은 것으로 해석됩니다. 완전히 확실한 예측을 지정하려면 불확실성을 0으로 설정합니다.

message StopTimeUpdate

이동 중 특정 정류장의 도착 및 출발 이벤트에 대한 실시간 업데이트입니다. TripDescriptor이동 업데이트 엔티티 문서에서 정차 시간 업데이트에 대한 일반적인 설명도 참고하세요.

과거와 미래의 이벤트에 대해 업데이트를 제공할 수 있습니다. 제작자는 과거 이벤트를 삭제할 수 있지만 반드시 그럴 필요는 없습니다. 업데이트는 stop_sequence 또는 stop_id를 통해 특정 정류장과 연결되므로 다음 입력란 중 하나를 반드시 설정해야 합니다. 이동 중에 동일한 stop_id를 두 번 이상 방문하면 해당 이동 시 stop_id에 대한 모든 StopTimeUpdate에 stop_sequence가 제공되어야 합니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
stop_sequence uint32 조건부 필수 One 해당 GTFS 피드의 stop_times.txt에 있는 값과 같아야 합니다. StopTimeUpdate 내에 stop_sequence 또는 stop_id가 제공되어야 합니다. 두 입력란 모두 비워 둘 수 없습니다. stop_sequence는 동일한 stop_id를 두 번 이상 방문하는 이동(예: 루프) 시 예측 대상 정류장을 명확히 구분하기 위해 필요합니다.
stop_id string 조건부 필수 One 해당 GTFS 피드의 stops.txt에 있는 값과 같아야 합니다. StopTimeUpdate 내에 stop_sequence 또는 stop_id가 제공되어야 합니다. 두 입력란 모두 비워 둘 수 없습니다.
arrival StopTimeEvent 조건부 필수 One schedule_relationship이 비어 있거나 SCHEDULED인 경우, StopTimeUpdate 내에 arrival 또는 departure를 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다. schedule_relationship이 SKIPPED인 경우 arrival 및 departure 모두 비어 있을 수 있습니다. schedule_relationship이 NO_DATA이면 arrival 및 departure는 비어 있어야 합니다.
departure StopTimeEvent 조건부 필수 One schedule_relationship이 비어 있거나 SCHEDULED인 경우, StopTimeUpdate 내에 arrival 또는 departure를 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다. schedule_relationship이 SKIPPED인 경우 arrival 및 departure 모두 비어 있을 수 있습니다. schedule_relationship이 NO_DATA이면 arrival 및 departure는 비어 있어야 합니다.
schedule_relationship ScheduleRelationship 선택사항 One 기본 관계는 SCHEDULED입니다.

enum ScheduleRelationship

이 StopTime과 정적 일정 간의 관계입니다.

Value Comment
SCHEDULED 차량은 정류장의 정적 일정에 따라 운행되고 있지만, 반드시 일정의 시간을 따라야 하는 것은 아닙니다. 기본 동작입니다. 적어도 한 개의 도착과 출발을 제공해야 합니다.
SKIPPED 정류장을 건너뜁니다. 즉, 차량이 이 정류장에 정차하지 않습니다. 도착 및 출발은 선택사항입니다.
NO_DATA 이 정류장에 대한 데이터가 제공되지 않습니다. 이는 이용 가능한 실시간 정보가 없음을 나타냅니다. 설정되면 NO_DATA가 후속 정류장을 통해 전달되므로 이는 실시간 정보가 없는 정류장을 지정하는 권장 방법입니다. NO_DATA가 설정되면 도착과 출발 모두 제공되지 않아야 합니다.

message VehiclePosition

특정 차량에 대한 실시간 위치 정보입니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
trip TripDescriptor 선택사항 One 이 차량이 진행 중인 이동입니다. 차량이 특정 이동 인스턴스로 식별될 수 없는 경우 이 입력란을 비워두거나 부분적으로 작성할 수 있습니다.
vehicle VehicleDescriptor 선택사항 One 이 이동을 진행 중인 차량에 대한 추가 정보입니다. 각 항목마다 고유한 차량 ID가 있어야 합니다.
position 위치 선택사항 One 이 차량의 현재 위치입니다.
current_stop_sequence uint32 선택사항 One 현재 정류장의 정류장 순서 색인입니다. current_stop_sequence의 의미(즉, 참조되는 정류장)는 current_status에 의해 결정됩니다. current_status가 없으면 IN_TRANSIT_TO로 간주됩니다.
stop_id string 선택사항 One 현재 정류장을 식별합니다. 이 값은 해당 GTFS 피드의 stops.txt에 있는 값과 같아야 합니다.
current_status 차량 정지 상태 선택사항 One 현재 정류장과 관련하여 차량의 정확한 상태입니다. current_stop_sequence가 없는 경우 무시됩니다.
timestamp uint64 선택사항 One 차량의 위치를 측정한 순간입니다. POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다.
congestion_level CongestionLevel 선택사항 One
occupancy_status OccupancyStatus 선택사항 One 차량의 승객 점유 상태입니다.
주의: 이 입력란은 아직 시험용이므로 변경될 수 있습니다. 향후에 정식으로 도입될 수 있습니다.

enum VehicleStopStatus

Value 설명
INCOMING_AT 차량이 정류장에 도착하려고 합니다(일반적으로 정류장 표시판에 차량 기호가 깜박임).
STOPPED_AT 차량이 정류장에서 정차했습니다.
IN_TRANSIT_TO 차량이 이전 정류장을 출발해서 이동 중입니다.

enum CongestionLevel

이 차량에 영향을 미치는 정체 수준입니다.

UNKNOWN_CONGESTION_LEVEL
RUNNING_SMOOTHLY
STOP_AND_GO
CONGESTION
SEVERE_CONGESTION

enum OccupancyStatus

차량의 승객 점유 상태입니다.

주의: 이 입력란은 아직 시험용이므로 변경될 수 있으며 향후에 정식으로 포함될 수 있습니다.

Value Comment
EMPTY 차량이 비어 있는 것으로 간주됩니다. 탑승한 승객이 거의 또는 전혀 없으며 승객을 계속 탑승시키고 있습니다.
MANY_SEATS_AVAILABLE 차량에 이용 가능한 좌석이 많이 있습니다. 전체 좌석 중 여유 좌석의 비율이 이 범주에 속할 정도로 충분히 많은지 여부는 제작자의 재량에 따라 결정됩니다.
FEW_SEATS_AVAILABLE 차량에 이용 가능한 좌석이 거의 없습니다. 전체 좌석 중 여유 좌석의 비율이 이 범주에 속할 정도로 충분히 적은지 여부는 제작자의 재량에 따라 결정됩니다.
STANDING_ROOM_ONLY 차량이 현재 서서 갈 수 있는 승객만 수용 가능합니다.
CRUSHED_STANDING_ROOM_ONLY 차량이 현재 서서 갈 수 있는 승객만 수용 가능하며 공간이 제한적입니다.
FULL 차량이 꽉 찬 것으로 간주되지만 승객을 계속 탑승시킬 수 있습니다.
NOT_ACCEPTING_PASSENGERS 차량에 승객을 탑승시킬 수 없습니다.

message Alert

대중교통망에서 일종의 사건을 나타내는 알림입니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
active_period TimeRange 선택사항 Many 알림이 사용자에게 표시되어야 하는 시간입니다. 누락된 경우 알림은 피드에 표시되는 동안 표시됩니다. 기간이 여러 개인 경우에는 알림이 모든 기간에 표시됩니다.
informed_entity EntitySelector 필수 Many 이 알림을 통지해야 하는 사용자의 엔티티입니다. 최소 한 개의 informed_entity가 제공되어야 합니다.
cause 원인 선택사항 One
effect 영향 선택사항 One
url TranslatedString 선택사항 One 알림에 대한 추가 정보를 제공하는 URL입니다.
header_text TranslatedString 필수 One 알림에 대한 헤더입니다. 이 일반 텍스트 문자열은 강조표시(예: 굵은 글씨로)됩니다.
description_text TranslatedString 필수 One 알림에 대한 설명입니다. 이 일반 텍스트 문자열은 알림의 본문으로 서식이 지정되거나 사용자가 명시적으로 '확장'을 요청할 때 표시됩니다. 설명의 정보는 헤더의 정보에 추가되어야 합니다.

enum Cause

이 알림이 표시되는 원인입니다.

Value
UNKNOWN_CAUSE
OTHER_CAUSE
TECHNICAL_PROBLEM
STRIKE
DEMONSTRATION
ACCIDENT
HOLIDAY
WEATHER
MAINTENANCE
CONSTRUCTION
POLICE_ACTIVITY
MEDICAL_EMERGENCY

enum Effect

해당 엔티티에 이 문제가 미치는 영향입니다.

NO_SERVICE
REDUCED_SERVICE
SIGNIFICANT_DELAYS
DETOUR
ADDITIONAL_SERVICE
MODIFIED_SERVICE
OTHER_EFFECT
UNKNOWN_EFFECT
STOP_MOVED

message TimeRange

시간 간격입니다. t가 시작 시간보다 크거나 같고 종료 시간보다 작으면 시간 t에서 활성 간격으로 간주됩니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
start uint64 조건부 필수 One 시작 시간으로, POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. 누락된 경우 간격은 음의 무한대에서 시작합니다. TimeRange가 제공되면 start 또는 end을 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다.
end uint64 조건부 필수 One 종료 시간으로, POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. 누락된 경우 간격은 양의 무한대에서 종료됩니다. TimeRange가 제공되면 start 또는 end을 제공해야 합니다. 두 입력란 모두 비워 둘 수 없습니다.

message Position

차량의 지리적 위치입니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
latitude float 필수 One WGS-84 좌표계의 북위입니다.
longitude float 필수 One WGS-84 좌표계의 동경입니다.
bearing float 선택사항 One True North에서 시계 방향의 베어링(도)입니다. 0은 북쪽이고 90은 동쪽입니다. 이는 나침반 베어링이거나 다음 정류장 또는 중간 위치로 향하는 방향일 수 있습니다. 고객이 이전 데이터에서 계산할 수 있는 이전 위치의 순서에서 추론해서는 안 됩니다.
odometer double 선택사항 One 주행 거리 값(미터)입니다.
speed float 선택사항 One 차량이 측정한 순간 속도(초당 미터)입니다.

message TripDescriptor

GTFS 이동의 단일 인스턴스를 식별하는 설명자입니다.

단일 이동 인스턴스를 지정하려면 대부분의 경우 trip_id만 사용해도 됩니다. 하지만 다음과 같은 경우 단일 이동 인스턴스로 확인되기 위해서는 추가 정보가 필요합니다.

  • 이동이 frequencies.txt에 정의된 경우, trip_id 외에 start_date 및 start_time 도 필요합니다.
  • 이동이 24시간 넘게 지속되거나, 지연으로 인해 다음 날 예정된 이동과 충돌하는 경우 start_date 및 trip_id를 모두 제공합니다.
  • trip_id 입력란을 제공할 수 없는 경우 route_id, direction_id, start_date, start_time을 입력해야 합니다.

route_id와 trip_id를 모두 입력한 경우 route_id는 GTFS trips.txt 파일의 해당 이동에 지정되어 있는 route_id와 반드시 일치해야 합니다.

trip_id 입력란을 단독 또는 다른 TripDescriptor 입력란과 조합하여 여러 이동 인스턴스를 식별하는 데 사용할 수 없습니다. TripDescriptor가 단일 인스턴스가 아닌 0개 또는 여러 개의 이동 인스턴스로 확인될 경우 오류로 간주됩니다. 잘못된 TripDescriptor가 포함된 엔티티의 경우 사용자가 직접 삭제할 수 있습니다.

예를 들어 GTFS frequencies.txt 파일에 exact_times=0으로 정의된 이동의 경우 TripDescriptor가 trip_id를 지정해서는 안 됩니다. 그 이유는 하루 중 특정 시간에 시작하는 단일 이동 인스턴스를 확인할 때 start_time도 반드시 제공해야 하기 때문입니다.

trip_id를 모르는 경우 TripUpdate의 역 시퀀스 ID로는 충분하지 않으므로 stop_id 입력란도 제공해야 합니다. 또한 확실한 도착 및 출발 시간도 제공해야 합니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
trip_id string 조건부 필수 One 이 선택자가 참조하는 GTFS 피드의 trip_id입니다. 이동 유형에 따라 trip_id의 입력 여부가 결정됩니다.
빈도를 기반으로 하지 않는 이동: trip_id 입력란만 제공해도 이 이동을 고유하게 식별할 수 있습니다. 빈도를 기반으로 하지 않는 이동은 GTFS frequencies.txt에 정의되어 있지 않습니다.
빈도 기반 이동: trip_id, start_time, start_date 입력란을 모두 입력해야 합니다. 빈도 기반 이동은 GTFS frequencies.txt에 정의되어 있습니다.
일정 기반 이동: route_id, direction_id, start_time, start_date의 조합으로 해당 이동을 고유하게 식별할 수 있는 경우 trip_id 입력란을 생략할 수 있습니다. 일정 기반 이동은 GTFS frequencies.txt에 정의되어 있지 않습니다.
route_id string 조건부 필수 One 이 선택자가 참조하는 GTFS 피드의 route_id입니다. trip_id가 생략된 경우 route_id, direction_id, start_time, schedule_relationship=SCHEDULED가 모두 설정되어야 이동 인스턴스를 식별할 수 있습니다.
direction_id uint32 조건부 필수 One GTFS feed trips.txt 파일의 direction_id로 이동 방향을 나타냅니다. trip_id가 생략되면 direction_id를 제공해야 합니다.
주의: 이 입력란은 아직 시험용이므로 변경될 수 있으며 향후에 정식으로 도입될 수 있습니다.
start_time string 조건부 필수 One 이 이동 인스턴스에 대해 처음에 예정된 시작 시간입니다. Time 입력란 유형에 입력된 형식은 이 입력란의 형식을 정의합니다(예:11:15:35 또는 25:15:35). 이동 유형에 따라 start_time의 입력 여부가 결정됩니다.
trip_id가 빈도를 기반으로 하지 않는 이동: start_time 입력란을 생략하거나, start_time 값이 GTFS 피드의 stop_times.txt 파일에 정의된 departure_time 값과 같아야 합니다.
trip_id가 빈도 기반 이동에 해당하는 경우: start_time은 필수 입력 사항이며 이동 업데이트 및 차량 위치에 대해 지정해야 합니다. 빈도 기반 이동은 GTFS frequencies.txt에 정의되어 있습니다.
빈도 기반 이동이 exact_times=1 GTFS 레코드에 해당하는 경우: start_time은 해당 기간 동안의 frequency.txt start_time보다 headway_secs의 몇 배(0 포함) 후여야 합니다.
빈도 기반 이동이 exact_times=0 GTFS 레코드에 해당하는 경우: start_time은 임의적일 수 있으며 처음에는 이동의 첫 번째 출발 시간이 될 것으로 예상됩니다. 설정이 완료되면 이 빈도 기반 exact_times = 0 이동의 start_time은 첫 번째 출발 시간이 변경되더라도 변경 불가능한 것으로 간주되어야 합니다. 대신 그 이후에 설정된 시간 변경은 StopTimeUpdate 메시지에 반영될 수 있습니다.
trip_id가 생략된 경우: start_time을 제공해야 합니다.
start_date string 조건부 필수 One YYYYMMDD 형식의 이 이동 인스턴스의 시작 날짜입니다. 이동 유형에 따라 start_date의 입력 여부가 결정됩니다.
예정된 이동: start_date을 제공해야 합니다. 이는 다음날 예정된 이동과 충돌할 정도로 늦은 이동을 구별하기 위한 것입니다. 예를 들어, 매일 8시와 20시에 출발하는 열차가 있다고 가정할 때 한 기차의 일정이 12시간 지연되면 같은 시간에 별개의 두 이동이 예정됩니다.
참고: 이와 같은 충돌이 발생할 수 없는 일정의 경우 이 입력란은 필수 사항이 아닙니다. 시간별 일정으로 운행하는 서비스의 경우가 그와 같은 예로, 한 시간 늦은 차량은 더 이상 일정과 관련이 없는 것으로 간주됩니다.
빈도 기반 이동: start_date를 제공해야 합니다. 빈도 기반 이동은 GTFS frequencies.txt 파일에 정의되어 있지만 예정된 이동의 경우 정의되어 있지 않습니다.
trip_id가 생략된 경우: start_date를 제공해야 합니다.
schedule_relationship ScheduleRelationship 선택사항 One 이 이동과 정적 일정 간의 관계입니다. TripDescriptor가 알림 EntitySelector에 제공될 경우 사용자가 일치하는 이동 인스턴스를 식별하면 schedule_relationship 입력란은 무시됩니다.

enum ScheduleRelationship

이 이동과 정적 일정 간의 관계입니다. 이동이 GTFS에 반영되지 않은 임시 일정에 따라 완료되는 경우 SCHEDULED로 표시되지 않고 ADDED로 표시되어야 합니다.

Value Comment
SCHEDULED GTFS 일정에 따라 운행되거나 연결할 예정된 이동과 가장 유사한 이동입니다.
ADDED 파손 차량을 교체하거나 갑작스러운 승객 탑승에 대응하기 위해 진행 중인 일정에 추가된 추가 이동입니다.
UNSCHEDULED 연결된 일정 없이 운행되는 이동입니다. 이 값은 GTFS frequencies.txt에 정의되어 있으며 exact_times = 0인 이동을 식별하는 데 사용됩니다. GTFS frequencies.txt에 정의되지 않은 이동이나 GTFS frequencies.txt에 정의되어 있으며 exact_times = 1인 이동을 설명하는 데는 사용하지 않아야 합니다.
CANCELED 일정에 있었지만 삭제된 이동입니다.

message VehicleDescriptor

이동을 수행하는 차량의 식별 정보입니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
id string 선택사항 One 차량의 내부 시스템 식별 정보입니다. 차량마다 고유해야 하며 시스템이 진행될 때 차량을 추적하는 데 사용됩니다. 이 ID는 최종 사용자에게 표시되지 않아야 합니다. 사용자에게 표시하려면 label 입력란을 사용합니다.
label string 선택사항 One 사용자에게 표시되는 라벨로, 올바른 차량을 식별할 수 있도록 승객에게 표시되어야 합니다.
license_plate string 선택사항 One 차량의 번호판입니다.

message EntitySelector

GTFS 피드의 엔티티에 대한 선택자입니다. 입력란의 값은 GTFS 피드의 해당 입력란과 일치해야 합니다. 최소 하나의 지정자를 제공해야 합니다. 여러 개의 지정자가 제공되는 경우 모든 지정자와 일치해야 합니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
agency_id string 조건부 필수 One 최소 하나의 지정자를 제공해야 합니다. EntitySelector의 모든 입력란을 비워 둘 수 없습니다.
route_id string 조건부 필수 One 최소 하나의 지정자를 제공해야 합니다. EntitySelector의 모든 입력란을 비워 둘 수 없습니다.
route_type int32 조건부 필수 One 최소 하나의 지정자를 제공해야 합니다. EntitySelector의 모든 입력란을 비워 둘 수 없습니다.
trip TripDescriptor 조건부 필수 One 최소 하나의 지정자를 제공해야 합니다. EntitySelector의 모든 입력란을 비워 둘 수 없습니다.
stop_id string 조건부 필수 One 최소 하나의 지정자를 제공해야 합니다. EntitySelector의 모든 입력란을 비워 둘 수 없습니다.

message TranslatedString

텍스트 또는 URL의 스니펫에 대한 언어별 버전이 포함된 다국어화된 메시지입니다. 메시지의 문자열 중 하나가 선택됩니다. 해결 방법은 다음과 같습니다. UI 언어가 번역의 언어 코드와 일치하는 경우 가장 먼저 일치하는 번역이 선택됩니다. 기본 UI 언어 (예., 영어)가 번역의 언어 코드와 일치하는 경우 가장 먼저 일치하는 번역이 선택됩니다. 일부 번역에 지정되지 않은 언어 코드가 있는 경우 해당 번역이 선택됩니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
translation 번역 필수 Many 최소 하나의 번역을 제공해야 합니다.

message Translation

언어에 매핑된 현지화된 문자열입니다.

입력란

입력란 이름 유형 필수 카디널리티 설명
text string 필수 One 메시지를 포함하는 UTF-8 문자열입니다.
language string 조건부 필수 One BCP-47 언어 코드입니다. 언어가 알려지지 않았거나 피드에 대해 다국어화가 전혀 수행되지 않은 경우 생략할 수 있습니다. 언어 태그를 지정하지 않아도 되는 번역은 최대 1개입니다. 번역이 둘 이상인 경우 언어를 입력해야 합니다.