7 min de lectura

Sarebus: Un motor de búsqueda de rutas de autobús regional

Cómo convertimos cientos de miles de datos GTFS en un buscador

Jano M. Gorgal

Un día para viajar de Donosti a Vitoria no había personal en la estación de autobuses para vendernos billetes en taquilla, y la terminal de venta automática estaba rota (había gente en la cola hablando de comprarlo online pero no encontraban dónde).

Yo conocía la página web porque me sonaba que era “Pesa”, pero lo más natural era buscarlo en internet, y esto es lo que sucedió:

  • Si buscabas en Google “autobuses Donosti Vitoria” o “Autobuses San Sebastián Vitoria” el resultado correcto era el séptimo, te salen resultados en PDF donde no puedes comprar el billete online y la web que los vende no lo parece.
  • Usando Google Maps o comparadores de autobuses como Omnio te muestran ALSA o RENFE y no disponen más que de 2 o 3 autobuses al día (mientras que en Pesa había 1 cada hora o menos).
  • ChatGPT también te informaba de que había varios comparadores que lo vendían como Movalia y Omnio pero llegabas igual que Google Maps, con resultados como ALSA o RENFE y la existencia de otro autobús llamado 0B2332 que debes encontrar (y si buscabas eso llegabas de nuevo al PDF).

De hecho la mayoría de la gente que conozco suele ir con tiempo a la estación (o incluso ir unos días antes a comprarlo a la terminal de venta o a taquilla) porque al no reservarlo online muchos de los autobuses se llenan y te tienes que esperar al siguiente que sale una hora más tarde.

Pantalla de venta de billetes online de Pesa y Avanza en online.pesa.net, con campos de origen, destino y fecha
La web de PESA / Avanza / Lurraldebus para comprar billetes online

Definir el problema (el primero de muchos)

Este problema se repite una y otra vez con rutas muy populares y usando otros proveedores distintos a Pesa o Lurraldebus, como para ir de Logroño a Bilbao o de Vitoria al Aeropuerto de Loiu (BIO), que es una ruta nueva de otra compañía que usan miles de personas.

Una vez analizado el problema: la idea es cruzar los datos de los distintos proveedores y ofrecer la mejor ruta indicándole la página web donde puede hacer la compra, ese al menos es el MVP1 que diseñé para Enrique.

Así es como nació la primera versión de Sarebus.

Dos mockups de iPhone con la app Sarebus: resultados de búsqueda de autobuses desde Vitoria-Gasteiz y detalle de ruta con paradas intermedias
MVP de sarebus

GTFS y cómo funcionan los datos

Enrique recogió todos los datos GTFS del NAP o Punto de Acceso Nacional de datos del transporte de España (National Access Point), que centraliza datos de transporte público bajo el Ministerio de Transporte (autobús, tren, metro, marítimo, aéreo, etc.), es la única fuente centralizada, accesible y estándar que comparten todas las compañías de transporte público.

Los GTFS (General Transit Feed Specification) son un estándar abierto para describir servicios de transporte público con datos interesantes como las paradas, rutas, horarios etc. Fue impulsado originalmente por Google y hoy es el formato más utilizado para intercambiar datos de transporte entre operadores y aplicaciones.

La información ya la teníamos, y la prueba de concepto resultó que funcionaba, pero con otros problemas que ya sabíamos que íbamos a tener:

  1. Los nombres son distintos y se duplican, mientras que una compañía llama a la estación de Autobuses de Bilbao “Bilbo Bilbao Intermodal” otra la llama “Estación de autobuses Bilbao Intermodal”.
  2. Hay paradas que están juntas pero que están geolocalizadas en latitudes y longitudes distintas, dos paradas (el bus de ida y de vuelta que pasa por el mismo sitio) pero que localizan como si fueran dos paradas distintas.
  3. Los datos no están agrupados ni por provincia, ni tampoco en sus propios municipios y ciudades, no podía seleccionar “Bilbao” (todas las paradas), sino “Bilbao Bolueta” o “Bilbao Intermodal” (adjunto imagen justo debajo).
  4. Los nombres de los lugares estaban en mayúsculas, minúsculas, en euskera/castellano o directamente la parada la llaman distinta, no siguen ninguna nomenclatura específica, mientras que un proveedor usa todo en mayúsculas “BILBO BILBAO (DEUSTO)” otro lo llama “Deusto (Bilbo / Bilbao)”, y si buscas paradas aleatorias mientras que uno usa la calle completa “Apalategi Kalea 3 Parean, Apalategi” otro de los proveedores usa “Apalategi Eroski” o “Apalategi Gasolinera” que entendemos que es algo más distintivo del lugar.
Formulario de compra de billetes de La Unión Autobuses con origen Bilbao y destinos en Bizkaia
La web de LA UNION AUTOBUSES es la web para viajar por Bizkaia

Trabajando con los datos

Creamos un panel de administración que nos sirviera para trabajar los datos, y Enrique preparó el sistema de tal forma que permitiese no solo buscar las paradas y renombrarlas, sino agruparlas (forman parte de un mismo grupo), unificarlas (son la misma parada), geolocalizarlas visualmente en un mapa para deducir si merece la pena agruparlas o unificarlas, e incluir más información adicional que la que ya teníamos en la base de datos.

Entre otros muchos cambios ahora estamos inmersos en tres muy concretos:

  1. Geolocalizamos las paradas mediante coordenadas cercanas y las unificamos, aunque haya una parada claramente de “estación de autobuses”, los datos nos devuelven 5 o 6 paradas distintas, cuando la parada es la misma: estación de autobuses, la herramienta nos permite conectar unas paradas con otras para que entienda que son la misma parada. Gracias a un mapa que hemos generado identificamos rápidamente dónde están.
  2. Agrupamos en lo que llamamos City Hubs grandes ciudades y los municipios más importantes, por ejemplo, hay pueblos donde localizamos 6 o 7 paradas distintas, una en la gasolinera, otra en la plaza del pueblo y otra en la estación de autobuses (multiplicado por las 6 o 7 paradas duplicadas) creamos una herramienta que nos permite unificarlas y renombrarlas de forma fácil para que tengan una nomenclatura legible, para poder ir a Eibar seleccionando “Todas las paradas” o si lo deseas localizar la más específica (Gasolinera, Estación, etc.).
  3. Hicimos que algunos de estos puntos fueran definibles, aunque llamemos a la parada correctamente “Bilbo / Bilbao (Intermodal)”, debajo en pequeño declaramos que esta parada es una Estación de autobuses (autobus geltokia o bus station). Hacemos eso también con los aeropuertos, universidades etc.

Próximos pasos

Todavía hay muchos frentes que resolver, como la recomendación de rutas con transbordo, o si recomendarle una alternativa (ir andando, en metro, etc.) para cuando seleccione rutas que se queden cortas y no alcancen el destino deseado.

Hay mejoras a muchos niveles sin siquiera meternos en el asunto de la venta de billetes, que no es nuestro principal objetivo, todavía estamos creando una serie de contenidos para posicionar cientos de rutas en Google alimentándola con nuestro propio contenido, queremos que más usuarios lleguen a nuestra web localizando dónde y cómo pueden ir desde el punto A al punto B.

Ya tenemos una base muy importante, si quieres entrar en más detalles sobre los avances del proyecto y las soluciones también hemos abierto un blog en sarebus donde vamos contando novedades del proyecto.

Notas

  1. MVP (Minimum Viable Product). Producto mínimo viable: la versión más reducida de un producto que sirve para validar una idea con usuarios reales, medir si resuelve el problema y aprender qué merece la pena construir después.

últimos artículos publicados