С помощью фида GTFS Realtime транспортные агентства могут в режиме реального времени сообщать клиентам о нарушениях в работе транспорта (закрытых станциях, перекрытых путях сообщения, задержках и т. п.), о местоположении транспортных средств и ожидаемом времени их прибытия.
На этом сайте описывается спецификация фида версии 2.0.
Используемые термины
Обязательно?
В спецификации GTFS Realtime версии 2.0 и выше в столбце Обязательно? указывается, какие поля должен заполнить отправитель фида, чтобы данные были действительными и правильно интерпретировались конечным приложением.
В столбце Обязательно? используются следующие значения:
- Обязательно. Это поле в фиде GTFS Realtime должно быть заполнено.
- Условно обязательно. Это поле должно быть заполнено при определенных условиях, перечисленных в столбце Описание. В остальных случаях это поле можно не заполнять.
- Необязательно. Это поле фида можно не заполнять. Однако если данные доступны в системах автоматической геолокации транспортных средств (например, поле
timestamp
объектаVehiclePosition
), то рекомендуется по возможности заполнять такие поля.
Обратите внимание, что в GTFS Realtime 1.0 не были заданы требования к семантике, поэтому фиды этой версии (gtfs_realtime_version
= 1
) могут им не соответствовать. Дополнительную информацию можно найти в предложении по добавлению требований к семантике.
Количество элементов
Количество – сколько элементов можно указать в поле. Возможные значения этого параметра:
- Один – в поле можно указать только один элемент. Это соответствует правилам required и optional формата Protocol Buffer.
- Несколько – в поле можно указать один или более элементов или не указывать их. Это соответствует правилу repeated формата Protocol Buffers.
Всегда проверяйте, что указано в столбцах Обязательно? и Описание, чтобы понимать, какие поля должны быть обязательно заполнены, а какие нет. Подробнее о количестве элементов Protocol Buffers рассказывается в документации по gtfs-realtime.proto
.
Типы данных Protocol Buffers
Для описания элементов фида используются следующие типы данных Protocol Buffers:
- message – комплексный тип;
- enum – список фиксированных значений.
Экспериментальные поля
Поля с пометкой экспериментальное могут быть изменены в дальнейшем и пока не утверждены, но могут быть добавлены в спецификацию в будущем.
Указатель элементов
Элементы
message FeedMessage
Содержание сообщения фида. Каждое сообщение, полученное в потоке, является ответом на соответствующий HTTP-запрос методом GET
. Фид GTFS Realtime и все идентификаторы его элементов всегда определяются относительно существующего GTFS-фида. Все идентификаторы элементов разрешаются относительно GTFS-фида.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
header |
FeedHeader |
Обязательно? | Один | Метаданные фида и его сообщения. |
entity |
FeedEntity |
Условно обязательно | Несколько | Содержание фида. Если в системе общественного транспорта доступна информация в режиме реального времени, укажите ее здесь. Если это поле не заполнено, значит сведений, получаемых в режиме реального времени, нет. |
message FeedHeader
Метаданные фида, включенные в сообщения фида.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
gtfs_realtime_version |
string |
Обязательно? | Один | Версия спецификации фида. Текущая версия – 2.0. |
incrementality |
Incrementality |
Обязательно? | Один | |
timestamp |
uint64 |
Обязательно? | Один | Временная метка, которая идентифицирует момент создания этого фида (по времени сервера). Используется POSIX-время (т. е. количество секунд с 1 января 1970 г. 00:00:00 (UTC)). Чтобы согласовать время в системах, передающих и получающих информацию в реальном времени, настоятельно рекомендуется получать timestamp с сервера. Можно использовать серверы уровня Stratum 3 и даже ниже, поскольку разница во времени в пределах нескольких секунд вполне допустима. |
enum Incrementality
Определяет, является ли текущее обновление инкрементальным.
FULL_DATASET
. При обновлении фида будут перезаписаны все предыдущие уточнения в реальном времени. Обновление должно содержать всю доступную информацию.DIFFERENTIAL
. В настоящее время этот режим не поддерживается, а поведение фидов, в которых он используется, не определено в спецификациях. ОбсуждениеDIFFERENTIAL
ведется в списке рассылки GTFS Realtime. По окончании дискуссии документация будет обновлена.
Значения
Значение |
---|
FULL_DATASET |
DIFFERENTIAL |
message FeedEntity
Определение (или обновление) элемента в фиде. Если элемент не удаляется, то должно быть заполнено только одно поле: trip_update
, vehicle
или alert
.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
id |
string |
Обязательно? | Один | Уникальный (в пределах фида) идентификатор этого элемента. Идентификаторы используются только для обеспечения инкрементальности. Фактические элементы фида должны быть указаны явным образом с помощью селекторов (см. EntitySelector ниже). |
is_deleted |
bool |
Необязательно | Один | Показывает, должен ли этот элемент быть удален. Указывается только для фидов, в которых параметр Incrementality имеет значение DIFFERENTIAL . Этот параметр НЕ указывается для фидов, где для параметра Incrementality задано значение FULL_DATASET . |
trip_update |
TripUpdate |
Условно обязательно | Один | Информация о задержках отправления в реальном времени. Хотя бы одно из полей trip_update , vehicle или alert должно быть заполнено – все три поля не могут быть пустыми. |
vehicle |
VehiclePosition |
Условно обязательно | Один | Информация о местоположении транспортного средства, полученная в режиме реального времени. Хотя бы одно из полей trip_update , vehicle или alert должно быть заполнено – все три поля не могут быть пустыми. |
alert |
Alert |
Условно обязательно | Один | Информация об оповещении в режиме реального времени. Хотя бы одно из полей trip_update , vehicle или alert должно быть заполнено – все три поля не могут быть пустыми. |
message TripUpdate
Уточнения в режиме реального времени о продвижении транспортного средства по маршруту. Дополнительную информацию об уточнениях можно найти в статье Уточнения рейсов.
В зависимости от значения ScheduleRelationship
переменная TripUpdate
может обозначать:
- рейс, который идет по графику;
- рейс, который проходит по маршруту, но не имеет строгого расписания;
- рейс, который был добавлен или удален в сравнении с расписанием.
Уточнения могут относиться к ожидаемому или уже имевшему место прибытию или отправлению. В большинстве случаев информация о прошедших событиях представляет собой измеренное значение, поэтому желательно, чтобы погрешность (поле uncertainty) была равна 0
. Однако в некоторых случаях значение может быть неточным, поэтому для прошлых событий допускается погрешность, отличная от 0
. Если погрешность не равна 0
, значит или это расчетные данные по незавершенному рейсу, или измерение выполнено неточно, или это расчетные данные по уже имевшему место событию, информация о котором не была проверена.
Обратите внимание, что уточнение может содержать информацию о рейсе, который уже завершился. В этом случае достаточно уточнения по последней остановке рейса. Если время прибытия на конечную остановку уже прошло, это означает, что рейс был завершен (также можно указать сведения о предыдущих остановках, хотя это и несущественно). Этот вариант подходит для случаев, когда по расписанию рейс ещё должен выполняться, но фактически уже завершился. Если в такой ситуации вы удалите уточнение, то с точки зрения клиента это может означать, что рейс ещё выполняется. Учтите, что отправитель фида может удалять старые уточнения (хотя это не обязательно).
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
trip |
TripDescriptor |
Обязательно? | Один | Рейс, к которому относится это сообщение. Для каждого рейса можно использовать не более одного элемента TripUpdate . Если таких элементов нет, значит и расчетных данных нет. Это не означает, что рейс идет по расписанию. |
vehicle |
VehicleDescriptor |
Необязательно | Один | Дополнительная информация о транспортном средстве, выполняющем рейс. |
stop_time_update |
StopTimeUpdate |
Условно обязательно | Несколько | Уточнения времени остановок (StopTimes ) – как предстоящих, так и пройденных. Уточнения должны быть отсортированы по порядку остановок (stop_sequence ) и применяются ко всем последующим остановкам рейса до очередного обновления stop_time_update . Хотя бы один параметр stop_time_update должен быть указан для всех рейсов, кроме тех, для которых в поле trip.schedule_relationship задано значение CANCELED . Если рейс отменен, параметр stop_time_updates не указывается. |
timestamp |
uint64 |
Необязательно | Один | Время, когда определялось местоположение транспортного средства. Используется POSIX-время (т. е. количество секунд с 1 января 1970 г. 00:00:00 (UTC)). |
delay |
int32 |
Необязательно | Один | Задержка – текущее отклонение рейса от расписания. Параметр delay необходим только в том случае, если ожидаемое время исчисляется относительно расписания, указанного в фиде GTFS.Значение delay (в секундах) может быть положительным (опоздание) или отрицательным (опережение). Значение delay , равное 0 , означает, что транспортное средство прибывает точно по расписанию.Информация о задержке в полях StopTimeUpdates имеет более высокий приоритет, чем аналогичная информация на уровне рейса. Поэтому данные для рейса подставляются только там, где для остановок на пути следования не указано значение delay , равное StopTimeUpdate .Настоятельно рекомендуется, чтобы отправители фидов заполняли поле TripUpdate.timestamp – в нем указывается, когда последний раз обновлялось значение delay . Это позволяет оценить актуальность данных.Внимание! Это поле в настоящий момент является экспериментальным, и его поведение может меняться. В дальнейшем оно может быть изменено и добавлено в спецификацию. |
message StopTimeEvent
Информация о времени одного ожидаемого события (прибытия или отправления). В этом сообщении указывается задержка и/или расчетное время, а также погрешность.
- Параметр
delay
должен указываться, когда расчетное время исчисляется относительно расписания, указанного в фиде GTFS. - Параметр
time
должен указываться независимо от наличия расписания. Если указаныtime
иdelay
, тоtime
имеет более высокий приоритет (хотя обычно, если значениеtime
указано для запланированного рейса, оно должно быть равно времени по расписанию, указанному в GTFS, плюс задержка).
Погрешность применяется к времени и задержке и представляет собой приблизительное значение возможной ошибки при указании задержки (обратите внимание, что ее точное статистическое значение ещё не определено). Погрешность может быть равна 0
, например при использовании системы компьютерного управления движением поездов.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
delay |
int32 |
Условно обязательно | Один | Значение delay (в секундах) может быть положительным (опоздание) или отрицательным (опережение). Значение delay , равное 0 , означает движение точно по расписанию. В сообщении StopTimeEvent должен быть представлен параметр delay или time – оба поля не могут быть пустыми. |
time |
int64 |
Условно обязательно | Один | Абсолютное время. Используется POSIX-время (т. е. количество секунд с 1 января 1970 г. 00:00:00 (UTC)). В сообщении StopTimeEvent должен быть представлен параметр delay или time – оба поля не могут быть пустыми. |
uncertainty |
int32 |
Необязательно | Один | Погрешность. Если это поле пустое, погрешность неизвестна. Если прогноз абсолютно надежен, этот параметр равен 0 . |
message StopTimeUpdate
Уточненная информация о прибытии на остановку или отправлении с нее. Дополнительную информацию по этому вопросу можно найти в разделах TripDescriptor
и Уточнения рейсов.
Уточнения могут относиться как к прошлым, так и к будущим событиям. Отправитель фида может сбрасывать уточнения о прошедших событиях.
Остановка, к которой относится обновление, указывается в параметре stop_sequence
или stop_id
, поэтому одно из этих полей обязательно должно быть заполнено. Если один и тот же stop_id
включен в рейс несколько раз, необходимо указывать последовательность остановок (stop_sequence
) во всех обновлениях StopTimeUpdates
для этого stop_id
того же рейса.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
stop_sequence |
uint32 |
Условно обязательно | Один | Должен совпадать с одноименным параметром в файле stop_times.txt в соответствующем фиде GTFS. В сообщении StopTimeUpdate должен быть представлен параметр stop_sequence или stop_id – оба поля не могут быть пустыми. Значение stop_sequence обязательно для рейсов, которые проходят через остановку с идентификатором stop_id несколько раз (например, в замкнутом маршруте). Это необходимо для устранения неоднозначности. |
stop_id |
string |
Условно обязательно | Один | Должен совпадать с одноименным параметром в файле stops.txt в соответствующем фиде GTFS. В сообщении StopTimeUpdate должен быть представлен параметр stop_sequence или stop_id – оба поля не могут быть пустыми. |
arrival |
StopTimeEvent |
Условно обязательно | Один | Если поле schedule_relationship пустое или содержит значение SCHEDULED , то один из параметров arrival и departure должен быть указан в сообщении StopTimeUpdate – оба поля не могут быть пустыми. Поля arrival и departure могут быть оба пустыми, когда в поле schedule_relationship указано значение SKIPPED . Если в поле schedule_relationship указано значение NO_DATA , то поля arrival и departure должны быть пустыми. |
departure |
StopTimeEvent |
Условно обязательно | Один | Если поле schedule_relationship пустое или содержит значение SCHEDULED , то один из параметров arrival и departure должен быть указан в сообщении StopTimeUpdate – оба поля не могут быть пустыми. Поля arrival и departure могут быть оба пустыми, когда в поле schedule_relationship указано значение SKIPPED . Если в поле schedule_relationship указано значение NO_DATA , то поля arrival и departure должны быть пустыми. |
schedule_relationship |
ScheduleRelationship |
Необязательно | Один | Значение по умолчанию – SCHEDULED . |
enum ScheduleRelationship
Показывает, как параметр StopTime
связан с расписанием, указанным в статическом фиде GTFS.
Значения
Значение | Примечание |
---|---|
SCHEDULED |
Последовательность остановок при движении транспортного средства соответствует расписанию, указанному в статическом фиде GTFS. При этом время прибытия и отправления может отличаться от указанного в расписании. Такой подход используется по умолчанию. По меньшей мере одно значение arrival и departure указывается для времени прибытия и отправления. |
SKIPPED |
Пропуск остановки, т. е. транспортное средство не будет останавливаться в этом пункте. Значения arrival и departure можно не указывать. |
NO_DATA |
Данных об этой остановке нет. Это означает, что уточняющая информация не предоставлена. Если в поле указано значение NO_DATA , такое же значение устанавливается и для последующих остановок. Поэтому такой метод рекомендуется использовать, чтобы указать, начиная с какой остановки у вас отсутствуют уточнения. Если задано значение NO_DATA , не указывается ни arrival , ни departure . |
message VehiclePosition
Уточняющая информация о местоположении транспортного средства.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
trip |
TripDescriptor |
Необязательно | Один | Рейс, который выполняется на этом транспортном средстве. Может быть пустым или частично заполненным, если не удается сопоставить транспортное средство с рейсом. |
vehicle |
VehicleDescriptor |
Необязательно | Один | Дополнительная информация о транспортном средстве, выполняющем рейс. В каждой записи должен использоваться уникальный идентификатор транспортного средства. |
position |
Position |
Необязательно | Один | Положение транспортного средства в данный момент. |
current_stop_sequence |
uint32 |
Необязательно | Один | Индекс текущей остановки в последовательности остановок. Значение current_stop_sequence определяется значением current_status . Если поле current_status не заполнено, предполагается, что транспортное средство находится в пути (IN_TRANSIT_TO ). |
stop_id |
string |
Необязательно | Один | Остановка, на которой находится транспортное средство. Значение должно быть таким же, как в файле stops.txt соответствующего фида GTFS. |
current_status |
VehicleStopStatus |
Необязательно | Один | Точный статус транспортного средства относительно текущей остановки. Игнорируется, если параметр current_stop_sequence отсутствует. |
timestamp |
uint64 |
Необязательно | Один | Время, когда определялось местоположение транспортного средства. Используется POSIX-время (т. е. количество секунд с 1 января 1970 г. 00:00:00 (UTC)). |
congestion_level |
CongestionLevel |
Необязательно | Один | |
occupancy_status |
OccupancyStatus |
Необязательно | Один | Заполненность транспортного средства. Внимание! Это поле в настоящий момент является необязательным. В дальнейшем оно может быть изменено и добавлено в спецификацию. |
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 |
Необязательно | Несколько | Временной диапазон, в течение которого оповещение должно показываться пользователю. Если это поле пустое, то оповещение продолжит отображаться до тех пор, пока оно не будет удалено из фида. Можно указать несколько диапазонов. |
informed_entity |
EntitySelector |
Обязательно? | Несколько | Элементы, подписчикам которых должно быть передано оповещение. По меньшей мере одно поле informed_entity должно быть заполнено. |
cause |
Cause |
Необязательно | Один | |
effect |
Effect |
Необязательно | Один | |
url |
TranslatedString |
Необязательно | Один | URL, по которому можно найти дополнительную информацию об оповещении. |
header_text |
TranslatedString |
Обязательно? | Один | Заголовок оповещения. Эта текстовая строка должна быть выделена, например полужирным шрифтом. |
description_text |
TranslatedString |
Обязательно? | Один | Описание оповещения. Эта текстовая строка будет отформатирована как основной текст оповещения (или отображаться после раскрытия пользователем). Описание должно дополнять информацию, которая содержится в заголовке. |
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
, если t
больше или равно времени start
и меньше времени end
.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
start |
uint64 |
Условно обязательно | Один | Время начала в исчислении POSIX (количество секунд с 1 января 1970 г. 00:00:00 (UTC)). Если оно не указано, интервал начинается с минус бесконечности. Если сообщение TimeRange есть в фиде, то необходимо указать start или end – оба поля не могут быть пустыми. |
end |
uint64 |
Условно обязательно | Один | Время окончания в исчислении POSIX (количество секунд с 1 января 1970 г. 00:00:00 (UTC)). Если оно не указано, интервал заканчивается плюс бесконечностью. Если сообщение TimeRange есть в фиде, то необходимо указать start или end – оба поля не могут быть пустыми. |
message Position
Географическое местоположение транспортного средства.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
latitude |
float |
Обязательно? | Один | В градусах северной широты, в системе координат WGS-84. |
longitude |
float |
Обязательно? | Один | В градусах восточной долготы, в системе координат WGS-84. |
bearing |
float |
Необязательно | Один | Направление в градусах по часовой стрелке от географического севера: 0 – север, 90 – восток и т. д. Это может быть направление по компасу либо направление к следующей остановке или промежуточному местоположению. Значение никак не связано с предыдущими местоположениями, которые можно вывести по ранее полученным данным. |
odometer |
double |
Необязательно | Один | Значение одометра в метрах. |
speed |
float |
Необязательно | Один | Мгновенная скорость, согласно приборам транспортного средства, в метрах в секунду. |
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
должно быть таким же, как указано в поле route_id
для этого рейса в файле trips.txt
фида GTFS.
Поле trip_id
нельзя использовать для идентификации нескольких рейсов как отдельно, так и в сочетании с другими полями TripDescriptor
. Если TripDescriptor
возвращает ноль или несколько рейсов вместо одного, это считается ошибкой. Элемент с ошибкой в поле TripDescriptor
может игнорироваться клиентами.
Например, если рейс определен в файле frequencies.txt
фида GTFS с указанием exact_times=0
, то TripDescriptor
никогда не должен указывать trip_id
сам по себе. Дело в том, что, когда вы распознаете единственный рейс, который начинается в определенное время, необходимо также предоставить значение start_time
.
Обратите внимание, что если параметр trip_id
неизвестен, то идентификаторов последовательности остановок в TripUpdate
недостаточно – нужно также задать значения в полях stop_id
. Кроме того, необходимо указать абсолютное время прибытия и отправления.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
trip_id |
string |
Условно обязательно | Один | Параметр trip_id из фида GTFS, на который указывает этот селектор. Является ли параметр trip_id обязательным, зависит от типа рейса: • Нерегулярные рейсы. Значения в поле trip_id достаточно, чтобы однозначно идентифицировать рейс. Учтите, что нерегулярные рейсы не перечислены в файле frequencies.txt фида GTFS. • Регулярные рейсы. В таких случаях необходимо указать значения для полей trip_id , start_time и start_date . Регулярные рейсы перечислены в файле frequencies.txt фида GTFS. • Рейсы по расписанию. В таких случаях параметр trip_id может быть опущен, только если рейс можно однозначно идентифицировать по сочетанию параметров route_id , direction_id , start_time и start_date и все эти поля заполнены. Учтите, что рейсы по расписанию не перечислены в файле frequencies.txt фида GTFS. |
route_id |
string |
Условно обязательно | Один | Параметр route_id из фида GTFS, на который указывает этот селектор. Если параметр trip_id опущен, то для идентификации рейса необходимо указать route_id , direction_id , start_time и schedule_relationship=SCHEDULED . |
direction_id |
uint32 |
Условно обязательно | Один | Параметр direction_id из файла trips.txt в фиде GTFS, который указывает на направление движения. Если параметр trip_id опущен, необходимо указать direction_id . Внимание! Это поле в настоящий момент является экспериментальным. В дальнейшем оно может быть изменено и добавлено в спецификацию. |
start_time |
string |
Условно обязательно | Один | Время отправления, изначально указанное в расписании рейса. Формат значения в поле Time определяется его типом. Примеры: 11:15:35 или 25:15:35. Необходимость параметра start_time зависит от типа рейса: • Если trip_id обозначает рейс, который выполняется нерегулярно, поле start_time должно быть опущено или его значение должно совпадать со значением departure_time , указанным в файле stop_times.txt фида GTFS. • Если trip_id обозначает регулярный рейс, то поле start_time должно быть заполнено в сообщениях TripUpdate и VehiclePosition. Регулярные рейсы перечислены в файле frequencies.txt фида GTFS. ◦ Если для регулярного рейса в фиде GTFS указано значение exact_times=1 , то значение start_time должно равняться сумме значения start_time в файле frequencies.txt и значения headway_secs , умноженного на целый коэффициент (который может быть равен нулю). ◦ Если для регулярного рейса в фиде GTFS указано значение exact_times=0 , то значение параметра start_time может быть произвольным и обычно соответствует времени начала рейса. После того как параметр start_time для регулярного рейса (exact_times=0 ) установлен, он не должен меняться, даже если меняется время отправления (в таком случае можно использовать сообщение StopTimeUpdate ). • Если параметр trip_id опущен, то поле start_time должно быть заполнено. |
start_date |
string |
Условно обязательно | Один | Дата начала рейса в формате YYYYMMDD . Необходимость параметра start_date зависит от типа рейса:• Рейсы по расписанию. Значение start_date обязательно нужно предоставить. Это позволяет избежать путаницы, если рейс задерживается и отправление переносится на следующие сутки. Например, если поезд, который отправляется каждый день в 8:00 и 20:00, задержался на 12 часов, то время разных рейсов совпадет. Примечание. Это поле можно не заполнять, если такие накладки исключены (например, рейсы выполняются ежечасно, но транспортное средство, опоздавшее на час, удаляется из расписания). • Регулярные рейсы. Значение start_date обязательно нужно предоставить. Учтите, что регулярные рейсы перечислены в файле frequencies.txt фида GTFS, а рейсов по расписанию там нет. • Если параметр trip_id опущен, необходимо указать start_date . |
schedule_relationship |
ScheduleRelationship |
Необязательно | Один | Связь между рейсом и расписанием в статическом фиде GTFS. Если параметр TripDescriptor предоставлен в Alert EntitySelector , то поле schedule_relationship игнорируется клиентами, когда они идентифицируют соответствующий рейс. |
enum ScheduleRelationship
Связь между рейсом и расписанием в статическом фиде GTFS. Если рейс выполняется по временному расписанию, не отраженному в GTFS, то он должен иметь пометку ADDED
, а не SCHEDULED
.
Значения
Значение | Примечание |
---|---|
SCHEDULED |
Рейс, который выполняется в соответствии с расписанием GTFS или с незначительными отклонениями. |
ADDED |
Дополнительный рейс, добавленный в расписание, например в случае возросшего пассажиропотока или замены вышедшего из строя транспортного средства. |
UNSCHEDULED |
Рейс, выполняемый вне расписания. Эта пометка используется для идентификации рейсов, перечисленных в файле frequencies.txt GTFS, для которых установлено значение exact_times = 0 . Ее не следует использовать для описания рейсов, которых нет в файле frequencies.txt или для которых в файле frequencies.txt установлено значение exact_times = 1 . |
CANCELED |
Рейс, удаленный из расписания. |
message VehicleDescriptor
Информация, позволяющая идентифицировать транспортное средство, выполняющее рейс.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
id |
string |
Необязательно | Один | Идентификатор транспортного средства, используемый внутри агентства. Должен быть уникальным. Используется для отслеживания транспортного средства по мере его прохождения через систему. Идентификатор не должен быть виден конечному пользователю – для этого есть поле label . |
label |
string |
Необязательно | Один | Видимое пользователям название, которое помогает найти нужное транспортное средство. |
license_plate |
string |
Необязательно | Один | Номерной знак транспортного средства. |
message EntitySelector
Селектор для элементов в фиде GTFS. Значения полей должны совпадать со значениями соответствующих полей в фиде GTFS. Должен быть указан хотя бы один спецификатор. Если указано несколько, их следует считать объединенными логическим оператором AND
. Кроме того, сочетание спецификаторов должно соответствовать информации в фиде GTFS. Иными словами, чтобы к элементу в GTFS применялось оповещение, оно должно соответствовать всем заданным полям EntitySelector
. Например, сообщение EntitySelector
, которое включает поля route_id: "5"
и route_type: "3"
, применяется только к автобусу route_id: "5"
и не применяется к маршрутам route_type: "3"
. Если отправитель фида хочет применить оповещение и к route_id: "5"
, и к route_type: "3"
, ему необходимо предоставить два отдельных поля EntitySelector
, одно из которых должно ссылаться на route_id: "5"
, а другое – на route_type: "3"
.
Необходимо указать хотя бы один спецификатор – все поля в сообщении EntitySelector
не могут быть пустыми.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
agency_id |
string |
Условно обязательно | Один | Параметр agency_id из фида GTFS, на который указывает этот селектор. |
route_id |
string |
Условно обязательно | Один | Параметр route_id из фида GTFS, на который указывает этот селектор. Если указан параметр direction_id , route_id является обязательным. |
route_type |
int32 |
Условно обязательно | Один | Параметр route_type из фида GTFS, на который указывает этот селектор. |
direction_id |
uint32 |
Условно обязательно | Один | Параметр direction_id из файла trips.txt в фиде GTFS, используемый для выбора всех рейсов в одном направлении для маршрута, заданного параметром route_id . Если указан параметр direction_id , route_id является обязательным. |
trip |
TripDescriptor |
Условно обязательно | Один | Экземпляр рейса из фида GTFS, на который указывает этот селектор. Дескриптор TripDescriptor должен разрешаться в один рейс в данных GTFS (например, отправитель фида не может предоставить только trip_id для рейсов exact_times=0 ). Если поле ScheduleRelationship заполнено в дескрипторе TripDescriptor , клиенты будут игнорировать его при попытках определить рейс GTFS. |
stop_id |
string |
Условно обязательно | Один | Параметр stop_id из фида GTFS, на который указывает этот селектор. |
message TranslatedString
Сообщение, в котором содержатся URL для разных языков или переведенные версии текста. Из него будет выбрана одна строка. Процедура выбора определяется следующим образом: если язык интерфейса соответствует языковому коду перевода, то выбирается первый подходящий перевод. Если язык интерфейса по умолчанию соответствует языковому коду перевода, то выбирается первый подходящий вариант перевода. Если языковой код не указан для одного из вариантов перевода, то будет выбран этот вариант.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
translation |
Translation |
Обязательно? | Несколько | Необходимо предоставить хотя бы один перевод. |
message Translation
Локализованная строка с языковым кодом.
Поля
Название поля | Тип | Обязательно? | Количество элементов | Описание |
---|---|---|---|---|
text |
string |
Обязательно? | Один | Строка с текстом в кодировке UTF-8. |
language |
string |
Условно обязательно | Один | Код языка по стандарту BCP 47. Может быть опущен, если язык неизвестен или фид не локализован. Допустимо использовать не более одного варианта перевода без языкового кода. |