El Portal de Datos Abiertos del Ayuntamiento de Valencia es una plataforma en línea donde el Ayuntamiento comparte información en formatos accesibles, facilitando su uso y reutilización por parte de la ciudadanía. Su propósito es promover la transparencia, fomentar la participación ciudadana y permitir el desarrollo de iniciativas basadas en datos abiertos.
Dentro del apartado de Transporte, se encuentra disponible información geográfica sobre las paradas de la Empresa Municipal de Transportes de Valencia (EMT). Este conjunto de datos proporciona detalles clave como la ubicación geográfica, los códigos de vía y portal, la denominación de la parada, las líneas de autobús que la operan y un enlace a los tiempos estimados de llegada.
Los datos se pueden descargar en formato CSV, lo que permite analizarlos y procesarlos con facilidad para realizar estudios de movilidad urbana y optimización del transporte público.
Información geográfica relacionada con las paradas de bus de la EMT
Identificador de conjunto de datos:emt Descargas: 3.944 Temas: Transporte, Urbanismo e Infraestructuras Palabras clave: Redes de transporte Licencia:https://creativecommons.org/licenses/by/4.0/ Modificado: 27 de febrero de 2025 0:01 Publicador: Ayuntamiento de València Frecuencia de actualización: Continuo
Se trata de un dataframe con 1126 observaciones y 9 variables.
Tratamiento
Este dataframe nos muestra bastante información, pero la información geográfica no viene dada de la mejor manera posible, lo que nos puede causar problemas en futuros estudios. Contamos con dos columnas: geo_point_2d y geo_shape. La primera contiene coordenadas en una única celda separadas por comas, mientras que la segunda almacena información en formato JSON. Para facilitar el análisis, realizamos las siguientes mejoras:
En primer lugar extraemos la latitud y la longitud de geo_point_2d en dos columnas separadas para facilitar su uso.
library(tidyr)# Separar la columna geo_point_2d en Latitud y Longitudemt<-separate(emt, geo_point_2d, into =c("Latitud", "Longitud"), sep =", ", convert =TRUE)
La columna geo_shape contiene datos en formato JSON, lo cual no es práctico. Extraemos solo las coordenadas.
Warning: package 'jsonlite' was built under R version 4.4.3
library(dplyr)# Extraer solo las coordenadas de geo_shapeemt<-emt%>%mutate(geo_shape =gsub('.*\\[|\\].*', '', geo_shape))%>%separate(geo_shape, into =c("Longitud_geo", "Latitud_geo"), sep =", ", convert =TRUE)
Vamos a comprobar que todas las coordenadas separadas son idénticas:
Convertimos la columna Línies / Líneas en listas con strsplit() porque originalmente almacena todas las líneas en un solo string separado por comas, lo que dificulta su manipulación en R. Al transformarla en listas, cada parada tiene un conjunto de valores individuales, permitiendo filtrar paradas por línea, contar cuántas líneas pasan por cada una y asignar colores adecuados en un mapa.
# Convertir las líneas de autobús en listasemt$`Línies / Líneas`<-strsplit(emt$`Línies / Líneas`, ",")
La columna Suprimida indica si una parada ha sido eliminada (1 = suprimida, 0 = activa). Vamos a filtrar solo las paradas activas. Así, evitamos incluir en el análisis y en el mapa aquellas paradas que ya no están en funcionamiento, lo que mejora la precisión de los resultados y la utilidad del dataset
# Filtrar solo las paradas activasemt<-emt[emt$Suprimida==0, ]
Con este dataset ya podríamos hacer estudios sobre la movilidad en transporte público en la ciudad de Valencia y elaborar mapas como el siguiente.
library(leaflet)library(leaflet.extras)# Definir coordenadas centrales de Valencialat_centro<-39.4699lng_centro<--0.3763zoom_nivel<-13# Crear el mapa base con zoom centrado en Valenciamapa_calor<-leaflet(emt)%>%setView(lng =lng_centro, lat =lat_centro, zoom =zoom_nivel)%>%# Centrado en ValenciaaddProviderTiles(providers$CartoDB.Positron, group ="Mapa base claro")%>%addProviderTiles(providers$OpenStreetMap, group ="OSM Clásico")%>%addProviderTiles(providers$Esri.WorldImagery, group ="Satélite")%>%# Agregar mapa de calor basado en la densidad de paradasaddHeatmap( lng =~Longitud, lat =~Latitud, intensity =~sapply(emt$`Línies / Líneas`, length), blur =30, max =0.1, radius =20, gradient =c("blue", "yellow", "red"), group ="Mapa de Calor")%>%# Añadir puntos de paradas para referenciaaddCircleMarkers( lng =~Longitud, lat =~Latitud, radius =2, color ="black", fillColor ="white", fillOpacity =0.5, stroke =TRUE, group ="Puntos de Paradas")%>%# Agregar control de capasaddLayersControl( baseGroups =c("Mapa base claro", "OSM Clásico", "Satélite"), overlayGroups =c("Mapa de Calor", "Puntos de Paradas"), options =layersControlOptions(collapsed =FALSE))%>%# Agregar leyenda del heatmapaddLegend( position ="bottomright", colors =c("blue", "yellow", "red"), labels =c("Baja densidad", "Media densidad", "Alta densidad"), title ="Densidad de Paradas", opacity =1)# Mostrar el mapamapa_calor
Este mapa de calor de las paradas de la EMT en Valencia representa la densidad de paradas de autobús en la ciudad, permitiendo identificar las zonas con mayor y menor cobertura del transporte público. Los colores indican la concentración de paradas: las áreas en rojo tienen una alta densidad, lo que sugiere una fuerte accesibilidad al transporte público, mientras que las zonas en amarillo presentan una densidad media. Por otro lado, las áreas en azul o sin color indican menor presencia de paradas, lo que podría representar una menor conectividad.
Este análisis es útil para optimizar la red de transporte, ya que permite detectar zonas con poca cobertura donde podrían añadirse nuevas paradas o mejorar las rutas existentes. Además, puede aplicarse en urbanismo y planificación, comparando la distribución del transporte con datos de población, empleo o desarrollo urbano para garantizar un acceso equitativo.
Otro uso clave es en la accesibilidad y sostenibilidad, ya que un transporte público bien distribuido fomenta su uso y reduce la dependencia del coche privado, contribuyendo a la movilidad sostenible en la ciudad. Gracias a esta visualización, es posible tomar decisiones informadas para mejorar la eficiencia y equidad del transporte en Valencia.
Output
El dataset obtenido ya contiene todas las coordenadas en columnas separadas y el resto de cambios necesarios, por lo que ya podríamos trabajar con él sin problemas. Vamos a exportarlo a Excel ahora que está modificado para poder trabajar con él en el futuro sin tener que repetir los pasos anteriores.
Vamos a volver a convertir las listas de la columna Línies / Líneas para evitar problemas en el guardado. Para ciertos análisis convendría volver a transformarlas en listas con el código anterior.
library(writexl)# Convertir listas en strings para que se guarden correctamenteemt$`Línies / Líneas`<-sapply(emt$`Línies / Líneas`, function(x)paste(x, collapse =", "))
# Guardar en Excel write_xlsx(emt, "emt_final.xlsx")
El archivo generado se puede descargar directamente desde aqui.
Proyectos de Innovación Educativa Emergente PIEE-2737007 y PIEE-3325394