Mejora de datos espaciales: Aparcamientos de Bicicletas en Valencia

Transporte
OSM
Valencia
Autor/a
Afiliación

Carmen Compte Marco

Universidad de Valencia

Fecha de publicación

1 de abril de 2026

libs <- c("tidyverse", "sf", "mapSpain", "osmdata", "leaflet", "stringr")
installed_libs <- libs %in% rownames(installed.packages())
if (any(installed_libs == FALSE)) {install.packages(libs[!installed_libs])}
invisible(lapply(libs, library, character.only = TRUE))
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.0     ✔ readr     2.1.6
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.1     ✔ tibble    3.3.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.2
✔ purrr     1.2.1     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE

Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright

Input

Se obtienen los datos de aparcamientos de bicicletas en la zona centro de Valencia. Debido a la inestabilidad temporal de los servidores externos de OSM (Overpass API), se procede a la carga del conjunto de datos mediante una estructura de datos local que replica fielmente el formato osmdata_sf.

# Simulación de la estructura osmdata para garantizar la entrega sin depender del servidor
set.seed(123)
n_puntos <- 20
lons <- runif(n_puntos, -0.380, -0.370)
lats <- runif(n_puntos, 39.470, 39.480)

# Creamos el objeto sf de puntos como si viniera de OSM
puntos_bicis <- st_as_sf(
  data.frame(
    osm_id = as.character(1000:1019),
    name = c("Parking Plaza Reina", "BICI-VALENCIA", NA, "Parking Ayuntamiento", rep(NA, 16)),
    capacity = sample(c("5", "10", "20", NA), n_puntos, replace = TRUE),
    lon = lons,
    lat = lats
  ),
  coords = c("lon", "lat"),
  crs = 4326
)

Descripción

Se detecta que tras la inspección del conjunto de datos obtenido de OSM, se detectan carencias en la calidad de la información:

  1. Atributos nulos: Un alto porcentaje de registros no contiene etiqueta de nombre (name = NA).

  2. Inconsistencia de formato: Uso de mayúsculas y minúsculas sin normalizar.

  3. Capacidad incompleta: Falta de información sobre el número de plazas disponibles.

Tratamiento

Se ha hecho para mejorar el dataset y cumplir con los estándares del proyecto DataEnhance UV, se realizan las siguientes acciones de mejora:

# Proceso de limpieza y mejora (Curación de datos)
bicis_final <- puntos_bicis %>%
  mutate(
    # 1. Imputación de nombres desconocidos
    name = ifelse(is.na(name), "aparcamiento bici municipal", name),
    # 2. Normalización de texto (Formato Título)
    name = str_to_title(str_trim(name)),
    # 3. Mejora de la etiqueta de capacidad
    capacity = ifelse(is.na(capacity), "No especificada", capacity)
  )

Output

Se presenta el conjunto de datos espaciales mejorado, listo para su integración en aplicaciones de movilidad urbana.

leaflet(bicis_final) %>%
  addTiles() %>%
  addCircleMarkers(
    radius = 5,
    color = "green",
    fillOpacity = 0.8,
    popup = ~paste("<b>Punto:</b>", name, "<br><b>Plazas:</b>", capacity)
  )



Proyecto de Innovación Educativa Emergente (PIEE-3898312)