GTFS Realtime 피드를 사용하면 대중교통 기관이 사용자에게 서비스 중단(폐쇄된 역, 운행하지 않는 노선, 중요한 지연 등), 차량 위치 및 예상 도착 시간에 대한 실시간 정보를 제공할 수 있습니다.
이 사이트에서는 피드 사양 버전 2.0을 다루고 관련 내용을 문서화합니다.
용어 정의
필수
GTFS-realtime v2.0 이상에서 필수 열은 대중교통 데이터가 유효하고 애플리케이션에 적합하도록 제작자가 제공해야 하는 입력란에 대해 설명합니다.
필수 입력란에서는 다음 값이 사용됩니다.
- 필수: 이 입력란은 GTFS-realtime 피드 제작자가 제공해야 합니다.
- 조건부 필수: 이 입력란은 설명입력란에 설명된 특정 조건일 때만 필수 항목입니다. 해당 조건 이외의 경우에는 선택사항입니다.
- 선택사항: 이 입력란은 선택사항으로 제작자가 반드시 구현할 필요가 없습니다. 그러나 기본 자동 차량 위치 시스템(예:
VehiclePosition
timestamp
)에서 데이터가 제공되는 경우 가능하면 제작자가 이러한 선택사항 입력란을 제공하는 것이 좋습니다.
의미론적 요구사항은 GTFS-realtime 버전 1.0에 정의되어 있지 않으므로 gtfs_realtime_version
이 1
인 피드는 이러한 요구사항을 충족하지 않을 수 있습니다(자세한 내용은 의미론적 요구사항 제안 참고).
카디널리티
카디널리티는 다음 값을 사용하여 특정 입력란에 제공될 수 있는 요소의 수를 나타냅니다.
- One: 이 입력란에는 하나의 요소만 입력할 수 있습니다. 이 값은 프로토콜 버퍼 필수 및 선택사항 카디널리티에 매핑됩니다.
- Many: 이 입력란에는 많은 요소(0, 1 등)를 입력할 수 있습니다. 프로토콜 버퍼 반복 카디널리티에 매핑됩니다.
입력란이 필수인지, 조건부 필수인지, 선택사항인지 확인하려면 필수 및 설명 입력란을 참고하세요. 프로토콜 버퍼 카디널리티는 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 이후의 초 수)으로 표시됩니다. 실시간 정보를 생성하고 사용하는 시스템 사이의 시간 지연을 방지하려면 시간 서버에서 timestamp 를 가져오는 것이 좋습니다. 최대 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 | 이 개체의 삭제 여부입니다. Incrementality 가 DIFFERENTIAL 인 피드에만 제공되어야 합니다. Incrementality 가 FULL_DATASET 인 피드에는 이 입력란이 제공되지 않아야 합니다. |
trip_update |
TripUpdate |
조건부 필수 | One | 이동의 실시간 출발 지연에 대한 데이터입니다. trip_update , vehicle 또는 alert 입력란 중 적어도 하나 이상 제공해야 합니다. 이 입력란은 모두 비워 둘 수 없습니다. |
vehicle |
VehiclePosition |
조건부 필수 | One | 차량의 실시간 위치에 대한 데이터입니다. trip_update , vehicle 또는 alert 입력란 중 적어도 하나 이상 제공해야 합니다. 이 입력란은 모두 비워 둘 수 없습니다. |
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 이 CANCELED 가 아니면 이동에 하나 이상의 stop_time_update 를 제공해야 합니다. 이동이 취소되면 stop_time_updates 를 제공하지 않아도 됩니다. |
timestamp |
uint64 |
선택사항 | One | 차량의 실시간 진행 상황을 측정한 순간입니다. POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. |
delay |
int32 |
선택사항 | One | 이동의 현재 일정 편차입니다. 예상 지연이 GTFS의 기존 일정과 관련하여 지정된 경우에만 delay 를 지정해야 합니다.delay (초 단위)는 양수(차량이 늦었다는 의미) 또는 음수(차량이 예정보다 앞서 있음을 의미)일 수 있습니다. delay 가 0 이면 차량이 정확히 일정에 따라 운행되고 있다는 뜻입니다.StopTimeUpdates 의 지연 정보가 이동 수준의 지연 정보보다 우선합니다. 따라서 StopTimeUpdate delay 값이 지정된 이동의 다음 정류장까지만 이동 수준의 지연이 전달됩니다.피드 제공자는 데이터가 최신인지 평가하기 위해 delay 값이 마지막으로 업데이트된 시점을 나타내는 TripUpdate.timestamp 값을 제공하는 것이 좋습니다.주의: 이 입력란은 아직 시험용이므로 변경될 수 있으며, 향후에 정식으로 도입될 수 있습니다. |
message StopTimeEvent
단일 예측 이벤트(도착 또는 출발)에 대한 타이밍 정보입니다. 타이밍은 지연 또는 예상 시간과 불확실성으로 구성됩니다.
- 예상 지연이 GTFS의 기존 일정과 관련하여 지정되면
delay
를 사용해야 합니다. - 예측된 일정의 유무에 상관없이
time
을 지정해야 합니다.time
과delay
가 모두 지정되면time
이 우선 적용됩니다(일반적으로 예정된 이동에 대해 지정된time
은 GTFS에 예정된 시간 + 지연과 동일해야 함).
불확실성은 시간과 지연에 동일하게 적용됩니다. 불확실성은 실제 지연에서 예상되는 오류를 대략적으로 지정합니다(단, 정확한 통계적 의미는 아직 정의되지 않았음). 예를 들어 컴퓨터 타이밍 제어에 따라 구동되는 열차의 경우 불확실성이 0
일 수 있습니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
delay |
int32 |
조건부 필수 | One | delay 는 초 단위이고 양수(차량이 늦었다는 의미) 또는 음수(차량이 예정보다 앞서 있음을 의미)일 수 있습니다. delay 가 0 이면 차량이 정확히 일정에 따라 운행되고 있다는 뜻입니다. StopTimeEvent 내에 delay 또는 time 이 제공되어야 합니다. 두 입력란이 모두 빈 상태이면 안 됩니다. |
time |
int64 |
조건부 필수 | One | 이벤트의 절대 시간입니다. POSIX 시간(즉, 1970년 1월 1일 00:00:00 UTC 이후의 초 수)으로 표시됩니다. StopTimeEvent 내에 delay 또는 time 이 제공되어야 합니다. 두 입력란이 모두 빈 상태이면 안 됩니다. |
uncertainty |
int32 |
선택사항 | One | 불확실성이 생략되면 알려지지 않은 것으로 해석됩니다. 완전히 확실한 예측을 지정하려면 불확실성을 0 으로 설정합니다. |
message StopTimeUpdate
이동 중 특정 정류장의 도착 및 출발 이벤트에 대한 실시간 업데이트입니다. TripDescriptor
및 이동 업데이트 개체 문서에서 정차 시간 업데이트에 대한 일반적인 설명도 참고하세요.
과거와 미래의 이벤트에 대해 업데이트를 제공할 수 있습니다. 제작자는 과거 이벤트를 삭제할 수 있지만 반드시 그럴 필요는 없습니다.
업데이트는 stop_sequence
또는 stop_id
를 통해 특정 정류장과 연결되므로 다음 입력란 중 하나를 반드시 설정해야 합니다. 이동 중에 동일한 stop_id
를 두 번 이상 방문하면 해당 이동 시 stop_id
에 대한 모든 StopTimeUpdates
에 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
과 정적 일정 간의 관계입니다.
값
값 | 설명 |
---|---|
SCHEDULED |
차량이 정류장의 정적 일정에 따라 운행되고 있습니다(단, 반드시 일정의 시간을 따라야 하는 것은 아님). 기본 동작입니다. 적어도 한 개의 arrival 과 departure 를 제공해야 합니다. |
SKIPPED |
정류장을 건너뜁니다. 즉, 차량이 이 정류장에 정차하지 않습니다. arrival 및 departure 입력란은 선택사항입니다. |
NO_DATA |
이 정류장에 대한 데이터가 제공되지 않습니다. 이는 이용 가능한 실시간 정보가 없음을 나타냅니다. 설정되면 NO_DATA 가 후속 정류장을 통해 전달되므로 이는 실시간 정보가 없는 정류장을 지정하는 권장 방법입니다. NO_DATA 가 설정되면 arrival 과 departure 모두 제공되지 않아야 합니다. |
message VehiclePosition
특정 차량에 대한 실시간 위치 정보입니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
trip |
TripDescriptor |
선택사항 | One | 이 차량이 진행 중인 이동입니다. 차량이 특정 이동 인스턴스로 식별될 수 없는 경우 이 입력란을 비워두거나 부분적으로 작성할 수 있습니다. |
vehicle |
VehicleDescriptor |
선택사항 | One | 이 이동을 진행 중인 차량에 대한 추가 정보입니다. 항목마다 고유한 차량 ID가 있어야 합니다. |
position |
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 |
VehicleStopStatus |
선택사항 | 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
값
값 | 설명 |
---|---|
INCOMING_AT |
차량이 정류장에 도착하려고 합니다(일반적으로 정류장 표시판에 차량 기호가 깜박임). |
STOPPED_AT |
차량이 정류장에서 정차했습니다. |
IN_TRANSIT_TO |
차량이 이전 정류장을 출발해서 이동 중입니다. |
enum CongestionLevel
이 차량에 영향을 미치는 정체 수준입니다.
값
값 |
---|
UNKNOWN_CONGESTION_LEVEL |
RUNNING_SMOOTHLY |
STOP_AND_GO |
CONGESTION |
SEVERE_CONGESTION |
enum OccupancyStatus
차량의 승객 점유 상태입니다.
주의: 이 입력란은 아직 시험용이므로 변경될 수 있으며 향후에 정식으로 도입될 수 있습니다.
값
값 | 설명 |
---|---|
EMPTY |
차량이 비어 있는 것으로 간주됩니다. 탑승한 승객이 거의 또는 전혀 없으며 승객을 계속 탑승시키고 있습니다. |
MANY_SEATS_AVAILABLE |
차량 또는 객차에 이용 가능한 좌석이 많이 있습니다. 전체 좌석 중 여유 좌석의 수가 이 범주에 속할 정도로 충분히 많은지는 제작자의 재량에 따라 결정됩니다. |
FEW_SEATS_AVAILABLE |
차량 또는 객차에 이용 가능한 좌석이 거의 없습니다. 전체 좌석 중 여유 좌석의 수가 이 범주에 속할 정도로 충분히 적은지는 제작자의 재량에 따라 결정됩니다. |
STANDING_ROOM_ONLY |
차량이나 객차가 현재 서서 갈 수 있는 승객만 수용 가능합니다. |
CRUSHED_STANDING_ROOM_ONLY |
차량 또는 객차가 현재 서서 갈 수 있는 승객만 수용 가능하며 공간이 제한적입니다. |
FULL |
차량이 꽉 찬 것으로 간주되지만 승객을 계속 탑승시킬 수 있습니다. |
NOT_ACCEPTING_PASSENGERS |
현재 차량 또는 객차에 승객을 탑승시키고 있지 않습니다. 일반적으로는 차량이나 객차에 승객을 탑승시킵니다. |
NO_DATA_AVAILABLE |
차량 또는 객차에 그때 이용 가능한 점유율 데이터가 없습니다. |
NOT_BOARDABLE |
차량이나 객차에 탑승할 수 없으며 승객을 전혀 탑승시키지 않습니다. 특수 차량이나 특수 차량(엔진, 정비용 객차 등)에 유용합니다. |
message Alert
대중교통망에서 일종의 사건을 나타내는 알림입니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
active_period |
TimeRange |
선택사항 | Many | 알림이 사용자에게 표시되어야 하는 시간입니다. 누락된 경우 알림은 피드에 표시되는 동안 표시됩니다. 기간이 여러 개인 경우에는 알림이 모든 기간에 표시됩니다. |
informed_entity |
EntitySelector |
필수 | Many | 이 알림을 통지해야 하는 사용자의 개체입니다. 최소 한 개의 informed_entity 가 제공되어야 합니다. |
cause |
Cause |
선택사항 | One | |
effect |
Effect |
선택사항 | One | |
url |
TranslatedString |
선택사항 | One | 알림에 대한 추가 정보를 제공하는 URL입니다. |
header_text |
TranslatedString |
필수 | One | 알림에 대한 헤더입니다. 이 일반 텍스트 문자열은 강조표시(예: 굵은 글씨로)됩니다. |
description_text |
TranslatedString |
필수 | One | 알림에 대한 설명입니다. 이 일반 텍스트 문자열은 알림의 본문으로 서식이 지정되거나 사용자가 명시적으로 '확장'을 요청할 때 표시됩니다. 설명의 정보는 헤더의 정보에 추가되어야 합니다. |
enum Cause
이 알림이 표시되는 원인입니다.
값
값 |
---|
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
가 start
시간보다 크거나 같고 end
시간보다 작으면 시간 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 피드 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 입력란을 생략하거나, GTFS 피드의 stop_times.txt 파일에 정의된 departure_time 값과 같아야 합니다. • trip_id 가 빈도 기반 이동에 해당하는 경우: start_time 은 항상 필수 입력 사항이며 이동 업데이트 및 차량 위치에 대해 지정해야 합니다. 빈도 기반 이동은 GTFS frequencies.txt 에 정의되어 있습니다. ◦ 빈도 기반 이동이 exact_times=1 GTFS 레코드에 해당하는 경우: start_time 은 해당 기간의 frequencies.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 가 Alert EntitySelector 에 제공될 경우 소비자가 일치하는 이동 인스턴스를 식별하면 schedule_relationship 입력란은 무시됩니다. |
enum ScheduleRelationship
이 이동과 정적 일정 간의 관계입니다. 이동이 GTFS에 반영되지 않은 임시 일정에 따라 완료되는 경우 SCHEDULED
로 표시되지 않고 ADDED
로 표시되어야 합니다.
값
값 | 설명 |
---|---|
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 피드의 해당 입력란과 일치해야 합니다. 최소 하나의 지정자를 제공해야 합니다. 여러 개의 지정자가 제공되는 경우 논리 AND
연산자에 의해 연결된 것으로 해석되어야 합니다. 또한 지정자의 조합이 GTFS 피드의 해당 정보와 일치해야 합니다. 즉, 알림이 GTFS의 개체에 적용되려면 제공된 모든 EntitySelector
입력란과 일치해야 합니다. 예를 들어 route_id: "5"
및 route_type: "3"
입력란이 포함된 EntitySelector
는 route_id: "5"
버스에만 적용되며 route_type: "3"
인 다른 경로에는 적용되지 않습니다. 제작자가 알림을 route_id: "5"
와 route_type: "3"
에 적용하고자 하는 경우에는 route_id: "5"
와 route_type: "3"
을 각각 참조하는 별도의 EntitySelector
입력란 두 개가 필요합니다.
최소 하나의 지정자를 제공해야 합니다. EntitySelector
의 모든 입력란을 비워 둘 수 없습니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
agency_id |
string |
조건부 필수 | One | 이 선택자가 참조하는 GTFS 피드의 agency_id 입니다. |
route_id |
string |
조건부 필수 | One | 이 선택자가 참조하는 GTFS의 route_id 입니다. direction_id 가 제공되면 route_id 도 제공되어야 합니다. |
route_type |
int32 |
조건부 필수 | One | 이 선택자가 참조하는 GTFS의 route_type 입니다. |
direction_id |
uint32 |
조건부 필수 | One | GTFS 피드 trips.txt 파일의 direction_id 로, 경로에 대해 한 방향으로 모든 이동을 선택하는 데 사용되며 route_id 로 지정됩니다. direction_id 가 제공되면 route_id 도 제공되어야 합니다. |
trip |
TripDescriptor |
조건부 필수 | One | 이 선택자가 참조하는 GTFS의 이동 인스턴스입니다. 이 TripDescriptor 는 GTFS 데이터의 단일 이동 인스턴스로 결정되어야 합니다(예: 제작자는 exact_times=0 이동에 대해 trip_id 만을 제공할 수는 없습니다). 이 TripDescriptor 내에 ScheduleRelationship 입력란이 채워지면 사용자가 GTFS 이동을 식별하려고 할 때 이 입력란을 무시합니다. |
stop_id |
string |
조건부 필수 | One | 이 선택자가 참조하는 GTFS 피드의 stop_id 입니다. |
message TranslatedString
텍스트 또는 URL의 스니펫에 대한 언어별 버전이 포함된 다국어화된 메시지입니다. 메시지의 문자열 중 하나가 선택됩니다. 해결 방법은 다음과 같습니다. UI 언어가 번역의 언어 코드와 일치하는 경우 가장 먼저 일치하는 번역이 선택됩니다. 기본 UI 언어 (예., 영어)가 번역의 언어 코드와 일치하는 경우 가장 먼저 일치하는 번역이 선택됩니다. 일부 번역에 지정되지 않은 언어 코드가 있는 경우 해당 번역이 선택됩니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
translation |
Translation |
필수 | Many | 최소 하나의 번역을 제공해야 합니다. |
message Translation
언어에 매핑된 현지화된 문자열입니다.
입력란
입력란 이름 | 유형 | 필수 | 카디널리티 | 설명 |
---|---|---|---|---|
text |
string |
필수 | One | 메시지를 포함하는 UTF-8 문자열입니다. |
language |
string |
조건부 필수 | One | BCP-47 언어 코드입니다. 언어가 알려지지 않았거나 피드에 대해 다국어화가 전혀 수행되지 않은 경우 생략할 수 있습니다. 언어 태그를 지정하지 않아도 되는 번역은 최대 1개입니다. 번역이 둘 이상인 경우 언어를 입력해야 합니다. |