Um Feed GTFS Realtime permite que as empresas de transporte público forneçam aos consumidores informações em tempo real sobre interrupções no serviço (estações fechadas, linhas fora de operação, atrasos significativos etc.), a localização de veículos e horários previstos de chegada.
A versão 2.0 da especificação de feeds é abordada e documentada neste site.
Definições de termos
Obrigatório
Nas versões 2.0 e posteriores da GTFS Realtime, a coluna Obrigatório descreve campos que precisam ser fornecidos por um produtor para que os dados de transporte público sejam válidos e façam sentido para um aplicativo consumidor.
Os seguintes valores são usados na coluna Obrigatório:
- Obrigatório: este campo precisa ser fornecido por um produtor de Feed GTFS Realtime.
- Obrigatório sob certas condições: este campo é obrigatório nas situações mencionadas em Descrição. Fora dessas condições, o campo é opcional.
- Opcional: este campo é opcional e não precisa ser implementado pelos produtores. No entanto, se os dados estiverem disponíveis nos sistemas de localização automática de veículos (por exemplo,
VehiclePosition
timestamp
), recomenda-se que os produtores especifiquem esses campos opcionais quando possível.
Não foram definidos requisitos semânticos na versão 1.0 da GTFS Realtime. Portanto, é possível que os feeds com gtfs_realtime_version
igual a 1
não atendam a esses requisitos. Veja mais detalhes na proposta de requisitos semânticos.
Cardinalidade
A cardinalidade representa o número de elementos que podem ser fornecidos em determinado campo e pode ter os seguintes valores:
- Um: só é possível informar um elemento para esse campo. Esse valor é mapeado para as cardinalidades required e optional do buffer de protocolo.
- Muitos: é possível informar muitos elementos (0, 1 ou mais) para esse campo. O valor é mapeado para a cardinalidade repeated do buffer de protocolo.
Consulte sempre as colunas Obrigatório e Descrição para ver quando um campo é obrigatório, obrigatório sob certas condições ou opcional. Consulte a cardinalidade do buffer de protocolo em gtfs-realtime.proto
.
Tipos de dados do buffer de protocolo
Os seguintes tipos de dados do buffer de protocolo são usados para descrever elementos do feed:
- message: tipo complexo
- enum: lista de valores fixos
Campos experimentais
Os campos rotulados como experimentais estão sujeitos a alterações e ainda não foram formalmente incluídos na especificação. Um campo experimental pode ser formalmente incluso no futuro.
Índice de elementos
Elementos
message FeedMessage
O conteúdo de uma mensagem de feed. Cada mensagem no fluxo é recebida como uma resposta a uma solicitação GET
HTTP adequada. Um feed em tempo real é sempre definido em relação a um Feed GTFS já existente. Todos os IDs de entidade são resolvidos em relação ao Feed GTFS.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
header |
FeedHeader |
Obrigatório | Um | Metadados sobre este feed e a mensagem de feed. |
entity |
FeedEntity |
Obrigatório sob certas condições | Muitos | Conteúdo do feed. Este campo precisará ser fornecido se houver informações em tempo real disponíveis para o sistema de transporte público. Se este campo estiver vazio, os consumidores deverão presumir que não há informações em tempo real disponíveis para o sistema. |
message FeedHeader
Metadados sobre um feed, incluídos em mensagens de feed.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
gtfs_realtime_version |
string |
Obrigatório | Um | Versão da especificação do feed. A versão atual é a 2.0. |
incrementality |
Incrementality |
Obrigatório | Um | |
timestamp |
uint64 |
Obrigatório | Um | Este carimbo de data/hora identifica o momento em que o conteúdo deste feed foi criado (no horário do servidor). No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Para evitar o desvio de tempo entre sistemas que produzem e consomem informações em tempo real, é recomendável derivar o timestamp de um servidor de horário. É completamente aceitável usar servidores Stratum 3 ou até mesmo de camadas mais baixas, já que diferenças de horário de alguns segundos podem ser toleradas. |
enum Incrementality
Determina se a busca atual é incremental.
FULL_DATASET
: esta atualização de feed substituirá todas as informações em tempo real anteriores do feed. Assim, ela deverá fornecer um resumo completo de todos os dados dinâmicos.DIFFERENTIAL
: no momento, este modo não é aceito, e o comportamento não é especificado para feeds que o usam. Há discussões disponíveis na lista de e-mails da GTFS Realtime sobre como especificar por completo o comportamento do modoDIFFERENTIAL
. A documentação será atualizada quando esses tópicos forem finalizados.
Valores
Valor |
---|
FULL_DATASET |
DIFFERENTIAL |
message FeedEntity
Uma definição (ou atualização) de uma entidade no feed de transporte público. Se a entidade não estiver sendo excluída, será preciso preencher trip_update
, vehicle
ou alert
.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
id |
string |
Obrigatório | Um | Identificador exclusivo do feed para esta entidade. Os IDs são usados apenas para fornecer suporte a incrementabilidade. É necessário usar seletores explícitos de modo a especificar as entidades reais indicadas pelo feed. Veja o EntitySelector abaixo para mais informações. |
is_deleted |
bool |
Opcional | Um | Define se esta entidade deve ou não ser excluída. Precisa ser indicado somente para feeds com Incrementality = DIFFERENTIAL . Este campo NÃO deve ser fornecido para feeds com Incrementality definida como FULL_DATASET . |
trip_update |
TripUpdate |
Obrigatório sob certas condições | Um | Dados em tempo real sobre atrasos na partida de uma viagem. É preciso informar pelo menos um dos campos trip_update , vehicle ou alert . Não é possível deixar todos eles vazios. |
vehicle |
VehiclePosition |
Obrigatório sob certas condições | Um | Dados em tempo real sobre a posição de um veículo. É preciso informar pelo menos um dos campos trip_update , vehicle ou alert . Não é possível deixar todos eles vazios. |
alert |
Alert |
Obrigatório sob certas condições | Um | Dados sobre o alerta em tempo real. É preciso informar pelo menos um dos campos trip_update , vehicle ou alert . Não é possível deixar todos eles vazios. |
message TripUpdate
Atualização em tempo real sobre o andamento de um veículo ao longo de uma viagem. Consulte também o tópico sobre entidades de atualizações de viagem.
Dependendo do valor de ScheduleRelationship
, uma TripUpdate
pode especificar:
- uma viagem que continua ao longo da programação;
- uma viagem que prossegue ao longo de um trajeto, mas não tem programação fixa;
- uma viagem que foi adicionada à programação ou removida dela.
As atualizações podem ser para eventos de chegada/partida futuros, previstos ou passados. Na maioria dos casos, as informações sobre eventos passados são um valor medido. Portanto, recomenda-se que o valor da indefinição seja 0
. Mas, em casos em que isso não aconteça, esse tipo de evento pode ter valores de indefinição diferentes de 0
. Se a indefinição de uma atualização não for 0
, isso significará que a atualização é uma previsão aproximada de uma viagem ainda não foi concluída, que a medição não é precisa ou que a atualização foi uma previsão para um evento passado que não foi confirmada após o evento ter ocorrido.
A atualização pode descrever uma viagem que já foi concluída. Para isso, basta fornecer detalhes sobre a última parada dela. Se a hora da chegada na última parada estiver no passado, o cliente concluirá que a viagem inteira está no passado. Também é possível indicar atualizações para paradas anteriores, embora isso não tenha qualquer efeito. Essa opção é mais relevante no caso de uma viagem que tenha sido concluída antes do horário previsto, mas que, de acordo com a programação, ainda está sendo realizada. Remover as atualizações dessa viagem pode fazer com que o cliente entenda que a viagem ainda está em curso. O provedor do feed pode limpar atualizações passadas, mas não é obrigado a isso. O caso acima é apenas um exemplo em que isso seria útil.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
trip |
TripDescriptor |
Obrigatório | Um | A viagem a que esta mensagem se aplica. Pode haver no máximo uma entidade TripUpdate para cada instância de viagem real. A ausência dessa entidade indica que não há informações disponíveis sobre a previsão. Isso não significa que a viagem está prosseguindo de acordo com a programação. |
vehicle |
VehicleDescriptor |
Opcional | Um | Informações adicionais sobre o veículo que está fazendo esta viagem. |
stop_time_update |
StopTimeUpdate |
Obrigatório sob certas condições | Muitos | Atualizações de StopTimes da viagem. Tanto de viagens futuras (previsões) quanto, em alguns casos, de viagens passadas (já concluídas). As atualizações precisam ser classificadas por stop_sequence e se aplicam a todas as paradas subsequentes até a próxima stop_time_update especificada. Pelo menos uma stop_time_update precisa ser fornecida, a menos que trip.schedule_relationship seja CANCELED . Se a viagem for cancelada, não será necessário enviar stop_time_updates . |
timestamp |
uint64 |
Opcional | Um | Momento em que o progresso em tempo real do veículo foi medido. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). |
delay |
int32 |
Opcional | Um | Desvio atual entre a programação e a viagem. O delay precisa ser especificado apenas quando é fornecida uma previsão em relação a uma programação existente na GTFS.O valor delay (em segundos) pode ser positivo, o que indica que o veículo está atrasado, ou negativo, o que indica que o veículo está adiantado. Um delay igual a 0 significa que o veículo está no horário.As informações de atraso em uma StopTimeUpdates têm precedência sobre os valores do atraso no nível da viagem, que só é propagado até a próxima parada com um valor StopTimeUpdate delay especificado.Recomenda-se que os provedores de feed forneçam um valor de TripUpdate.timestamp para indicar quando o valor de delay foi atualizado pela última vez. Dessa forma, será possível saber o momento da última atualização.Atenção: este campo ainda é experimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro. |
message StopTimeEvent
Informações de tempo para um único evento previsto (chegada ou partida). Os horários consistem em atraso e/ou horário estimado e indefinição.
- O campo
delay
precisa ser usado quando é fornecida uma previsão relativa a uma programação existente na GTFS. - É necessário informar
time
, independentemente de haver uma programação prevista. Setime
edelay
forem especificados,time
terá precedência (embora normalmente,time
, se fornecido para uma viagem programada, seja igual ao horário programado na GTFS + atraso).
Indefinição se aplica a horário e atraso. Ela especifica aproximadamente o erro esperado em atraso real (no entanto, ainda não definimos seu significado estatístico preciso). A indefinição pode ter valor 0
, por exemplo, no caso de trens conduzidos sob o controle automatizado de horário.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
delay |
int32 |
Obrigatório sob certas condições | Um | O delay (em segundos) pode ser positivo, o que significa que o veículo está atrasado, ou negativo, o que significa que o veículo está adiantado. Um delay igual a 0 significa que o veículo está no horário. É preciso fornecer delay ou time em um StopTimeEvent . Não é possível deixar ambos os campos vazios. |
time |
int64 |
Obrigatório sob certas condições | Um | Evento como horário absoluto. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). É preciso fornecer delay ou time em um StopTimeEvent . Não é possível deixar ambos os campos vazios. |
uncertainty |
int32 |
Opcional | Um | Se a indefinição é omitida, ela é interpretada como desconhecida. Para especificar uma previsão totalmente precisa, defina a indefinição como 0 . |
message StopTimeUpdate
Atualização em tempo real para eventos de chegada e/ou partida de uma parada específica em uma viagem. Consulte também a discussão geral sobre atualizações dos horários de parada na documentação do TripDescriptor
e das entidades de atualizações de viagem.
As atualizações podem ser fornecidas para eventos passados e futuros. O produtor pode remover eventos passados, mas não é obrigatório.
A atualização é vinculada a uma parada específica com stop_sequence
ou stop_id
. Portanto, um desses campos precisa ser definido. Se o mesmo stop_id
é visitado mais de uma vez, stop_sequence
deve ser fornecida em todas as StopTimeUpdates
do stop_id
dessa viagem.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
stop_sequence |
uint32 |
Obrigatório sob certas condições | Um | Precisa ser o mesmo que no stop_times.txt do Feed GTFS correspondente. É preciso fornecer stop_sequence ou stop_id em uma StopTimeUpdate . Não é possível deixar ambos os campos vazios. stop_sequence é obrigatório em viagens que visitam o mesmo stop_id mais de uma vez (por exemplo, uma linha circular) para deixar claro a que parada a previsão se refere. |
stop_id |
string |
Obrigatório sob certas condições | Um | Precisa ser o mesmo que no stops.txt do Feed GTFS correspondente. É preciso fornecer stop_sequence ou stop_id em uma StopTimeUpdate . Não é possível deixar ambos os campos vazios. |
arrival |
StopTimeEvent |
Obrigatório sob certas condições | Um | Se a schedule_relationship estiver vazia ou SCHEDULED , será necessário fornecer arrival ou departure em uma StopTimeUpdate . Não é possível deixar ambos os campos vazios. arrival e departure poderão ficar vazios quando schedule_relationship for SKIPPED . Se a schedule_relationship for NO_DATA , arrival e departure precisarão estar vazios. |
departure |
StopTimeEvent |
Obrigatório sob certas condições | Um | Se a schedule_relationship estiver vazia ou SCHEDULED , será necessário fornecer arrival ou departure em uma StopTimeUpdate . Não é possível deixar ambos os campos vazios. arrival e departure poderão ficar vazios quando schedule_relationship for SKIPPED . Se a schedule_relationship for NO_DATA , arrival e departure precisarão estar vazios. |
schedule_relationship |
ScheduleRelationship |
Opcional | Um | A relação padrão é SCHEDULED . |
enum ScheduleRelationship
A relação entre este StopTime
e a programação estática.
Valores
Valor | Comentário |
---|---|
SCHEDULED |
O veículo prossegue de acordo com a programação estática de paradas, embora não necessariamente de acordo com os horários da programação. Este é o comportamento padrão. É preciso fornecer pelo menos arrival ou departure . |
SKIPPED |
A parada é ignorada, isto é, o veículo não irá parar nela. Os campos arrival e departure são opcionais. |
NO_DATA |
Nenhum dado é fornecido para esta parada. Indica que nenhuma informação em tempo real está disponível. Quando definido, NO_DATA é propagado para as paradas subsequentes. Portanto, esta é a maneira recomendada de especificar a partir de qual parada você não tem informações em tempo real. Quando NO_DATA é definido, não é necessário fornecer arrival nem departure . |
message VehiclePosition
Informações em tempo real sobre a posição de um veículo específico.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
trip |
TripDescriptor |
Opcional | Um | A viagem que este veículo está fazendo. Poderá ser vazio ou parcial se não for possível identificar o veículo em determinada instância de uma viagem. |
vehicle |
VehicleDescriptor |
Opcional | Um | Informações adicionais sobre o veículo que está fazendo esta viagem. Cada entrada deve ter um ID de veículo exclusivo. |
position |
Position |
Opcional | Um | Posição atual deste veículo. |
current_stop_sequence |
uint32 |
Opcional | Um | O índice de sequência da parada atual. O significado de current_stop_sequence (ou seja, a parada a que se refere) é determinado por current_status . Se o atributo current_status estiver ausente, IN_TRANSIT_TO será usado. |
stop_id |
string |
Opcional | Um | Identifica a parada atual. O valor precisa ser o mesmo que em stops.txt no Feed GTFS correspondente. |
current_status |
VehicleStopStatus |
Opcional | Um | O status exato do veículo em relação à parada atual. Será ignorado se current_stop_sequence estiver ausente. |
timestamp |
uint64 |
Opcional | Um | Momento em que a posição do veículo foi medida. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). |
congestion_level |
CongestionLevel |
Opcional | Um | |
occupancy_status |
OccupancyStatus |
Opcional | Um | Grau de ocupação do veículo. Atenção: este campo ainda é experimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro. |
enum VehicleStopStatus
Valores
Valor | Comentário |
---|---|
INCOMING_AT |
O veículo está prestes a chegar à parada (geralmente, o símbolo do veículo pisca na exibição de uma parada). |
STOPPED_AT |
O veículo está na parada. |
IN_TRANSIT_TO |
O veículo saiu da parada anterior e está em trânsito. |
enum CongestionLevel
Nível de congestionamento que está afetando este veículo.
Valores
Valor |
---|
UNKNOWN_CONGESTION_LEVEL |
RUNNING_SMOOTHLY |
STOP_AND_GO |
CONGESTION |
SEVERE_CONGESTION |
enum OccupancyStatus
O grau de ocupação do veículo.
Cuidado: este campo ainda é experimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro.
Valores
Valor | Comentário |
---|---|
EMPTY |
O veículo é considerado razoavelmente vazio, com poucos ou nenhum passageiro a bordo, mas ainda aceita embarques. |
MANY_SEATS_AVAILABLE |
O veículo tem um grande percentual de assentos disponíveis. O produtor determina o percentual de assentos livres considerado grande o suficiente para entrar nesta categoria. |
FEW_SEATS_AVAILABLE |
O veículo tem um pequeno percentual de assentos disponíveis. O produtor determina o percentual de assentos livres considerado pequeno o suficiente para entrar nesta categoria. |
STANDING_ROOM_ONLY |
No momento, o veículo pode acomodar apenas passageiros em pé. |
CRUSHED_STANDING_ROOM_ONLY |
No momento, o veículo pode acomodar apenas passageiros em pé com pouco espaço para eles. |
FULL |
O veículo é considerado cheio, mas talvez o embarque de passageiros ainda seja possível. |
NOT_ACCEPTING_PASSENGERS |
O veículo não aceita passageiros. |
message Alert
Um alerta, indicando algum tipo de incidente na rede de transporte público.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
active_period |
TimeRange |
Opcional | Muitos | Horário em que o alerta deve ser mostrado ao usuário. Se não for definido, o alerta será mostrado, desde que apareça no feed. Se forem fornecidos vários intervalos, o alerta será exibido durante todos eles. |
informed_entity |
EntitySelector |
Obrigatório | Muitos | Entidades cujos usuários serão notificados sobre esse alerta. É necessário fornecer pelo menos um informed_entity . |
cause |
Cause |
Opcional | Um | |
effect |
Effect |
Opcional | Um | |
url |
TranslatedString |
Opcional | Um | O URL que fornece informações adicionais sobre o alerta. |
header_text |
TranslatedString |
Obrigatório | Um | Cabeçalho do alerta. Esta string de texto simples será destacada, por exemplo, em negrito. |
description_text |
TranslatedString |
Obrigatório | Um | Descrição do alerta. Esta string de texto simples será formatada como o corpo do alerta (ou mostrada em uma solicitação de "expansão" explícita do usuário). As informações da descrição devem complementar as informações do cabeçalho. |
enum Cause
Causa deste alerta.
Valores
Valor |
---|
UNKNOWN_CAUSE |
OTHER_CAUSE |
TECHNICAL_PROBLEM |
STRIKE |
DEMONSTRATION |
ACCIDENT |
HOLIDAY |
WEATHER |
MAINTENANCE |
CONSTRUCTION |
POLICE_ACTIVITY |
MEDICAL_EMERGENCY |
enum Effect
O efeito deste problema sobre a entidade afetada.
Valores
Valor |
---|
NO_SERVICE |
REDUCED_SERVICE |
SIGNIFICANT_DELAYS |
DETOUR |
ADDITIONAL_SERVICE |
MODIFIED_SERVICE |
OTHER_EFFECT |
UNKNOWN_EFFECT |
STOP_MOVED |
message TimeRange
Um intervalo de tempo. O intervalo é considerado ativo no tempo t
se t
é maior ou igual ao horário start
e menor que o horário end
.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
start |
uint64 |
Obrigatório sob certas condições | Um | Horário de início, no horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Se não definido, o intervalo começa na infinidade negativa. Se um TimeRange for fornecido, será necessário indicar start ou end . Não é possível deixar ambos os campos vazios. |
end |
uint64 |
Obrigatório sob certas condições | Um | Horário de término, no horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Se não definido, o intervalo termina na infinidade positiva. Se um TimeRange for fornecido, será necessário indicar start ou end . Não é possível deixar ambos os campos vazios. |
message Position
A posição geográfica de um veículo.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
latitude |
float |
Obrigatório | Um | Graus ao norte no sistema de coordenadas WGS84. |
longitude |
float |
Obrigatório | Um | Graus a leste no sistema de coordenadas WGS84. |
bearing |
float |
Opcional | Um | Direção, em graus, no sentido horário, a partir do norte verdadeiro, isto é, 0 é norte, e 90 é leste. Pode ser a direção da bússola ou a direção no sentido da próxima parada ou de um local intermediário. Não deve ser deduzido da sequência de posições anteriores, que os clientes podem calcular a partir de dados precedentes. |
odometer |
double |
Opcional | Um | Valor do odômetro, em metros. |
speed |
float |
Opcional | Um | Velocidade no momento, medida pelo veículo, em metros por segundo. |
message TripDescriptor
Descritor que identifica uma instância única de uma viagem da GTFS.
Para especificar uma única instância de viagem, um trip_id
normalmente funciona bem.
No entanto, os seguintes casos exigem informações adicionais para fazer isso:
- Se a viagem for definida no
frequencies.txt
,start_date
estart_time
são obrigatórios, além dotrip_id
. - Se a viagem durar mais de 24 horas ou atrasar entrando em conflito com uma viagem programada no dia seguinte, forneça
start_date
etrip_id
. - Se o campo
trip_id
não puder ser indicado, será necessário fornecer os camposroute_id
,direction_id
,start_date
estart_time
.
Em todos os casos, se route_id
e trip_id
forem preenchidos, o route_id
precisará corresponder ao campo route_id
atribuído à viagem determinada no arquivo trips.txt
da GTFS.
O campo trip_id
não pode ser usado sozinho ou com outros campos TripDescriptor
para identificar várias instâncias de viagem. Se o TripDescriptor
não definir nenhuma instância de viagem ou determinar várias, será considerado um erro. A entidade com o TripDescriptor
incorreto poderá ser descartada pelos consumidores.
Por exemplo, quando uma viagem é definida no frequencies.txt
da GTFS com exact_times=0
, um TripDescriptor
nunca pode especificar um trip_id
. Isso ocorre porque, ao resolver uma instância única de viagem que começa em um horário específico do dia, você também precisa fornecer o start_time
.
Se o trip_id
não for conhecido, os IDs de sequência da estação em TripUpdate
não serão suficientes, e os campos stop_id
também precisarão ser indicados. Além disso, você precisa informar os horários absolutos de chegada e partida.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
trip_id |
string |
Obrigatório sob certas condições | Um | O trip_id do Feed GTFS a que este seletor se refere. O trip_id é obrigatório dependendo do tipo de viagem: • Viagens sem base em frequência: o campo trip_id é suficiente para identificá-las de forma exclusiva. Esse tipo de viagem não é definido no arquivo frequencies.txt da GTFS. • Viagens com base em frequência: os campos trip_id , start_time e start_date são obrigatórios. Esse tipo de viagem é definido no frequencies.txt da GTFS. • Viagens com base em programação: o campo trip_id só poderá ser omitido se a viagem puder ser identificada de maneira exclusiva por uma combinação dos campos route_id , direction_id , start_time e start_date . Esse tipo de viagem não é definido no arquivo frequencies.txt da GTFS. |
route_id |
string |
Obrigatório sob certas condições | Um | O route_id do Feed GTFS a que este seletor se refere. Se trip_id for omitido, será necessário fornecer route_id , direction_id , start_time e schedule_relationship=SCHEDULED para identificar uma instância de viagem. |
direction_id |
uint32 |
Obrigatório sob certas condições | Um | O direction_id do arquivo trips.txt do Feed GTFS que indica a direção da viagem. Se trip_id for omitido, será necessário fornecer o direction_id . Atenção: este campo ainda é experimental e está sujeito a alterações. Ele poderá ser formalmente incluído no futuro. |
start_time |
string |
Obrigatório sob certas condições | Um | O horário inicialmente programado para o início desta instância de viagem. O tipo de campo Time define o formato, por exemplo, 11:15:35 ou 25:15:35. O campo start_time é obrigatório dependendo do tipo de viagem: • O trip_id corresponde a uma viagem que não se baseia em frequência: o campo start_time precisa ser omitido ou igual ao valor de departure_time no arquivo stop_times.txt do Feed GTFS. • O trip_id corresponde a uma viagem com base na frequência: o start_time é sempre obrigatório e precisa ser especificado para atualizações de viagem e posições de veículos. Esse tipo de viagem é definido no frequencies.txt da GTFS. ◦ Se a viagem com base em frequência corresponder a um registro exact_times=1 da GTFS: o campo start_time precisará ser múltiplo de headway_secs , incluindo zero, depois do start_time do frequencies.txt pelo período correspondente. ◦ Se a viagem com base em frequência corresponder a um registro exact_times=0 da GTFS: o start_time pode ser arbitrário, e espera-se que seja a primeira partida da viagem. Depois de estabelecido, o start_time dessa viagem de exact_times=0 com base em frequência será considerado imutável, mesmo que o horário da primeira partida mude. As mudanças de horário subsequentes serão refletidas em uma mensagem StopTimeUpdate . • O trip_id é omitido: o start_time precisa ser indicado. |
start_date |
string |
Obrigatório sob certas condições | Um | A data de início desta instância de viagem no formato YYYYMMDD . A start_date é obrigatória dependendo do tipo de viagem: | Viagens programadas: a start_date precisa ser fornecida. Isso serve para distinguir viagens que estão atrasadas e entrarão em conflito com alguma outra programada para o dia seguinte. Por exemplo, suponha que um trem parte às 8h e às 20h todos os dias. Se ele atrasar 12 horas, haverá duas viagens distintas programadas para o mesmo horário. Observação: esse campo é opcional para viagens programadas em que não há possibilidade de haver conflitos. Por exemplo, se o serviço é oferecido a cada hora e um veículo atrasa uma hora, mas não influencia a programação. • Viagens com base em frequência: a start_date precisa ser fornecida. Esse tipo de viagem é definido no arquivo frequencies.txt da GTFS, mas as programadas não. • Se o trip_id for omitido: a start_date precisará ser fornecida. |
schedule_relationship |
ScheduleRelationship |
Opcional | Um | A relação entre esta viagem e a programação estática. Se o TripDescriptor for fornecido em um EntitySelector de Alert , o campo schedule_relationship será ignorado pelos consumidores quando os usuários identificarem a instância de viagem correspondente. |
enum ScheduleRelationship
A relação entre esta viagem e a programação estática. Se uma viagem é feita de acordo com uma programação temporária não refletida na GTFS, ela não deve ser marcada como SCHEDULED
, e sim como ADDED
.
Valores
Valor | Comentário |
---|---|
SCHEDULED |
A viagem está prosseguindo de acordo com a programação GTFS ou está próxima o suficiente da viagem programada para ser associada a ela. |
ADDED |
Uma viagem adicional que foi incluída em uma programação em execução. Por exemplo, para substituir um veículo quebrado ou responder a uma carga súbita de passageiros. |
UNSCHEDULED |
Uma viagem em execução sem programação associada. Esse valor é usado para identificar viagens definidas no frequencies.txt da GTFS com exact_times = 0 . Ele não pode ser usado para descrever viagens não definidas no frequencies.txt ou em viagens frequencies.txt da GTFS com exact_times = 1 . |
CANCELED |
Uma viagem que existia na programação, mas foi removida. |
message VehicleDescriptor
Informações de identificação do veículo que está executando a viagem.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
id |
string |
Opcional | Um | Identificação do sistema interno do veículo. Deve ser exclusivo para cada veículo e é usado para rastreá-lo pelo sistema à medida que ele prossegue. Esse ID não deve ficar visível ao usuário final. Nesse caso, utilize o campo label . |
label |
string |
Opcional | Um | Marcador que deve ser mostrado ao usuário para ajudar na identificação do veículo correto. |
license_plate |
string |
Opcional | Um | A placa do veículo. |
message EntitySelector
Um seletor de uma entidade em um Feed GTFS. Os valores dos campos devem corresponder aos campos adequados no Feed GTFS. É necessário fornecer pelo menos um especificador. Se forem fornecidos vários especificadores, a correspondência precisará ser aplicável a todos eles.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
agency_id |
string |
Obrigatório sob certas condições | Um | É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios. |
route_id |
string |
Obrigatório sob certas condições | Um | É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios. |
route_type |
int32 |
Obrigatório sob certas condições | Um | É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios. |
trip |
TripDescriptor |
Obrigatório sob certas condições | Um | É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios. |
stop_id |
string |
Obrigatório sob certas condições | Um | É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios. |
message TranslatedString
Uma mensagem internacionalizada contendo versões por idioma de um snippet de texto ou um URL. Uma das strings de uma mensagem será selecionada. A resolução prossegue da seguinte maneira: se o idioma da IU corresponde ao código de idioma de uma tradução, é selecionada a primeira tradução correspondente. Se um idioma padrão de IU (por exemplo, inglês) equivale ao código de idioma de uma tradução, a primeira tradução correspondente é selecionada. Se uma tradução apresenta um código de idioma não especificado, essa tradução é selecionada.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
translation |
Translation |
Obrigatório | Muitos | Pelo menos uma tradução precisa ser fornecida. |
message Translation
Uma string localizada mapeada para um idioma.
Campos
Nome do campo | Tipo | Obrigatório | Cardinalidade | Descrição |
---|---|---|---|---|
text |
string |
Obrigatório | Um | Uma string UTF-8 contendo a mensagem. |
language |
string |
Obrigatório sob certas condições | Um | Código de idioma BCP-47. Pode ser omitido se o idioma é desconhecido ou se não foi feita qualquer internacionalização para o feed. Só é possível usar uma tag de idioma não especificado para uma tradução. Se houver mais de uma tradução, será necessário informar o idioma. |