Comunicación corporativa | Investigación | Docencia y Formación

Mapa en tiempo real de los trenes de Cercanías RENFE usando datos abiertos

Una de las cosas que más me interesan del mundo de los datos es comprobar hasta dónde se puede llegar simplemente usando información pública. Este proyecto nace de una pregunta muy sencilla, casi ingenua: ¿se puede saber dónde están los trenes de Cercanías en tiempo real usando datos abiertos?

La respuesta es sí. Y además, no hace falta acceso privilegiado, grandes infraestructuras ni sistemas complejos. Solo hace falta curiosidad, algo de código y ganas de entender cómo funcionan los datos por dentro.

El punto de partida: los datos abiertos

Investigando descubrí que RENFE publica información en tiempo real siguiendo el estándar GTFS-Realtime, un formato ampliamente utilizado en transporte público en todo el mundo. En lugar de una “base de datos” clásica, lo que se ofrece es una API pública que devuelve datos en formato JSON.

Entre esos feeds hay uno especialmente interesante: el de posiciones de trenes, que se actualiza aproximadamente cada 30 segundos. En él aparecen coordenadas geográficas, identificadores de trayectos, estados del tren y etiquetas que incluyen la línea (C1, C5, R1, etc.).

Al principio estos datos no son especialmente intuitivos. Son números, códigos y estructuras repetidas. Pero ahí está precisamente el reto: transformar datos en bruto en algo comprensible.

Entender antes de visualizar

Antes de pensar en mapas o interfaces, dediqué tiempo a entender qué significaba cada campo del JSON. Qué información era útil, qué se repetía, qué podía ignorar. Este paso es clave en cualquier proyecto de datos: no puedes representar lo que no entiendes.

Una vez claro eso, el objetivo fue evidente: convertir esas coordenadas en un mapa que se actualizara automáticamente, sin recargar la página, y que permitiera explorar la red de Cercanías de forma visual.

De Python a la web: la arquitectura

Decidí construir una pequeña aplicación web con una arquitectura sencilla pero real. Por un lado, un servidor en Python usando Flask, encargado de descargar los datos de RENFE, limpiarlos y exponerlos a través de un endpoint propio. Por otro, un frontend en el navegador que consume esos datos y los muestra en un mapa.

Esta separación es importante: el navegador no se conecta directamente a RENFE, sino a mi propio servicio. Eso me permite controlar qué datos envío, cómo los estructuro y cómo evolucionar el proyecto en el futuro.

El mapa: claridad y usabilidad

Para la visualización utilicé OpenStreetMap como base cartográfica y Leaflet como librería de mapas. Son herramientas abiertas, ligeras y muy potentes. Además, añadí un sistema de agrupación de puntos (marker clustering), porque cuando hay muchos trenes visibles, la legibilidad se vuelve crítica.

Poco a poco fui añadiendo elementos que convierten el mapa en algo usable: un panel limpio, filtros por línea, buscador, contador de trenes y actualización automática cada 30 segundos. La idea no era hacer algo espectacular, sino algo claro y funcional.

Errores, bloqueos y aprendizaje real

Como en cualquier proyecto real, no todo funcionó a la primera. Hubo errores de configuración, problemas con el servidor local, bloqueos por el modo debug de Flask, confusión entre comandos de terminal y errores clásicos de indentación en Python.

Lejos de ser un problema, esta parte es la más formativa. Resolver errores reales obliga a entender de verdad qué está pasando y a construir criterio técnico.

El resultado y lo que viene

Hoy el proyecto es una aplicación web local que muestra trenes de Cercanías en tiempo real, se actualiza automáticamente y está preparada para crecer. Ya tengo listos los cimientos para integrar incidencias del servicio, añadir colores según el estado del tren, incorporar estaciones o incluso guardar históricos de circulación.

Más allá del resultado concreto, este proyecto es un recordatorio de algo que considero fundamental: los datos abiertos son una herramienta de aprendizaje, transparencia e innovación enorme. Cuando se publican bien, permiten que cualquiera experimente, construya y entienda mejor el mundo que le rodea.

Y a veces, todo empieza con una pregunta sencilla.

Proyecto disponible en github: https://github.com/guardovich/renfe-realtime-map