Notificación

Debido al poco uso, el servicio de asistencia por chat dejará de estar disponible a partir del viernes 10 de mayo. Así, el equipo podrá centrarse en nuestra oferta de correo electrónico para mejorar la experiencia general de comunicación con los partners. Utiliza nuestra opción de correo electrónico para todas las consultas posteriores a esa fecha.

Crear un feed de datos

Tarifas

En la especificación de feeds general para el transporte público (GTFS) se usan dos archivos distintos para definir las tarifas:

  • fare_attributes.txt: este archivo contiene un FareAttribute que define una clase de tarifa. Un FareAttribute tiene un precio, una moneda, y la configuración de si se debe comprar a bordo del servicio o antes de subir. También define el número de transbordos que se pueden realizar y el tiempo de validez de un transbordo.
  • fare_rules.txt: este archivo contiene una descripción de cómo se aplican los billetes en el sistema de transporte público.

En este artículo se describe cómo interactúan los 2 archivos para crear un feed de datos preciso para las tarifas.

Atributos de las tarifas

 El archivo fare_attributes.txt define los elementos de una tarifa (ID, tipo de pago, etc.). Este archivo tiene la siguiente estructura:

fare_attributes.txt file structure

En este ejemplo se muestra un archivo fare_attributes.txt sencillo:

fare_id price currency_type payment_method transfers transfer_duration
1 0.00 USD 0 0 0
2 0.50 USD 0 0 0
3 1.00 USD 0 0 0
4 1.50 USD 0 0 0
5 2.00 USD 0 0 0

Para cada tarifa, en el archivo fare_attributes.txt se definen los valores price, currency_type y payment_method. Con el campo transfers se pueden permitir o impedir los transbordos (0 no permite ninguno, 1 permite uno y 2 permite dos; dejar el campo vacío permite transbordos ilimitados). En el campo transfer_duration se fija durante cuánto tiempo (en segundos) es válido un transbordo. El sistema calcula la duración de transfer_duration desde la salida del primer trayecto hasta la llegada del último trayecto (consulta este ejemplo).

Importante:

  • Para indicar el tiempo de validez de un billete para una tarifa que no permite transbordos, asigna el valor 0 a transfers y define el tiempo de validez (en segundos) con transfer_duration.
  • A menos que uses el campo transfer_duration para indicar la validez del billete, te recomendamos que lo omitas o lo dejes vacío cuando asignes el valor 0 al campo transfers

Reglas de tarificación

 El archivo fare_rules.txt describe cómo se aplican los billetes en el sistema de transporte público. Este archivo tiene la siguiente estructura:

fare_rules.txt file structure

El ejemplo siguiente muestra un archivo fare_rules.txt sencillo:

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

El archivo fare_rules.txt permite las siguientes estructuras de tarifas.

  1. La tarifa depende de la ruta que utiliza el itinerario.
    • Para asociar una tarifa a una ruta específica, es necesario definir el campo route_id.
    • Si la tarifa es válida para varias rutas, cada ruta requiere una entrada en fare_rules.
  2. La tarifa depende de las zonas o estaciones de origen o de destino.
    • Para definir reglas de tarificación que varíen en función de la zona o estación de origen o de destino, usa los campos origin_id y destination_id.
    • Los campos origin_id y destination_id hacen referencia a las zonas en las que se ubican las estaciones de origen y de destino. Para proporcionar esta información en el archivo stops.txt, añade el campo zone_id.
    • Para definir reglas que solo estén basadas en estaciones, define una zona para cada estación en el archivo stops.txt.
  3. La tarifa depende de las zonas por las que pasa el itinerario.
    • Para definir reglas de tarificación que varíen en función de las zonas por las que pasa el itinerario, usa el campo contains_id para definir cada zona en la que la tarifa es válida.
    • El campo contains_id hace referencia a un zone_id que se define en el archivo stops.txt

La mayoría de los sistemas de tarificación usan una de estas tres estructuras o una combinación de ellas. Las tarifas que se definen sin reglas son válidas para todos los itinerarios que satisfagan las limitaciones de transbordos.

Si hay varias tarifas válidas para un itinerario específico, el sistema mostrará a los usuarios la opción más barata.

Tarifas para varias empresas

Si el feed contiene varias empresas de transporte público, añade el campo agency_id a cada tarifa del archivo fare_attributes.txt. Cada tarifa solo puede pertenecer a una empresa. Si una tarifa pertenece a varias empresas, debes duplicar la tarifa.

Categorías de tarifas especiales

Google Maps no admite varias categorías de tarifas (adultos, personas mayores o niños). Solo se mostrará una tarifa en los resultados de rutas. Utiliza la categoría de tarifa predeterminada.

Ejemplos y cómo estructurar las tarifas

En las siguientes secciones se describen algunos ejemplos y se explica cómo estructurar las tarifas.

Ejemplo 1: Todos los trayectos tienen la misma tarifa y transbordos ilimitados

Supongamos que una empresa de transporte público tiene la siguiente estructura de tarifas:

  • Los pasajeros pagan 1 $ al subirse a un vehículo (price='1.00', currency='USD', payment_method='0').
  • El billete es válido para todos los vehículos y no caduca (transfers='').
  • Los pasajeros pueden viajar todo el tiempo que quieran porque se ha omitido el valor transfer_duration.

Dado que todos los trayectos tienen la misma tarifa, la empresa de transporte público puede omitir fare_rules.txt.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers
only_fare 1.00 USD 0  

Calcular una tarifa de adulto

El planificador de trayectos calcula una tarifa de 1 $ para cada tramo del itinerario que incluya un cambio de vehículo. Sin embargo, los pasajeros pueden hacer transbordos ilimitados, por lo que el planificador de trayectos solo muestra el importe más bajo, es decir, la tarifa de adulto de 1 $.

Ejemplo 2: Todos los trayectos tienen la misma tarifa y no hay transbordos

Supongamos que una empresa de transporte público tiene la siguiente estructura de tarifas:

  • Los pasajeros pagan 1 $ al subirse a un vehículo (price='1.00', currency='USD', payment_method='0').
  • Los pasajeros pueden viajar todo el tiempo que quieran porque se ha omitido el valor transfer_duration.
  • Cualquier cambio de vehículo requiere una nueva tarifa (transfers="0").

Dado que todos los trayectos tienen la misma tarifa, la empresa de transporte público puede omitir fare_rules.txt.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers
only_fare 1.00 USD 0 0

Calcular una tarifa de adulto

El planificador de trayectos calcula una tarifa de 1 $ para cada tramo del itinerario que incluya un cambio de vehículo. Así, un itinerario que requiera un cambio de autobuses costaría 2 $.

Ejemplo 3: Todos los trayectos tienen la misma tarifa y se pueden hacer transbordos

Supongamos que una empresa de transporte público tiene la siguiente estructura de tarifas:

  • Los pasajeros pagan 1 $ al subirse a un vehículo (price='1.00', currency='USD', payment_method='0').
  • Se pueden hacer transbordos ilimitados durante 90 minutos (transfers='', transfer_duration='5400').

Dado que todos los trayectos tienen la misma tarifa, la empresa de transporte público puede omitir fare_rules.txt.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers transfer_duration
only_fare 1.00 USD 0   5400

Calcular una tarifa de adulto

El planificador de trayectos calcula una tarifa de 1 $ para cada tramo del itinerario que incluya un cambio de vehículo. Luego, calcula el tiempo para el itinerario. Si el tiempo del itinerario es inferior a 90 minutos, la tarifa es de 1 $.

Ejemplo 4: Precios diferentes para las rutas locales y exprés

Supongamos que una empresa de transporte público tiene la siguiente estructura de tarifas:

  1. Los pasajeros pagan 1,75 $ al subirse a los autobuses locales (ruta 1).
  2. Los pasajeros pagan 5 $ al subirse a los autobuses exprés (rutas 2 y 3).
  3. No se pueden hacer transbordos.

Dado que algunos trayectos cuestan más que otros, la empresa de transporte público debe incluir el archivo fare_rules.txt y cada ruta debe tener una entrada para asociarla con una tarifa.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers
local_fare 1.75 USD 0 0
express_fare 5.00 USD 0 0

 

Archivo fare_rules.txt

fare_id route_id
local_fare Route_1
express_fare Route_2
express_fare Route_3

Calcular una tarifa de adulto

La tarifa de 5,00 $ solo se aplica si se utilizan las rutas 2 o 3. La tarifa de 1,75 $ solo se aplica a la ruta 1. Si un itinerario usa las rutas 1 y 2, la tarifa es de 6,75 $.

Ejemplo 5: Adquirir un transbordo aumenta la tarifa

Supongamos que una empresa de transporte público tiene la siguiente estructura de tarifas:

  • Los pasajeros pagan 1,75 $ al subirse a los autobuses locales.
  • Los pasajeros pueden pagar un extra de 0,25 $ al subirse al autobús para adquirir un transbordo.
  • Los transbordos adquiridos son válidos durante 90 minutos.

Dado que estas reglas se aplican a todos los trayectos, la empresa de transporte público puede omitir fare_rules.txt.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers transfer_duration
simple_fare 1.75 USD 0 0  
plustransfer_fare 2.00 USD 0   5400

Calcular una tarifa de adulto

Técnicamente, ambas tarifas se aplican en los itinerarios que no tienen transbordos. Sin embargo, el planificador de trayectos elige siempre la tarifa aplicable más baja:

  • Para un itinerario con un único transbordo, la simple_fare es de 3,50 $ frente a los 2,00 $ cuando se compra un transbordo. Por consiguiente, el planificador de trayectos mostrará una tarifa de 2,00 $ en todos los itinerarios que requieren un cambio de vehículo.
  • Para un itinerario que no tenga ningún transbordo, la tarifa de 1,75 $ es inferior a la plustransfer_fare de 2,00 $. Por lo tanto, si un itinerario no requiere un cambio de vehículo, la tarifa es de 1,75 $. 

Ejemplo 6: La tarifa depende de las estaciones; no importa cómo se llega

En este ejemplo, solo importan los puntos de entrada y salida del sistema. Para definir esta estructura de tarifas para el feed, cada estación debe tener su propio ID de zona único definido en stops.txt. Cada estación se considera una única zona.

  • Los archivos fare_attributes.txt y fare_rules.txt definen una fila para cada par de estaciones.
  • En el archivo fare_attributes.txt, los campos origin_id y destination_id identifican pares de estaciones por ID de zona.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers
!S1_to_S2 1.75 USD 0  
!S1_to_S3 3.25 USD 0  
!S1_to_S4 4.55 USD 0  
...        
!S10_to_S1 5.65 USD 0  

Archivo 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

Calcular una tarifa de adulto

El planificador de trayectos calcula un itinerario y, a continuación, busca las reglas de tarifas hasta que encuentra un par estación de origen/destino que coincide. El feed público de San Francisco Bay Area, BART, proporciona un ejemplo real de este tipo de estructura de tarifas.

Ejemplo 7: La tarifa depende de las zonas

Supongamos que una empresa de transporte público tiene un sistema de tres zonas concéntricas, donde las tarifas dependen de las zonas por las que pasa un itinerario. Para definir esta estructura de tarifas para el feed, los archivos fare_attributes.txt y fare_rules.txt deben contener una línea para cada combinación de zonas posible. Para las estructuras complejas de tarifas de zonas cruzadas, puede ser más sencillo generar el archivo fare_rules.txt mediante programación utilizando el origen y el destino para definir las tarifas.

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers
F1 4.15 USD 0  
F2 2.20 USD 0  
F3 2.20 USD 0  
F4 2.95 USD 0  
F5 1.25 USD 0  
F6 1.95 USD 0  
F7 1.95 USD 0  

Archivo 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

Calcular una tarifa de adulto

Veamos las definiciones del archivo fare_rules.txt con más detalle.

  • F1 se aplica a cualquier trayecto que pase por las zonas (1,2,3).
  • F2 se aplica a cualquier trayecto que pase por las zonas (1,2).
  • F3 se aplica a cualquier trayecto que pase por las zonas (1,3).
  • F4 se aplica a cualquier trayecto que pase por las zonas (2,3).
  • F5 se aplica a cualquier trayecto que pase solo por la zona 1.
  • F6 se aplica a cualquier trayecto que pase solo por la zona 2.
  • F7 se aplica a cualquier trayecto que pase solo por la zona 3.

El planificador de trayectos calcula un itinerario y, a continuación, busca las reglas de tarifas para determinar las tarifas que se deben aplicar según la zona. Dado que F1 también incluye pasar por la zona 1, solo la F4 (2,95 $) se aplica a un trayecto desde la zona 2 a la zona 3. Una regla de la tarifa solo se aplica cuando el conjunto de zonas pasaron por un itinerario que coincide exactamente con el conjunto especificado por la regla de la tarifa. Para un trayecto entre las zonas 2 y 3, el planificador de trayectos muestra 2,95 $ como la tarifa de adulto.

Ejemplo 8: Influencia de los transbordos y transfer_duration

A continuación, se muestra un ejemplo de transbordo:

  • El trayecto 1 sale a las 10:00 y llega a las 11:00.
  • El trayecto 2 sale a las 11:15 y llega a las 12:00.
  • Para que la tarifa sea válida para el viaje completo, tienes que permitir por lo menos 1 transbordo y un valor transfer_duration de al menos 2 horas (de las 10:00 a las 12:00).

Ejemplo 9: Tarifas y transbordos en bloque

Un transbordo en bloque combina 2 trayectos pertenecientes a rutas diferentes y permite que los pasajeros permanezcan en el mismo vehículo mientras cambian de una ruta a otra. En el caso de los trayectos que incluyen un transbordo en bloque, el sistema selecciona una tarifa que se pueda utilizar para todas las rutas implicadas. Los transbordos en bloque no se cuentan como transbordos para el modelado de tarifas.

En el siguiente caso se muestra un ejemplo de modelo de una tarifa para un transbordo en bloque:

  • Supongamos que hay dos rutas: A y B.
  • Cualquier trayecto por las rutas A o B cuesta 1 $ y cualquier trayecto que incluye A y B cuesta 2 $.

Los valores de fare_attributes.txt y fare_rules.txt deben ser los siguientes:

Archivo fare_attributes.txt

fare_id price currency_type payment_method transfers transfer_duration
fare_A 1.00 USD 0 0  
fare_B 1.00 USD 0 0  
fare_AB 2.00 USD 0 0  

Archivo 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        
 
Búsqueda
Borrar búsqueda
Cerrar búsqueda
Menú principal
4704459335897130492
true
Buscar en el Centro de ayuda
true
true
true
true
true
82656
false
false