Notificação

Devido à baixa utilização, o suporte via chat não estará mais disponível depois de sexta-feira, 10 de maio. Isso vai permitir que a equipe se concentre nos e-mails e melhore a experiência geral de comunicação com o parceiro. Use nossa opção de e-mail para todas as consultas feitas após essa data.

Criar seu feed de dados

Tarifas

A Especificação Geral sobre Feeds de Transporte Público (GTFS) utiliza dois arquivos diferentes para modelar tarifas:

  • fare_attributes.txt: esse arquivo contém um FareAttribute que define uma classe de tarifa. O FareAttribute tem um preço, uma moeda e uma configuração que determina se a tarifa precisa ser comprada a bordo ou antes do embarque. Ele também define o número de baldeações que podem ser feitas com essa tarifa, além do período de validade dela.
  • fare_rules.txt: esse arquivo contém uma descrição de como os bilhetes são aplicados no sistema de transporte público.

Neste artigo, descrevemos como os dois arquivos funcionam juntos para criar um feed de dados preciso para suas tarifas.

Atributos de tarifa

O arquivo fare_attributes.txt define alguns aspectos de uma tarifa (como ID, tipo de pagamento etc.). Ele tem a seguinte estrutura:

fare_attributes.txt file structure

Este exemplo mostra uma arquivo fare_attributes.txt simples:

fare_id preço currency_type payment_method transfers transfer_duration
1 0,00 R$ 0 0 0
2 0,50 R$ 0 0 0
3 1,00 R$ 0 0 0
4 1,50 R$ 0 0 0
5 2,00 R$ 0 0 0

No arquivo fare_attributes.txt de cada tarifa, defina atributos como price, currency_type e payment_method. Para permitir ou impedir baldeações com o campo transfers, escolha os valores: "0" não permite nenhuma baldeação, "1" permite uma, "2" permite duas e assim por diante. Para permitir baldeações ilimitadas, deixe o campo em branco. Defina o período de expiração (em segundos) de uma baldeação no campo transfer_duration. O sistema calcula a transfer_duration contando a partir da partida da primeira viagem até a chegada da última viagem (veja o exemplo abaixo).

Importante:

  • Para indicar o tempo de validade de uma passagem que vale uma tarifa sem baldeações, defina o parâmetros transfers como 0 e determine o tempo de validade (em segundos) com o campo transfer_duration.
  • Se você não usar o parâmetro transfer_duration para indicar a validade da passagem, recomendamos omitir ou deixar esse campo em branco com o parâmetro transfers definido como 0.

Regras de tarifa

O arquivo fare_rules.txt descreve como as passagens são aplicadas no sistema de transporte público. Ele tem a seguinte estrutura:

fare_rules.txt file structure

O exemplo a seguir mostra um arquivo fare_rules.txt simples:

fare_id route_id origin_id destination_id contains_id
a TSW 1 1  
a TSE 1 1  
a GRT 1 1  
a GRJ 1 1  
b GRT 3 3  
c GRT     6

O arquivo fare_rules.txt é compatível com as estruturas tarifárias a seguir.

  1. A tarifa depende do trajeto usado no itinerário.
    • Para associar uma tarifa a um trajeto específico, defina o campo route_id.
    • Se uma tarifa for válida em vários trajetos, especifique uma entrada para cada trajeto no arquivo fare_rules.
  2. A tarifa depende das estações ou zonas de origem e destino.
    • Para definir regras de tarifa com base na estação ou zona de origem ou destino, use os campos origin_id e destination_id.
    • Os campos origin_id e destination_id fazem referência às zonas em que as estações de origem e destino estão localizadas. Para fornecer essas informações no arquivo stops.txt, adicione o campo zone_id.
    • Para definir somente regras com base na estação, defina uma zona para cada estação no arquivo stops.txt.
  3. A tarifa depende das zonas por onde passa o itinerário.
    • Para definir regras de tarifa com base nas zonas onde o itinerário passa, use o campo contains_id para definir a zona onde cada tarifa é válida.
    • O valor contains_id se refere a um parâmetro zone_id definido no arquivo stops.txt.

A maioria dos sistemas usa uma dessas estruturas tarifárias ou uma combinação delas. As tarifas definidas sem regras são válidas para todos os itinerários que atendem às limitações das baldeações.

Quando várias tarifas são válidas para um itinerário específico, o sistema exibe a opção mais barata para os usuários.

Tarifas para várias agências

Se o feed contém várias agências de transporte público, adicione o campo agency_id ao arquivo fare_attributes.txt para cada tarifa. Uma tarifa pode pertencer a apenas uma agência. Se uma tarifa pertence a várias agências, você precisa duplicá-la.

Categorias de tarifas especiais

O Google Maps não exibe categorias de tarifas diferentes (como para adultos, idosos, crianças etc.). Apenas uma tarifa é exibida nos resultados de trajetos. Use a categoria de tarifa padrão.

Exemplos de cenários e como estruturar tarifas

Nas seções a seguir, mostramos exemplos de cenários e como estruturar as tarifas.

Exemplo 1: todas as viagens têm a mesma tarifa com um número ilimitado de baldeações

Digamos que a empresa de transporte público do nosso exemplo tenha a seguinte estrutura tarifária:

  • Os passageiros pagam R$ 1,00 no embarque (price='1,00', currency='R$', payment_method='0').
  • A passagem é válida para todos os veículos e não expira (transfers='').
  • Os passageiros podem fazer viagens com a duração que eles quiserem, porque o valor de transfer_duration é omitido.

Como todas as viagens têm a mesma tarifa, a empresa de transporte público do exemplo pode omitir o arquivo fare_rules.txt.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers
only_fare 1,00 R$ 0  

Como calcular uma tarifa para adultos

O planejador de viagem calcula uma tarifa de R$ 1,00 para cada trecho do itinerário que inclui uma mudança de veículo. No entanto, como é permitido um número ilimitado de baldeações, o planejador de viagem exibe somente o menor custo, ou seja, a tarifa inteira de R$ 1,00.

Exemplo 2: todas as viagens têm a mesma tarifa sem baldeações

Digamos que a empresa de transporte público do nosso exemplo tenha a seguinte estrutura tarifária:

  • Os passageiros pagam R$ 1,00 no embarque (price='1,00', currency='R$', payment_method='0').
  • Os passageiros podem fazer viagens com a duração que eles quiserem, porque o valor de transfer_duration é omitido.
  • Para fazer qualquer mudança de veículo, é necessário pagar uma nova tarifa (transfers='0')

Como todas as viagens têm a mesma tarifa, a empresa de transporte público do exemplo pode omitir o arquivo fare_rules.txt.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers
only_fare 1,00 R$ 0 0

Como calcular uma tarifa para adultos

O planejador de viagem calcula uma tarifa de R$ 1,00 para cada trecho do itinerário que inclui uma mudança de veículo. Assim, um itinerário com uma mudança de ônibus custaria R$ 2,00.

Exemplo 3: todas as viagens têm a mesma tarifa com baldeações permitidas

Digamos que a empresa de transporte público do nosso exemplo tenha a seguinte estrutura tarifária:

  • Os passageiros pagam R$ 1,00 no embarque (price='1,00', currency='R$', payment_method='0').
  • São permitidas baldeações ilimitadas em um período de 90 minutos (transfers='',transfer_duration='5.400').

Como todas as viagens têm a mesma tarifa, a empresa de transporte público do exemplo pode omitir o arquivo fare_rules.txt.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers transfer_duration
only_fare 1,00 R$ 0   5.400

Como calcular uma tarifa para adultos

O planejador de viagem calcula uma tarifa de R$ 1,00 para cada trecho do itinerário que inclui uma mudança de veículo. Em seguida, ele calcula o tempo do itinerário. Se o período do itinerário for inferior a 90 minutos, a tarifa vai custar R$ 1,00.

Exemplo 4: preços diferentes para trajetos locais e expressos

Digamos que a empresa de transporte público do nosso exemplo tenha a seguinte estrutura tarifária:

  1. Os passageiros pagam R$ 1,75 no embarque dos ônibus locais (trajeto 1).
  2. Os passageiros pagam R$ 5,00 no embarque dos ônibus expressos (trajetos 2 e 3).
  3. As baldeações não estão incluídas.

Como algumas viagens custam mais do que outras, a empresa de transporte público do exemplo precisa incluir um arquivo fare_rules.txt em que todo trajeto deve necessariamente ter uma entrada que o associe a uma tarifa.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers
local_fare 1,75 R$ 0 0
express_fare 5,00 R$ 0 0

 

Arquivo fare_rules.txt

fare_id route_id
local_fare Route_1
express_fare Route_2
express_fare Route_3

Como calcular uma tarifa para adultos

A tarifa de US$ 5,00 será aplicável somente se você percorrer os trajetos 2 ou 3. A tarifa de US$ 1,75 aplica-se somente ao trajeto 1. Se um itinerário incluir os trajetos 1 e 2, a tarifa será de R$ 6,75.

Exemplo 5: a compra de uma baldeação aumenta a tarifa

Digamos que a empresa de transporte público do nosso exemplo tenha a seguinte estrutura tarifária:

  • Os passageiros pagam R$ 1,75 no embarque dos ônibus locais.
  • Eles podem pagar R$ 0,25 a mais no embarque para comprar uma baldeação.
  • As baldeações compradas são válidas por 90 minutos.

Como essas regras se aplicam a todas as viagens, a empresa de transporte público do exemplo pode omitir o arquivo fare_rules.txt.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers transfer_duration
simple_fare 1,75 R$ 0 0  
plustransfer_fare 2,00 R$ 0   5.400

Como calcular uma tarifa para adultos

Tecnicamente, as duas tarifas se aplicam a itinerários sem baldeação. No entanto, o planejador de viagem sempre escolhe a tarifa mais barata aplicável:

  • Para um itinerário com uma baldeação, o valor simple_fare é de US$ 3,50 em comparação com o valor de US$ 2,00 cobrado quando uma baldeação é comprada. Assim, o planejador de viagem informa uma tarifa de R$ 2,00 para todos os itinerários que incluem uma mudança de veículo.
  • Para um itinerário sem baldeações, a tarifa de R$ 1,75 é inferior ao valor plustransfer_fare de R$ 2,00. Dessa maneira, se um itinerário não inclui uma mudança de veículo, a tarifa é de R$ 1,75.

Exemplo 6: a tarifa depende do pareamento das estações, não importando o modo como você chega nelas

Neste exemplo, é importante ter apenas os pontos de entrada e saída do sistema. Para definir a estrutura tarifária do feed, cada estação precisa ter o próprio ID de zona exclusivo definido no arquivo stops.txt. Cada estação é considerada uma única zona.

  • Os arquivos fare_attributes.txt e fare_rules.txt definem uma linha para cada par de estações.
  • No arquivo fare_attributes.txt, os campos origin_id e destination_id identificam os pares de estação por código de zona.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers
!S1_to_S2 1,75 R$ 0  
!S1_to_S3 3,25 R$ 0  
!S1_to_S4 4,55 R$ 0  
       
!S10_to_S1 5,65 R$ 0  

Arquivo fare_rules.txt

fare_id origin_id destination_id
!S1_to_S2 S1 S2
!S1_to_S3 S1 S3
!S1_to_S4 S1 S4
   
!S10_to_S1 S10 S1

Como calcular uma tarifa para adultos

O planejador de viagem calcula um itinerário e percorre as regras de tarifas até encontrar um par de estações com origem/destino correspondentes. O feed do transporte público BART, da região de Bay Area, em São Francisco, ilustra esse tipo de estrutura tarifária no mundo real.

Exemplo 7: a tarifa depende das zonas

Digamos que a empresa de transporte público tenha um sistema com três zonas concêntricas em que as tarifas dependam das zonas percorridas por um passageiro durante um itinerário. Para definir essa estrutura tarifária para o feed, os arquivos fare_attributes.txt e fare_rules.txt precisam incluir uma linha para cada combinação de zonas possível. Para estruturas tarifárias muito complexas que percorrem várias zonas, talvez seja mais simples receber a saída do arquivo fare_rules.txt programaticamente, usando a origem e o destino para definir as tarifas.

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers
F1 4,15 R$ 0  
F2 2,20 R$ 0  
F3 2,20 R$ 0  
F4 2,95 R$ 0  
F5 1,25 R$ 0  
F6 1,95 R$ 0  
F7 1,95 R$ 0  

Arquivo fare_rules.txt

fare_id contains_id
F1 1
F1 2
F1 3
F2 1
F2 2
F3 1
F3 3
F4 2
F4 3
F5 1
F6 2
F7 3

Como calcular uma tarifa para adultos

Vamos analisar as definições do arquivo fare_rules.txt com mais detalhes.

  • F1 aplica-se às viagens que percorrem as zonas (1,2,3).
  • F2 aplica-se às viagens que percorrem as zonas (1,2).
  • F3 aplica-se às viagens que percorrem as zonas (1,3).
  • F4 aplica-se às viagens que percorrem as zonas (2,3).
  • F5 aplica-se às viagens que percorrem somente a zona 1.
  • F6 aplica-se às viagens que percorrem somente a zona 2.
  • F7 aplica-se às viagens que percorrem somente a zona 3.

O planejador de viagem calcula um itinerário e percorre as regras de tarifas para determinar as tarifas que se aplicam com base nas zonas. Como F1 também inclui uma viagem na zona 1, somente F4 (US$ 2,95) aplica-se a uma viagem da zona 2 à 3. A regra da tarifa aplica-se somente quando o conjunto de zonas percorridas em um itinerário coincide exatamente com o conjunto especificado pela regra da tarifa. Para uma viagem entre as zonas 2 e 3, o planejador de viagem informa R$ 2,95 como a tarifa inteira.

Exemplo 8: influência das baldeações e do valor de transfer_duration

Veja a seguir um exemplo de baldeação:

  • A viagem 1 sai às 10h e chega às 11h.
  • A viagem 2 sai às 11h15 e chega às 12h.
  • Para que a tarifa seja válida em todo o percurso, ela precisa ter pelo menos uma baldeação e uma transfer_duration de no mínimo 2 horas (das 10h às 12h).

Exemplo 9: tarifas e baldeações em bloco

Uma baldeação em bloco combina duas viagens que pertencem a trajetos diferentes e permite que os passageiros permaneçam no mesmo veículo ao passar de um trajeto para outro. Em uma viagem com baldeação em bloco, o sistema seleciona uma tarifa incluindo todos os trajetos envolvidos. As baldeações em bloco não são contabilizadas como baldeações para a estimativa de tarifas.

Veja um exemplo de modelo de uma tarifa de baldeação em bloco:

  • Digamos que existam dois trajetos, A e B.
  • Qualquer viagem no trajeto A ou B custa US$ 1,00 e qualquer viagem que inclua A e B custa US$ 2,00.

Os valores dos arquivos fare_attributes.txt e fare_rules.txt devem ter a seguinte aparência:

Arquivo fare_attributes.txt

fare_id preço currency_type payment_method transfers transfer_duration
fare_A 1,00 R$ 0 0  
fare_B 1,00 R$ 0 0  
fare_AB 2,00 R$ 0 0  

Arquivo fare_rules.txt

fare_id route_id origin_id destination_id contains_id
fare_A route_A        
fare_B route_B        
fare_AB route_A        
fare_AB route_B        
 

Precisa de mais ajuda?

Siga as próximas etapas:

Pesquisa
Limpar pesquisa
Fechar pesquisa
Menu principal
17983309481809079659
true
Pesquisar na Central de Ajuda
true
true
true
true
true
82656
false
false