Fallas de la ciudad de Valencia
Input
En el catálogo de Datos abiertos de la ciudad de Valencia, se encuentra información geográfica organizada en distintas categorías. Dentro del bloque de Cultura y Ocio, es posible acceder a datos espaciales sobre las Fallas, una de las festividades más emblemáticas de la ciudad.
Esta ficha se centra en las Fallas de la ciudad de Valencia y proporciona información detallada, incluyendo la sección a la que pertenecen, el artista fallero y otros datos de interés.
A continuación, se presenta información adicional sobre el conjunto de datos:
Fecha de creación: 23/03/2025
Fecha de revisión: 23/03/2025
Licencia de uso: https://creativecommons.org/licenses/by/4.0/
Los datos están disponibles para su descarga en diversos formatos, como CSV, JSON, EXCEL, GeoJSON, Shapefile, KML, FGB, GPX y Parquet, además de poder visualizarse en un mapa interactivo.
En este caso, se ha utilizado el archivo en formato CSV.
Descripción
Cargamos las librerías necesarias:
Leemos el conjunto de datos desde el portal de datos abiertos de Valencia:
data <- read.csv2("https://valencia.opendatasoft.com/api/explore/v2.1/catalog/datasets/falles-fallas/exports/csv?lang=es&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B")
Se trata de un objeto data.frame
con 350 observaciones y 14 variables:
Para representar los monumentos falleros en un mapa interactivo con leaflet
, es necesario extraer las coordenadas geográficas de cada observación.
El dataset contiene dos columnas con información espacial:
colnames(data)
[1] "OBJECTID" "Id..Falla"
[3] "Nom...Nombre" "Secció...Seccion"
[5] "Fallera.Major...Fallera.Mayor" "President...Presidente"
[7] "Artiste...Artista" "Lema"
[9] "Anyo.Fundació...Año.Fundacion" "Distintiu...Distintivo"
[11] "Esbós...Lema" "Falla.Experimental"
[13] "geo_shape" "geo_point_2d"
Se selecciona la columna geo_point_2d
, ya que almacena las coordenadas en formato de texto "latitud, longitud"
, lo que facilita su procesamiento y visualización.
Ejemplo de los primeros valores de esta columna:
head(data$geo_point_2d, 2)
[1] "39.47271514928657, -0.35007997461738655"
[2] "39.463208352054146, -0.3746039405177908"
Como los valores están en una única cadena de texto, se dividen en dos nuevas columnas: latitud y longitud, utilizando strsplit()
:
coords <- strsplit(data$geo_point_2d, ", ")
data$latitud <- as.numeric(sapply(coords, `[`, 1))
data$longitud <- as.numeric(sapply(coords, `[`, 2))
Una vez obtenidas las coordenadas, se convierte el data.frame
en un objeto de clase sf
y se procede a representar los datos en un mapa interactivo utilizando leaflet
.
data_sf <- st_as_sf(data, coords = c("longitud", "latitud"), crs = 4326)
data_sf %>%
leaflet() %>%
addTiles() %>%
addCircles(label = ~paste("Falla", Nom...Nombre))
Tras visualizar los puntos en el mapa, se detecta que al menos una falla se encuentra fuera de los límites de la ciudad de Valencia.
Tratamiento
Se ha identificado qué observaciones en el conjunto de datos presentan coordenadas geográficas fuera de los límites administrativos de la ciudad de Valencia. La cartografía de la región se ha obtenido del paquete mapSpain
.
Para determinar qué puntos se encuentran dentro y fuera del término municipal de Valencia, se ha realizado una intersección espacial con los límites administrativos oficiales.
munic_spain <- esp_get_munic()
valencia <- munic_spain[munic_spain$cpro == "46" & munic_spain$cmun == "250", ]
valencia <- st_transform(valencia, crs = 4326)
pts_in <- sf::st_intersection(data_sf,valencia)
pts_out <- sf::st_difference(data_sf,valencia)
Como se observa a continuación, se detectan dos observaciones cuyas coordenadas están fuera de los límites de la ciudad:
OBJECTID | Id..Falla | Nom…Nombre | Secció…Seccion | Fallera.Major…Fallera.Mayor | President…Presidente | Artiste…Artista | Lema | Anyo.Fundació…Año.Fundacion | Distintiu…Distintivo | Esbós…Lema | Falla.Experimental | geo_shape | geo_point_2d | codauto | ine.ccaa.name | cpro | ine.prov.name | cmun | name | LAU_CODE | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
242 | 7639 | 356 | Evarist Bas-Cullera | 8C | Tere Saurí Vicent | Antonio J Vega Selma | Antonio Sansano Escribano | Pintant València | 1984 | Fulles (2013) | http://mapas.valencia.es/WebsMunicipales/layar/img/fallasvalencia/2025_356_bm.jpg | 0 | {“coordinates”: [-0.4191242078180465, 39.50486614317032], “type”: “Point”} | 39.50486614317032, -0.4191242078180465 | 10 | Comunitat Valenciana | 46 | Valencia/València | 250 | Valencia | 46250 | POINT (-0.4191242 39.50487) |
306 | 7857 | 299 | Maria Ros-Manuel Iranzo | 7C | Irene López Rodero | Javier Pérez Palomares | Paco y David | Pirateries tots els dies | 1980 | Fulles (2010) | http://mapas.valencia.es/WebsMunicipales/layar/img/fallasvalencia/2025_299_bm.jpg | 0 | {“coordinates”: [-0.3926302284069324, 39.42711859200086], “type”: “Point”} | 39.42711859200086, -0.3926302284069324 | 10 | Comunitat Valenciana | 46 | Valencia/València | 250 | Valencia | 46250 | POINT (-0.3926302 39.42712) |
Al analizar las coordenadas de estos puntos, se identifican dos casos a corregir:
La primera falla aparece en el conjunto de datos con el código de municipio de la ciudad de Valencia. Sin embargo, al contrastar esta información con otras fuentes, se verifica que su código correcto es 46035, lo que confirma que pertenece a un municipio cercano a Valencia. Dado que no forma parte de la ciudad de Valencia, se decide eliminarla del conjunto de datos.
La segunda falla presenta coordenadas incorrectas, por lo que sus datos espaciales han sido descartados y reemplazados mediante imputación manual basada en geocodificación real.
pts_out <- pts_out[pts_out$OBJECTID != 7639, ]
pts_out_df <- st_set_geometry(pts_out, NULL)
pto <- st_point(c(-0.3929340045291308, 39.427392706273295))
coords_out <- st_sfc(pto, crs = 4326)
coords_out_sf <- st_sf(pts_out_df, geom = coords_out)
colnames(coords_out_sf)[colnames(coords_out_sf) == "geom"] <- "geometry"
st_geometry(coords_out_sf) <- "geometry"
fallas_valencia <- rbind(pts_in, coords_out_sf)
Con este proceso, se garantiza que todas las observaciones en el conjunto de datos final estén correctamente ubicadas dentro de los límites administrativos de la ciudad de Valencia.
Output
Hemos obtenido un nuevo objeto sf
, con 349 observaciones y 22 variables:
En la siguiente figura se observa que todas las fallas del nuevo dataset se encuentran correctamente dentro de los límites administrativos de la ciudad de Valencia.
El objeto spain se crea para obtener el mapa de los municipios de España, lo que permite situar la ciudad de Valencia dentro de su contexto geográfico. Posteriormente, se genera limites_val, que define los límites espaciales de Valencia extrayendo su caja delimitadora (bounding box).
spain <- mapSpain::esp_get_munic()
spain <- sf::st_transform(spain, crs=4326)
limites_val <- sf::st_buffer(valencia, 15000) %>% sf::st_bbox()
ggplot() +
geom_sf(data = spain, fill="#CEC1AD") +
geom_sf(data = valencia, fill = "white") +
geom_sf(data = fallas_valencia, color = "#FF5733", alpha = 0.5) +
coord_sf(xlim = c(limites_val["xmin"], limites_val["xmax"]),
ylim = c(limites_val["ymin"], limites_val["ymax"])) +
theme_minimal() +
theme(axis.title = element_blank(),
panel.background = element_rect(fill = "lightblue")) +
ggtitle("Fallas de la ciudad de Valencia")
sf::st_write(fallas_valencia, "fallas_valencia_ciudad.csv")
El fichero generado con el procedimiento descrito anteriormente se puede descargar, en formato CSV, aquí.
Proyectos de Innovación Educativa Emergente PIEE-2737007 y PIEE-3325394