← Metodología / 4. Estándar GTFS / 4.1 Qué es GTFS y cómo se estructura

4.1 Qué es GTFS y cómo se estructura

Un feed GTFS es un archivo ZIP que contiene varios archivos de texto con extensión .txt. Cada archivo es una tabla — igual que una hoja de cálculo — donde cada columna es un campo de datos y cada fila es un registro. Los archivos se relacionan entre sí mediante identificadores, de la misma forma que funciona una base de datos.

El formato es abierto y está mantenido por MobilityData, una organización sin fines de lucro. Su documentación oficial está disponible en español. gtfs.org — Referencia

Los archivos del feed

Un feed completo puede tener más de veinte archivos, pero para publicar datos funcionales de un sistema de transporte municipal alcanza con siete. Cuatro son técnicamente obligatorios por el estándar, y tres adicionales son necesarios en la práctica para que los datos sean útiles en aplicaciones de navegación.

agency.txt — La agencia operadora

Describe quién opera el servicio de transporte. En la mayoría de los casos municipales mexicanos, la agencia es el municipio mismo, la secretaría de movilidad o la empresa concesionaria principal.

CampoDescripciónEjemplo
agency_idIdentificador únicoMOVILIDAD_ZMR
agency_nameNombre oficialDirección de Movilidad de Zamora
agency_urlSitio webhttps://zamora.gob.mx
agency_timezoneZona horariaAmerica/Mexico_City

Un feed puede tener varias agencias si coexisten distintos operadores en el sistema. Para la mayoría de los municipios, bastará con una sola fila en este archivo.

stops.txt — Las paradas

Cada fila es una parada donde los pasajeros suben o bajan. La posición geográfica de cada parada se expresa en coordenadas de latitud y longitud en el sistema WGS 84 — el mismo que usan GPS y OpenStreetMap.

CampoDescripciónEjemplo
stop_idIdentificador únicoPAR-001
stop_nameNombre de la paradaMercado Hidalgo
stop_latLatitud19.9834
stop_lonLongitud-102.2833

El nombre de la parada debe ser algo que un usuario pueda reconocer — una calle, un punto de referencia, un edificio conocido. Si no existe nombre oficial, la esquina más cercana es una buena referencia: “Juárez y Morelos”.

routes.txt — Las rutas

Cada fila es una ruta del sistema — lo que los usuarios conocen como “la Ruta 5” o “el camión al mercado”. No se confunde con los recorridos físicos: una ruta puede tener múltiples variantes (ida, vuelta, ramal), que se modelan en el archivo de viajes.

CampoDescripciónEjemplo
route_idIdentificador únicoRUTA-05
route_short_nameNúmero o código corto5
route_long_nameNombre descriptivoCentro - Hospital General
route_typeTipo de vehículo3
route_colorColor de la ruta en hexFF6600

El valor 3 en route_type corresponde a autobús — el modo más común en municipios mexicanos. Si la ruta tiene un color oficial con el que los usuarios la identifican, se puede incluir en route_color.

trips.txt — Los viajes

Un viaje es un recorrido específico de un vehículo a lo largo de una ruta, en una dirección y en un momento del día. Una ruta puede tener muchos viajes — uno por cada salida programada. Este archivo conecta las rutas con sus recorridos geográficos y con los calendarios de servicio.

CampoDescripciónEjemplo
trip_idIdentificador únicoR5-IDA-0700
route_idRuta a la que perteneceRUTA-05
service_idDías en que operaLUN-VIE
trip_headsignLetrero del destinoHospital General
shape_idForma geográfica asociadaSHAPE-R5-IDA

El trip_headsign es el texto que aparecería en el letrero frontal del autobús — “Hospital General”, “Centro”, “Terminal Norte”. Ayuda a los usuarios a saber si el camión va en la dirección correcta.

stop_times.txt — Los horarios

Es el archivo más grande. Cada fila define el paso de un viaje por una parada — a qué hora llega y a qué hora sale. Para un viaje con 30 paradas hay 30 filas en este archivo.

CampoDescripciónEjemplo
trip_idViaje al que perteneceR5-IDA-0700
stop_idParada visitadaPAR-001
arrival_timeHora de llegada07:00:00
departure_timeHora de salida07:00:30
stop_sequenceOrden en el recorrido1

Una dificultad práctica habitual en México: el transporte concesionado no tiene horarios fijos por parada. La solución es usar tiempos interpolados — estimar el tiempo en cada parada en función de la distancia total del recorrido y la velocidad promedio observada. No es exacto, pero es suficiente para que las aplicaciones calculen tiempos de viaje aproximados. El módulo de creación explica cómo hacerlo.

calendar.txt — El calendario de servicio

Define en qué días opera cada tipo de servicio. Permite especificar patrones semanales y fechas de vigencia.

CampoDescripciónEjemplo
service_idIdentificadorLUN-VIE
monday a sundayOpera ese día (1=sí, 0=no)1,1,1,1,1,0,0
start_dateInicio de vigencia20240101
end_dateFin de vigencia20241231

Con dos o tres entradas en este archivo — “días de semana”, “sábados” y “domingos” — se puede modelar la operación de la mayoría de los sistemas municipales. Las fechas de vigencia son importantes: un feed con fechas vencidas deja de mostrarse en algunas aplicaciones.

shapes.txt — El recorrido geográfico

Define la geometría del recorrido de cada viaje como una secuencia ordenada de puntos con coordenadas. Es técnicamente opcional en el estándar, pero sin él las aplicaciones no pueden mostrar el trazado de la ruta en el mapa — solo las paradas.

CampoDescripciónEjemplo
shape_idIdentificador de la formaSHAPE-R5-IDA
shape_pt_latLatitud del punto19.9834
shape_pt_lonLongitud del punto-102.2834
shape_pt_sequenceOrden del punto1

Los shapes se generan a partir de las trazas GPS del trabajo de campo, procesadas en QGIS o JOSM. Una ruta de ida y vuelta requiere dos shapes distintos — los recorridos suelen diferir en algunas calles.

Cómo se relacionan los archivos

La lógica del formato funciona así:

  • Una agencia opera varias rutas.
  • Cada ruta tiene varios viajes — uno por cada salida del día.
  • Cada viaje sigue un recorrido geográfico (shape) y opera en ciertos días según el calendario.
  • Cada viaje pasa por una secuencia de paradas en horarios específicos.
Relación entre los archivos de un feed GTFS. Las flechas indican qué campos conectan un archivo con otro.
Relación entre los archivos de un feed GTFS. Las flechas indican qué campos conectan un archivo con otro.

Con esta estructura, una consulta como “¿cómo llego del mercado al hospital usando la Ruta 5 a las 7 de la mañana un martes?” puede responderse cruzando los datos de los siete archivos.

Una nota sobre la precisión

Un feed GTFS no tiene que ser perfecto para ser útil. Un feed con horarios aproximados, paradas estimadas y recorridos basados en trazas GPS ya permite que los usuarios vean sus opciones de transporte en aplicaciones de navegación. La precisión se puede mejorar en versiones sucesivas del feed conforme se disponga de mejor información.

Lo importante al empezar es que el feed sea técnicamente válido — que siga el formato correcto, que no tenga errores de estructura — aunque los datos sean aproximados. El módulo de validación describe cómo verificar eso.

← Metodología / 4. Estándar GTFS / 4.1 Qué es GTFS y cómo se estructura