La acumulación de retrasos, paradas interminables o cancelaciones de trenes que están sufriendo los viajeros en España es de tal dimensión que un 47% de los trayectos que hacen los mismos trenes que estaban en funcionamiento en 2023 tardan más en llegar a su destino. Son prácticamente los dos años que han transcurrido con Óscar Puente al frente del Ministerio de Transportes, del que depende tanto la operadora pública Renfe –la que más unidades tiene circulando diariamente por la Península– como Adif , el gestor de una infraestructura ferroviaria repleta de colapsos como los de este verano.Los datos de operativa de Renfe, analizados por ABC a través de la estadística de horario de los servicios de viajeros que actualiza diariamente, revelan cómo cada vez hay más trenes que sufren incidencias que derivan en tiempos de viaje más largos para llegar a sus destinos. El conjunto de la red registra un empeoramiento del 3,2% en los tiempos en trenes de media y larga distancia. Detrás de esta cifra media hay un abanico de circunstancias, la mayoría negativas, frente a un puñado de destinos donde sí han mejorado los tiempos.[En el siguiente mapa interactivo puedes comprobar el tiempo mínimo de viaje entre localidades, y la comparación el tiempo de viaje hace dos años. Selecciona una localidad de origen en el buscador y comprueba la distancia en horas y minutos en un viaje directo con el resto de municipios con paradas de media o larga distancia en sus estaciones, tanto alta velocidad como convencional.]En España hay 18.067 viajes directos de trenes de media y larga distancia (incluidos los AVE) de Renfe, con datos del 31 de agosto de 2025. De los 17.587 trayectos comparables que estaban en 2023 y aún continúan en funcionamiento, en 8.281 (el 47,1%) se tarda más , en 5.389 (el 30,6%) el tiempo es idéntico, y solamente en 3.917 (un 22,3% del total) se viaja más rápido. Hay que tener en cuenta que ahora hay 480 trayectos que no estaban disponibles en 2023 y ahora sí lo están. Y, al mismo tiempo, que 3.232 trayectos de 2023 ya no están en funcionamiento.Los registros de todos los horarios de los trenes de media y larga distancia del último día de la operación retorno de vacaciones del verano están comparados con los del mismo día de 2023. El tiempo medio de viaje está calculado a partir de los horarios, tanto alta velocidad como convencional, sin incluir la red de Cercanías –cuyos problemas se multiplican en centros neurálgicos como Madrid o Barcelona– ni FEVE, los ferrocarriles del norte. La dispersión de datos, que informan sobre la duración del viaje más corto entre todos los trayectos posibles entre un origen y un destino, relega a muchas capitales de provincia a estar continuamente desconectadas de la red por la fuerte incidencia de retrasos que sufren. En concreto, 28 ciudades han empeorado sus tiempos.Mucha España vaciadaTeruel acumula los peores registros: sus viajes por tren son un 31,3% más lentos que hace dos años. Además, ha dejado de contar con el servicio a las provincias de Murcia y Alicante que sí tenía hace dos años. Y sigue siendo la única capital peninsular sin conexión directa en tren con Madrid.Por su parte, Guadalajara –a escasos 50 kilómetros de la capital– es la segunda ciudad que más ha empeorado sus tiempos de viaje: son un 13,7% más lentos. Almería –uno de los núcleos más alejados del centro peninsular– es la tercera, un 12,1% peor que en 2023. Se da la circunstancia de que la ciudad andaluza es desde donde más se tarda en llegar a Madrid en viaje directo, 6 horas y 49 minutos como mínimo, 35 minutos más que en 2023.En el caso de Barcelona , uno de los ejes clave de toda la red ferroviaria, ha empeorado sus tiempos de viaje un 2,6%, prácticamente en la misma proporción que Madrid, un 2,5%. Por cierto, que el trayecto entre la capital y Soria es el viaje directo entre capitales de provincia que más ha empeorado: se tarda 1 hora y 14 minutos más (hasta las 3 horas y 56 minutos). De las 45 conexiones directas de Madrid con otras capitales de provincia, sólo han mejorado los tiempos en 14, en tres se mantienen igual y en 28 han empeorado. Por su parte, de las 28 conexiones directas de Barcelona con otras ciudades, los tiempos han mejorado en nueve, en cuatro se mantienen igual y en 11 son peores. Por ejemplo, a San Sebastián se tarda 40 minutos más (6 horas y 26 minutos). Además, Barcelona es la urbe que más destinos ha perdido en estos dos años: 58 menos (de 201 a 143), seguido de Madrid (27 menos, de 267 a 240), Tarragona (26 menos, de 149 a 123), Lérida (23 menos, de 107 a 84), Zaragoza (21 menos, de 88 a 69) y Sevilla (19 menos, de 88 a 69). En total, 20 capitales de provincia han bajado su número de destinos directos. Por su parte, 13 capitales tienen más conexiones directas en estos dos años. Córdoba (9 más, al pasar de 56 a 65), Valladolid (8 más, de 139 a 147) y Burgos (5 más, de 70 a 75). Catorce no han variado su número de destinos directos.El balance de llegadas solo deja datos positivos para 17 capitales. Oviedo es la ciudad que más ha mejorado sus tiempos, un 13,1% más rápido que hace dos años (25,8% mejor en el caso de las conexiones con otras capitales de provincia). Seguido de Santander (7% más rápido) y Lugo (5,7%).Las conexiones entre capitales de provincia han aumentado. Hay 39 nuevas que en 2023 no había, aunque hay 22 que han dejado de operar. La capital que más conexiones directas con otra capital ha perdido es Murcia, con cinco menos (Barcelona, Castellón, Tarragona, Teruel y Zaragoza). Las vías, levantadasAnte esta realidad estadística, que viene a reflejar los problemas diarios que sufren los viajeros en todo tipo de trenes por toda España, Renfe insiste en que «la mayor parte de la red está en obras» . Y es esta circunstancia la que confluye en los problemas que se registran en los trayectos. Desde el operador público ferroviario, a consultas de ABC, puntualizan que si una buena parte de los tiempos medios empeoran no es exclusivamente por fallos inesperados. En buena medida se debe también a la modificación de horarios en algunos servicios para «ajustarlos a los condicionantes de las líneas»: las actuaciones de Adif; la renovación de los corredores; la electrificación de líneas; el propio desarrollo de la alta velocidad ; la programación de nuevas estaciones o paradas. Y, sobre todo, los Planes Alternativos de Transporte (PAT): el uso de autobuses para cubrir líneas que sufren incidencias y cuyos tiempos medios suponen un incremento con respecto a los que se hacen en tren. En cualquier caso, el ministro Puente ya ha anticipado que los problemas seguirán al menos durante los dos próximos años a medida que se renueven las flotas y se vayan finalizando las obras que se han puesto en marcha durante esta legislatura y la anterior.Así se ha elaborado el mapa de los tiempos de viaje en trenEl tiempo mínimo de viaje del mapa interactivo de este reportaje está calculado a partir de los horarios de media y larga distancia de Renfe, tanto alta velocidad como convencional, del día 31 de agosto de 2025, fecha de la última operación retorno de vacaciones. Puede, por tanto, haber diferencias entre los tiempos del mapa y los tiempos actuales que ofrece Renfe. No está incluida la red de Cercanías ni FEVE.La duración del viaje indicada es la más corta entre todos los trayectos posibles entre un origen y un destino. Se incluye el tiempo sólo en los casos donde es posible el viaje directo. La diferencia del tiempo de viaje con 2023 es la comparación con los horarios del 31 de agosto de 2023. La acumulación de retrasos, paradas interminables o cancelaciones de trenes que están sufriendo los viajeros en España es de tal dimensión que un 47% de los trayectos que hacen los mismos trenes que estaban en funcionamiento en 2023 tardan más en llegar a su destino. Son prácticamente los dos años que han transcurrido con Óscar Puente al frente del Ministerio de Transportes, del que depende tanto la operadora pública Renfe –la que más unidades tiene circulando diariamente por la Península– como Adif , el gestor de una infraestructura ferroviaria repleta de colapsos como los de este verano.Los datos de operativa de Renfe, analizados por ABC a través de la estadística de horario de los servicios de viajeros que actualiza diariamente, revelan cómo cada vez hay más trenes que sufren incidencias que derivan en tiempos de viaje más largos para llegar a sus destinos. El conjunto de la red registra un empeoramiento del 3,2% en los tiempos en trenes de media y larga distancia. Detrás de esta cifra media hay un abanico de circunstancias, la mayoría negativas, frente a un puñado de destinos donde sí han mejorado los tiempos.[En el siguiente mapa interactivo puedes comprobar el tiempo mínimo de viaje entre localidades, y la comparación el tiempo de viaje hace dos años. Selecciona una localidad de origen en el buscador y comprueba la distancia en horas y minutos en un viaje directo con el resto de municipios con paradas de media o larga distancia en sus estaciones, tanto alta velocidad como convencional.]En España hay 18.067 viajes directos de trenes de media y larga distancia (incluidos los AVE) de Renfe, con datos del 31 de agosto de 2025. De los 17.587 trayectos comparables que estaban en 2023 y aún continúan en funcionamiento, en 8.281 (el 47,1%) se tarda más , en 5.389 (el 30,6%) el tiempo es idéntico, y solamente en 3.917 (un 22,3% del total) se viaja más rápido. Hay que tener en cuenta que ahora hay 480 trayectos que no estaban disponibles en 2023 y ahora sí lo están. Y, al mismo tiempo, que 3.232 trayectos de 2023 ya no están en funcionamiento.Los registros de todos los horarios de los trenes de media y larga distancia del último día de la operación retorno de vacaciones del verano están comparados con los del mismo día de 2023. El tiempo medio de viaje está calculado a partir de los horarios, tanto alta velocidad como convencional, sin incluir la red de Cercanías –cuyos problemas se multiplican en centros neurálgicos como Madrid o Barcelona– ni FEVE, los ferrocarriles del norte. La dispersión de datos, que informan sobre la duración del viaje más corto entre todos los trayectos posibles entre un origen y un destino, relega a muchas capitales de provincia a estar continuamente desconectadas de la red por la fuerte incidencia de retrasos que sufren. En concreto, 28 ciudades han empeorado sus tiempos.Mucha España vaciadaTeruel acumula los peores registros: sus viajes por tren son un 31,3% más lentos que hace dos años. Además, ha dejado de contar con el servicio a las provincias de Murcia y Alicante que sí tenía hace dos años. Y sigue siendo la única capital peninsular sin conexión directa en tren con Madrid.Por su parte, Guadalajara –a escasos 50 kilómetros de la capital– es la segunda ciudad que más ha empeorado sus tiempos de viaje: son un 13,7% más lentos. Almería –uno de los núcleos más alejados del centro peninsular– es la tercera, un 12,1% peor que en 2023. Se da la circunstancia de que la ciudad andaluza es desde donde más se tarda en llegar a Madrid en viaje directo, 6 horas y 49 minutos como mínimo, 35 minutos más que en 2023.En el caso de Barcelona , uno de los ejes clave de toda la red ferroviaria, ha empeorado sus tiempos de viaje un 2,6%, prácticamente en la misma proporción que Madrid, un 2,5%. Por cierto, que el trayecto entre la capital y Soria es el viaje directo entre capitales de provincia que más ha empeorado: se tarda 1 hora y 14 minutos más (hasta las 3 horas y 56 minutos). De las 45 conexiones directas de Madrid con otras capitales de provincia, sólo han mejorado los tiempos en 14, en tres se mantienen igual y en 28 han empeorado. Por su parte, de las 28 conexiones directas de Barcelona con otras ciudades, los tiempos han mejorado en nueve, en cuatro se mantienen igual y en 11 son peores. Por ejemplo, a San Sebastián se tarda 40 minutos más (6 horas y 26 minutos). Además, Barcelona es la urbe que más destinos ha perdido en estos dos años: 58 menos (de 201 a 143), seguido de Madrid (27 menos, de 267 a 240), Tarragona (26 menos, de 149 a 123), Lérida (23 menos, de 107 a 84), Zaragoza (21 menos, de 88 a 69) y Sevilla (19 menos, de 88 a 69). En total, 20 capitales de provincia han bajado su número de destinos directos. Por su parte, 13 capitales tienen más conexiones directas en estos dos años. Córdoba (9 más, al pasar de 56 a 65), Valladolid (8 más, de 139 a 147) y Burgos (5 más, de 70 a 75). Catorce no han variado su número de destinos directos.El balance de llegadas solo deja datos positivos para 17 capitales. Oviedo es la ciudad que más ha mejorado sus tiempos, un 13,1% más rápido que hace dos años (25,8% mejor en el caso de las conexiones con otras capitales de provincia). Seguido de Santander (7% más rápido) y Lugo (5,7%).Las conexiones entre capitales de provincia han aumentado. Hay 39 nuevas que en 2023 no había, aunque hay 22 que han dejado de operar. La capital que más conexiones directas con otra capital ha perdido es Murcia, con cinco menos (Barcelona, Castellón, Tarragona, Teruel y Zaragoza). Las vías, levantadasAnte esta realidad estadística, que viene a reflejar los problemas diarios que sufren los viajeros en todo tipo de trenes por toda España, Renfe insiste en que «la mayor parte de la red está en obras» . Y es esta circunstancia la que confluye en los problemas que se registran en los trayectos. Desde el operador público ferroviario, a consultas de ABC, puntualizan que si una buena parte de los tiempos medios empeoran no es exclusivamente por fallos inesperados. En buena medida se debe también a la modificación de horarios en algunos servicios para «ajustarlos a los condicionantes de las líneas»: las actuaciones de Adif; la renovación de los corredores; la electrificación de líneas; el propio desarrollo de la alta velocidad ; la programación de nuevas estaciones o paradas. Y, sobre todo, los Planes Alternativos de Transporte (PAT): el uso de autobuses para cubrir líneas que sufren incidencias y cuyos tiempos medios suponen un incremento con respecto a los que se hacen en tren. En cualquier caso, el ministro Puente ya ha anticipado que los problemas seguirán al menos durante los dos próximos años a medida que se renueven las flotas y se vayan finalizando las obras que se han puesto en marcha durante esta legislatura y la anterior.Así se ha elaborado el mapa de los tiempos de viaje en trenEl tiempo mínimo de viaje del mapa interactivo de este reportaje está calculado a partir de los horarios de media y larga distancia de Renfe, tanto alta velocidad como convencional, del día 31 de agosto de 2025, fecha de la última operación retorno de vacaciones. Puede, por tanto, haber diferencias entre los tiempos del mapa y los tiempos actuales que ofrece Renfe. No está incluida la red de Cercanías ni FEVE.La duración del viaje indicada es la más corta entre todos los trayectos posibles entre un origen y un destino. Se incluye el tiempo sólo en los casos donde es posible el viaje directo. La diferencia del tiempo de viaje con 2023 es la comparación con los horarios del 31 de agosto de 2023.
MAPA
De 17.587 trayectos de 2023, en 8.281 se tarda ahora más, en 5.389 el mismo tiempo y solo 3.917 son más rápidos, aunque la compañía lo achaca a la multitud de obras de la red
La acumulación de retrasos, paradas interminables o cancelaciones de trenes que están sufriendo los viajeros en España es de tal dimensión que un 47% de los trayectos que hacen los mismos trenes que estaban en funcionamiento en 2023 tardan más en llegar a su … destino. Son prácticamente los dos años que han transcurrido con Óscar Puente al frente del Ministerio de Transportes, del que depende tanto la operadora pública Renfe –la que más unidades tiene circulando diariamente por la Península– como Adif, el gestor de una infraestructura ferroviaria repleta de colapsos como los de este verano.
Los datos de operativa de Renfe, analizados por ABC a través de la estadística de horario de los servicios de viajeros que actualiza diariamente, revelan cómo cada vez hay más trenes que sufren incidencias que derivan en tiempos de viaje más largos para llegar a sus destinos. El conjunto de la red registra un empeoramiento del 3,2% en los tiempos en trenes de media y larga distancia. Detrás de esta cifra media hay un abanico de circunstancias, la mayoría negativas, frente a un puñado de destinos donde sí han mejorado los tiempos.
[En el siguiente mapa interactivo puedes comprobar el tiempo mínimo de viaje entre localidades, y la comparación el tiempo de viaje hace dos años. Selecciona una localidad de origen en el buscador y comprueba la distancia en horas y minutos en un viaje directo con el resto de municipios con paradas de media o larga distancia en sus estaciones, tanto alta velocidad como convencional.]
¿Cuánto se tarda en tren?
Distancia en minutos en viaje directo entre todas las localidades con estación de
media o larga distancia y diferencia con 2023
LUIS CANO
Fuente: Elaboración propia a partir de los horarios de Renfe
`;
// generar contenido leyenda
//clases para el control de la leyenda
class LegendControl0
onAdd(map)
this._map = map;
this._container = document.createElement(«div»);
this._container.className = «voc-mapbox-legend-ctrl»;
this._container.innerHTML = legendTest1;
// mete en la leyenda el contenido generado en legend
// this._container.innerHTML = ´aquí podría ir html para rellenar la leyenda en lugar de legend´
return this._container;
onRemove(map)
this._container.parentNode.removeChild(this._container);
this._map = undefined;
function showTransbordo()
currentMode = ‘transbordo’; // Cambia el modo actual a ‘transbordo’
map.setLayoutProperty(‘buffers-layer’, ‘visibility’, ‘visible’);
map.setLayoutProperty(‘second-buffers-layer’, ‘visibility’, ‘visible’);
map.setLayoutProperty(‘directo-buffers-layer’, ‘visibility’, ‘none’);
map.setLayoutProperty(‘directo-second-buffers-layer’, ‘visibility’, ‘none’);
legendControl0._container.innerHTML = legendTest1;
function showDirecto()
currentMode = ‘directo’; // Cambia el modo actual a ‘directo’
map.setLayoutProperty(‘buffers-layer’, ‘visibility’, ‘none’);
map.setLayoutProperty(‘second-buffers-layer’, ‘visibility’, ‘none’);
map.setLayoutProperty(‘directo-buffers-layer’, ‘visibility’, ‘visible’);
map.setLayoutProperty(‘directo-second-buffers-layer’, ‘visibility’, ‘visible’);
legendControl0._container.innerHTML = legendTest1;
map.on(‘load’, () =>
//leyenda dinámica de inicio
legendControl0 = new LegendControl0();
document.getElementById(‘mapbox-top-bar’).appendChild(legendControl0.onAdd(map));
transbordoButton.addEventListener(‘click’, () =>
currentMode = ‘transbordo’;
showTransbordo(); // Actualiza las capas al hacer clic en el botón
);
directoButton.addEventListener(‘click’, () =>
currentMode = ‘directo’;
showDirecto(); // Actualiza las capas al hacer clic en el botón
);
d3.csv(csvFileDirecto).then(function (data)
filteredData = data;
const locations = […new Set(data.map(item => item.localidad_A))];
// Función para actualizar los resultados con el updateFilter
function updateFilterResults(selectedLocation)
const filteredLocationData = filteredData.filter(item => item.localidad_A === selectedLocation);
const searchInput = document.getElementById(‘searchInput’);
// Actualiza el valor del cuadro de búsqueda con los resultados del filtro
if (filteredLocationData.length > 0)
searchInput.value = `$selectedLocation`;
else
searchInput.value = »; // Si no hay resultados, borra el cuadro de búsqueda
if (currentMode === ‘transbordo’)
showTransbordo(); // Muestra las capas de transbordo si el modo es ‘transbordo’
else if (currentMode === ‘directo’)
showDirecto(); // Muestra las capas de directo si el modo es ‘directo’
// Agregar la llamada a map.flyTo() aquí
map.flyTo(
center: [-3.724365, 40.019201],
zoom: 5,
essential: true
);
// Eliminar las capas
if (map.getLayer(‘buffers-layer’))
map.removeLayer(‘buffers-layer’);
if (map.getLayer(‘second-buffers-layer’))
map.removeLayer(‘second-buffers-layer’);
if (map.getLayer(‘directo-buffers-layer’))
map.removeLayer(‘directo-buffers-layer’);
if (map.getLayer(‘directo-second-buffers-layer’))
map.removeLayer(‘directo-second-buffers-layer’);
// Eliminar las fuentes
if (map.getSource(‘buffers-source’))
map.removeSource(‘buffers-source’);
if (map.getSource(‘second-buffers-source’))
map.removeSource(‘second-buffers-source’);
// Agrega la capa de buffers estándar
addBufferLayerToMap(selectedLocation);
// Agrega la capa de buffers secundaria
addSecondBufferLayerToMap(selectedLocation);
// Cerrar el popup actual si existe
if (currentPopup)
currentPopup.remove();
currentPopup = null;
// Quitar el marcador actual si existe
if (currentMarkerSelected)
currentMarkerSelected.remove();
currentMarkerSelected = null;
// Crear un popup sin burbuja con latitud y longitud de las columnas lat_A y lon_B
if (filteredLocationData.length > 0)
const locationData = filteredLocationData[0];
const latitude = parseFloat(locationData.lat_A);
const longitude = parseFloat(locationData.lon_B);
if (!isNaN(latitude) && !isNaN(longitude))
// Crear un marcador personalizado
const markerSelected = document.createElement(‘div’);
markerSelected.className = ‘custom-markerSelected’;
// Agregar el marcador al mapa
currentMarkerSelected = new mapboxgl.Marker(markerSelected)
.setLngLat([longitude, latitude])
.addTo(map);
// Crear un popup personalizado
currentPopup = new mapboxgl.Popup(
closeButton: false,
closeOnClick: false,
offset: [0, 0], // Ajusta la posición del popup
className: ‘custom-popup’ // Agrega la clase CSS personalizada
)
.setLngLat([longitude, latitude])
.setHTML(locationData.localidad_A)
.addTo(map);
// Función para quitar las tildes de una cadena de texto
function quitarTildes(texto)
return texto
.normalize(«NFD») // Normaliza la cadena con caracteres descompuestos (incluye tildes)
.replace(/[u0300-u036f]/g, «»); // Elimina los caracteres diacríticos (tildes)
// Agrega un evento de escucha al campo de búsqueda
document.getElementById(‘searchInput’).addEventListener(‘input’, function ()
const inputValue = this.value.toLowerCase(); // Convierte el valor a minúsculas
const inputWithoutTildes = quitarTildes(inputValue); // Quita las tildes de la entrada del usuario
const uniqueFilteredLocations = locations.filter(location =>
const locationLowerCase = location.toLowerCase();
const locationWithoutTildes = quitarTildes(locationLowerCase); // Quita las tildes de la ubicación
return locationWithoutTildes.includes(inputWithoutTildes);
);
document.getElementById(‘autocompleteResults’).innerHTML = »;
uniqueFilteredLocations.forEach(function (location)
const resultItem = document.createElement(‘div’);
resultItem.className = ‘autocomplete-result’;
resultItem.textContent = location;
resultItem.addEventListener(‘click’, function ()
document.getElementById(‘searchInput’).value = location;
document.getElementById(‘autocompleteResults’).innerHTML = »;
updateFilterResults(location);
);
document.getElementById(‘autocompleteResults’).appendChild(resultItem);
);
);
// Función para añadir la capa buffer al mapa
function addBufferLayerToMap(selectedLocation)
const radiusInKilometers = 20;
const filteredLocationData = filteredData.filter(item => item.localidad_A === selectedLocation);
const bufferFeatures = filteredLocationData.map(item =>
const point = turf.point([parseFloat(item.lon_B), parseFloat(item.lat_B)]);
const buffer = turf.buffer(point, radiusInKilometers, units: ‘kilometers’ );
return
type: ‘Feature’,
geometry: buffer.geometry,
properties:
localidad_A: item.localidad_A,
localidad_B: item.localidad_B,
minutes_time: parseInt(item.Minutes_Time),
tipo: item.tipo,
horas: item.horas,
recorrido: item.recorrido,
grupo: item.grupo,
capa: item.capa,
diferencia: item.diferencia,
diferencia_txt: item.diferencia_txt,
color: item.color,
;
);
map.addSource(‘buffers-source’,
type: ‘geojson’,
data:
type: ‘FeatureCollection’,
features: bufferFeatures,
,
);
map.addLayer(
id: ‘buffers-layer’,
type: ‘fill’,
source: ‘buffers-source’,
paint:
‘fill-color’: [
‘case’,
[‘!=’, [‘get’, ‘color’], null],
[‘match’,
[‘get’, ‘color’],
‘#006837’, ‘#006837’,
‘#adb5bd’, ‘#adb5bd’,
‘#c1121f’, ‘#c1121f’,
‘Otro’, ‘#adb5bd’,
‘#ffffff’
],
‘#ffffff’
],
‘fill-opacity’: 1,
‘fill-outline-color’: ‘transparent’
,
‘layout’:
visibility: ‘none’
,
);
map.addLayer(
id: ‘directo-buffers-layer’,
type: ‘fill’,
source: ‘buffers-source’,
paint:
‘fill-color’: [
‘case’,
[‘!=’, [‘get’, ‘color’], null],
[‘match’,
[‘get’, ‘color’],
‘#006837’, ‘#006837’,
‘#adb5bd’, ‘#adb5bd’,
‘#c1121f’, ‘#c1121f’,
‘Otro’, ‘#adb5bd’,
‘#ffffff’
],
‘#ffffff’
],
‘fill-opacity’: 1,
‘fill-outline-color’: ‘transparent’,
,
‘layout’:
visibility: ‘visible’
,
filter: [‘==’, ‘capa’, ‘Directo’], // Aplica el filtro tipo=Directo
);
var capitalesGrandes = ‘capitales_grandes_txt’;
var capitales = ‘capitales_txt’;
var estacionesTren = ‘estaciones-tren_txt’;
var redFerroviaria = ‘red-ferroviaria’;
// Mover ‘second-buffers-layer’ justo debajo de la capa superior
map.moveLayer(‘buffers-layer’, capitalesGrandes);
map.moveLayer(‘buffers-layer’, capitales);
map.moveLayer(‘buffers-layer’, estacionesTren);
map.moveLayer(‘buffers-layer’, redFerroviaria);
map.moveLayer(‘directo-buffers-layer’, capitalesGrandes);
map.moveLayer(‘directo-buffers-layer’, capitales);
map.moveLayer(‘directo-buffers-layer’, estacionesTren);
map.moveLayer(‘directo-buffers-layer’, redFerroviaria);
// Función para añadir el segundo buffer
function addSecondBufferLayerToMap(selectedLocation)
const radiusInKilometers = 25; // 20 km de radio para el segundo buffer
const filteredLocationData = filteredData.filter(item => item.localidad_A === selectedLocation);
const bufferFeatures = filteredLocationData.map(item =>
const point = turf.point([parseFloat(item.lon_B), parseFloat(item.lat_B)]);
const buffer = turf.buffer(point, radiusInKilometers, units: ‘kilometers’ );
return
type: ‘Feature’,
geometry: buffer.geometry,
properties:
minutes_time: parseInt(item.Minutes_Time),
grupo: item.grupo
;
);
map.addSource(‘second-buffers-source’,
type: ‘geojson’,
data:
type: ‘FeatureCollection’,
features: bufferFeatures,
,
);
map.addLayer(
id: ‘second-buffers-layer’,
type: ‘fill’,
source: ‘second-buffers-source’,
paint:
‘fill-color’: [
‘case’,
[‘!=’, [‘get’, ‘color’], null],
[‘match’,
[‘get’, ‘color’],
‘-5’, ‘#006837’,
‘-4’, ‘#006837’,
‘-3’, ‘#006837’,
‘-2’, ‘#006837’,
‘-1’, ‘#006837’,
‘0’, ‘#ffd60a’,
‘1’, ‘#c1121f’,
‘2’, ‘#c1121f’,
‘3’, ‘#c1121f’,
‘4’, ‘#c1121f’,
‘5’, ‘#c1121f’,
‘Otro’, ‘#ffd60a’,
‘#ffd60a’
],
‘#ffd60a’
],
‘fill-opacity’: 0.5,
,
‘layout’:
visibility: ‘none’
,
);
map.addLayer(
id: ‘directo-second-buffers-layer’,
type: ‘fill’,
source: ‘second-buffers-source’,
paint:
‘fill-color’: [
‘case’,
[‘!=’, [‘get’, ‘grupo’], null],
[‘match’,
[‘get’, ‘grupo’],
‘0’, ‘#980043’,
‘1’, ‘#980043’,
‘2’, ‘#ce1256’,
‘3’, ‘#e7298a’,
‘4’, ‘#df65b0’,
‘5’, ‘#c994c7’,
‘6’, ‘#d4b9da’,
‘7’, ‘#e7e1ef’,
‘8’, ‘#f7f4f9’,
‘9’, ‘#f7f4f9’,
’10’, ‘#f7f4f9’,
’11’, ‘#f7f4f9’,
‘#ffffff’
],
‘#ffffff’
],
‘fill-opacity’: 0.5,
,
‘layout’:
visibility: ‘visible’
,
filter: [‘==’, ‘capa’, ‘Directo’], // Aplica el filtro tipo=Directo
);
const bufferSourceFeatures = map.querySourceFeatures(‘buffers-source’);
const secondBufferSourceFeatures = map.querySourceFeatures(‘second-buffers-source’);
console.log(‘Número de características en buffers-source:’, bufferSourceFeatures.length);
console.log(‘Número de características en second-buffers-source:’, secondBufferSourceFeatures.length);
// Obtener el nombre de la capa que debe quedar por encima de ‘second-buffers-layer’
var capitalesGrandes = ‘capitales_grandes_txt’;
var capitales = ‘capitales_txt’;
var estacionesTren = ‘estaciones-tren_txt’;
var redFerroviaria = ‘red-ferroviaria’;
var placeLabel = ‘place-label’;
// Mover ‘second-buffers-layer’ justo debajo de la capa superior
map.moveLayer(‘second-buffers-layer’, capitalesGrandes);
map.moveLayer(‘second-buffers-layer’, capitales);
map.moveLayer(estacionesTren, capitales);
map.moveLayer(‘second-buffers-layer’, estacionesTren);
map.moveLayer(‘second-buffers-layer’, redFerroviaria);
map.moveLayer(‘second-buffers-layer’, ‘buffers-layer’);
map.moveLayer(placeLabel, ‘buffers-layer’);
map.moveLayer(placeLabel, ‘second-buffers-layer’);
map.moveLayer(‘directo-second-buffers-layer’, capitalesGrandes);
map.moveLayer(‘directo-second-buffers-layer’, capitales);
map.moveLayer(estacionesTren, capitales);
map.moveLayer(‘directo-second-buffers-layer’, estacionesTren);
map.moveLayer(‘directo-second-buffers-layer’, redFerroviaria);
map.moveLayer(‘directo-second-buffers-layer’, ‘directo-buffers-layer’);
map.moveLayer(placeLabel, ‘directo-buffers-layer’);
map.moveLayer(placeLabel, ‘directo-second-buffers-layer’);
let lastHoveredFeature = null; // Variable para rastrear el último feature activo
function handleMouseMove(e)
// Cambia el cursor a un puntero al pasar el cursor sobre el área del búfer
map.getCanvas().style.cursor = ‘pointer’;
// Obtener las características (features) en la ubicación del hover
const features = map.queryRenderedFeatures(e.point,
layers: [‘buffers-layer’, ‘directo-buffers-layer’] // Incluye ambas capas aquí
);
if (features.length > 0)
// Muestra la ventana de información para la primera característica encontrada
const feature = features[0];
// Verifica si el nuevo feature es diferente del último feature activo
if (lastHoveredFeature !== feature)
// Elimina el popup de clic si existe
if (clickPopup)
clickPopup.remove();
clickPopup = null;
// Elimina el popup actual si existe
if (minutesPopup)
minutesPopup.remove();
const description = `
De: $feature.properties.localidad_A
A: $feature.properties.localidad_B
Tiempo mínimo de viaje directo
$feature.properties.horas
Diferencia con 2023: $feature.properties.diferencia_txt
`;
// Muestra la ventana de información para la primera característica encontrada
minutesPopup = new mapboxgl.Popup(
className: ‘minutes-popup’
)
.setLngLat(e.lngLat)
.setHTML(description)
.addTo(map);
// Agrega el manejador de eventos a ambas capas
map.on(‘mousemove’, ‘buffers-layer’, handleMouseMove);
map.on(‘mousemove’, ‘directo-buffers-layer’, handleMouseMove);
// Función para manejar el evento mouseleave
function handleMouseLeave()
map.getCanvas().style.cursor = »; // Restaura el cursor
lastHoveredFeature = null;
if (minutesPopup)
minutesPopup.remove(); // Cierra el popup si existe
// Agrega el manejador de eventos mouseleave a ambas capas
map.on(‘mouseleave’, ‘buffers-layer’, handleMouseLeave);
map.on(‘mouseleave’, ‘directo-buffers-layer’, handleMouseLeave);
function handleLayerClick(e)
// Obtener las características (features) en la ubicación del clic
const features = map.queryRenderedFeatures(e.point,
layers: [‘buffers-layer’, ‘directo-buffers-layer’] // Incluye ambas capas
);
if (features.length > 0)
const feature = features[0];
const description = `
De: $feature.properties.localidad_A
A: $feature.properties.localidad_B
Tiempo mínimo de viaje directo
$feature.properties.horas
Diferencia con 2023: $feature.properties.diferencia_txt minutos
`;
// Elimina el popup de clic si existe
if (clickPopup)
clickPopup.remove();
clickPopup = null;
// Muestra la ventana de información para la característica encontrada
clickPopup = new mapboxgl.Popup(
className: ‘minutes-popup’
)
.setLngLat(e.lngLat)
.setHTML(description)
.addTo(map);
// Agrega el manejador de eventos a ambas capas
map.on(‘click’, ‘buffers-layer’, handleLayerClick);
map.on(‘click’, ‘directo-buffers-layer’, handleLayerClick);
// Define el objeto popup fuera de la función
const popupCruz = new mapboxgl.Popup(
closeButton: false,
closeOnClick: false,
);
// Marcador para cada localización única
function addSelectedLocationMarker(coordinates, locationName)
const marker = document.createElement(‘div’);
marker.className = ‘selected-marker update-cursor’;
marker.style.width = ’10px’;
marker.style.height = ’10px’;
marker.style.backgroundColor = ‘#fff’;
marker.style.border = ‘1px solid #000’;
const mapMarker = new mapboxgl.Marker(marker)
.setLngLat(coordinates)
.addTo(map)
.getElement();
// Agregar un manejador de eventos para cambiar el estilo al hacer hover
mapMarker.addEventListener(‘mouseenter’, () =>
// Cambiar el estilo al hacer hover (amarillo)
mapMarker.style.backgroundColor = ‘#fff’;
mapMarker.style.border = ‘5px solid #000’;
marker.style.width = ’20px’;
marker.style.height = ’20px’;
);
mapMarker.addEventListener(‘mouseleave’, () =>
// Restaurar el estilo al salir del hover
mapMarker.style.backgroundColor = ‘#fff’;
mapMarker.style.border = ‘1px solid #000’; // Restaurar el estilo original
marker.style.width = ’10px’;
marker.style.height = ’10px’;
);
mapMarker.addEventListener(‘click’, () =>
// Pasar el modo actual al hacer clic en el marcador
updateFilterResults(locationName, currentMode);
);
// Carga inicial de marcadores
function loadInitialMarkers()
// Crear marcadores para las localidades iniciales
locations.slice(0, 47).forEach((location) =>
const filteredLocationData = filteredData.filter(item => item.localidad_A === location);
if (filteredLocationData.length > 0)
const latitude = parseFloat(filteredLocationData[0].lat_A);
const longitude = parseFloat(filteredLocationData[0].lon_A);
if (!isNaN(latitude) && !isNaN(longitude))
const coordinates = [longitude, latitude];
addSelectedLocationMarker(coordinates, location);
);
loadInitialMarkers();
map.on(‘zoom’, function (z)
if (map.getZoom() > 6)
document.getElementById(‘voc-mapbox-return’).style.display = ‘block’
else
document.getElementById(‘voc-mapbox-return’).style.display = ‘none’
)
var volvermapapeninsula = document.getElementById(‘voc-mapbox-return’);
volvermapapeninsula.addEventListener(«click», handleReturnPeninsula);
function handleReturnPeninsula()
if (minutesPopup)
minutesPopup.remove();
map.flyTo(
center: [-3.724365, 40.019201],
zoom: 5,
essential: true
);
document.getElementById(‘voc-mapbox-return’).style.display = ‘none’;
);
);
En España hay 18.067 viajes directos de trenes de media y larga distancia (incluidos los AVE) de Renfe, con datos del 31 de agosto de 2025. De los 17.587 trayectos comparables que estaban en 2023 y aún continúan en funcionamiento, en 8.281 (el 47,1%) se tarda más, en 5.389 (el 30,6%) el tiempo es idéntico, y solamente en 3.917 (un 22,3% del total) se viaja más rápido. Hay que tener en cuenta que ahora hay 480 trayectos que no estaban disponibles en 2023 y ahora sí lo están. Y, al mismo tiempo, que 3.232 trayectos de 2023 ya no están en funcionamiento.
Los registros de todos los horarios de los trenes de media y larga distancia del último día de la operación retorno de vacaciones del verano están comparados con los del mismo día de 2023. El tiempo medio de viaje está calculado a partir de los horarios, tanto alta velocidad como convencional, sin incluir la red de Cercanías –cuyos problemas se multiplican en centros neurálgicos como Madrid o Barcelona– ni FEVE, los ferrocarriles del norte.
La dispersión de datos, que informan sobre la duración del viaje más corto entre todos los trayectos posibles entre un origen y un destino, relega a muchas capitales de provincia a estar continuamente desconectadas de la red por la fuerte incidencia de retrasos que sufren. En concreto, 28 ciudades han empeorado sus tiempos.
Mucha España vaciada
Teruel acumula los peores registros: sus viajes por tren son un 31,3% más lentos que hace dos años. Además, ha dejado de contar con el servicio a las provincias de Murcia y Alicante que sí tenía hace dos años. Y sigue siendo la única capital peninsular sin conexión directa en tren con Madrid.
Por su parte, Guadalajara –a escasos 50 kilómetros de la capital– es la segunda ciudad que más ha empeorado sus tiempos de viaje: son un 13,7% más lentos. Almería –uno de los núcleos más alejados del centro peninsular– es la tercera, un 12,1% peor que en 2023. Se da la circunstancia de que la ciudad andaluza es desde donde más se tarda en llegar a Madrid en viaje directo, 6 horas y 49 minutos como mínimo, 35 minutos más que en 2023.
En el caso de Barcelona, uno de los ejes clave de toda la red ferroviaria, ha empeorado sus tiempos de viaje un 2,6%, prácticamente en la misma proporción que Madrid, un 2,5%. Por cierto, que el trayecto entre la capital y Soria es el viaje directo entre capitales de provincia que más ha empeorado: se tarda 1 hora y 14 minutos más (hasta las 3 horas y 56 minutos).
De las 45 conexiones directas de Madrid con otras capitales de provincia, sólo han mejorado los tiempos en 14, en tres se mantienen igual y en 28 han empeorado. Por su parte, de las 28 conexiones directas de Barcelona con otras ciudades, los tiempos han mejorado en nueve, en cuatro se mantienen igual y en 11 son peores. Por ejemplo, a San Sebastián se tarda 40 minutos más (6 horas y 26 minutos).
Además, Barcelona es la urbe que más destinos ha perdido en estos dos años: 58 menos (de 201 a 143), seguido de Madrid (27 menos, de 267 a 240), Tarragona (26 menos, de 149 a 123), Lérida (23 menos, de 107 a 84), Zaragoza (21 menos, de 88 a 69) y Sevilla (19 menos, de 88 a 69). En total, 20 capitales de provincia han bajado su número de destinos directos. Por su parte, 13 capitales tienen más conexiones directas en estos dos años. Córdoba (9 más, al pasar de 56 a 65), Valladolid (8 más, de 139 a 147) y Burgos (5 más, de 70 a 75). Catorce no han variado su número de destinos directos.
El balance de llegadas solo deja datos positivos para 17 capitales.Oviedo es la ciudad que más ha mejorado sus tiempos, un 13,1% más rápido que hace dos años (25,8% mejor en el caso de las conexiones con otras capitales de provincia). Seguido de Santander (7% más rápido) y Lugo (5,7%).
Las conexiones entre capitales de provincia han aumentado. Hay 39 nuevas que en 2023 no había, aunque hay 22 que han dejado de operar. La capital que más conexiones directas con otra capital ha perdido es Murcia, con cinco menos (Barcelona, Castellón, Tarragona, Teruel y Zaragoza).
Las vías, levantadas
Ante esta realidad estadística, que viene a reflejar los problemas diarios que sufren los viajeros en todo tipo de trenes por toda España, Renfe insiste en que «la mayor parte de la red está en obras». Y es esta circunstancia la que confluye en los problemas que se registran en los trayectos. Desde el operador público ferroviario, a consultas de ABC, puntualizan que si una buena parte de los tiempos medios empeoran no es exclusivamente por fallos inesperados. En buena medida se debe también a la modificación de horarios en algunos servicios para «ajustarlos a los condicionantes de las líneas»: las actuaciones de Adif; la renovación de los corredores; la electrificación de líneas; el propio desarrollo de la alta velocidad; la programación de nuevas estaciones o paradas. Y, sobre todo, los Planes Alternativos de Transporte (PAT): el uso de autobuses para cubrir líneas que sufren incidencias y cuyos tiempos medios suponen un incremento con respecto a los que se hacen en tren.
En cualquier caso, el ministro Puente ya ha anticipado que los problemas seguirán al menos durante los dos próximos años a medida que se renueven las flotas y se vayan finalizando las obras que se han puesto en marcha durante esta legislatura y la anterior.
Así se ha elaborado el mapa de los tiempos de viaje en tren
El tiempo mínimo de viaje del mapa interactivo de este reportaje está calculado a partir de los horarios de media y larga distancia de Renfe, tanto alta velocidad como convencional, del día 31 de agosto de 2025, fecha de la última operación retorno de vacaciones. Puede, por tanto, haber diferencias entre los tiempos del mapa y los tiempos actuales que ofrece Renfe. No está incluida la red de Cercanías ni FEVE.
La duración del viaje indicada es la más corta entre todos los trayectos posibles entre un origen y un destino. Se incluye el tiempo sólo en los casos donde es posible el viaje directo. La diferencia del tiempo de viaje con 2023 es la comparación con los horarios del 31 de agosto de 2023.
Límite de sesiones alcanzadas
- El acceso al contenido Premium está abierto por cortesía del establecimiento donde te encuentras, pero ahora mismo hay demasiados usuarios conectados a la vez. Por favor, inténtalo pasados unos minutos.
Volver a intentar
Has superado el límite de sesiones
- Sólo puedes tener tres sesiones iniciadas a la vez. Hemos cerrado la sesión más antigua para que sigas navegando sin límites en el resto.
Sigue navegando
Artículo solo para suscriptores
RSS de noticias de economia