Acceso al agua potable pública frente a la sequía en Sicilia
Agua
Sicilia
Crisis Climática
Autor/a
Afiliación
Dario Marotta
Universitat de Valencia
Fecha de publicación
1 de abril de 2026
Input
Se ha obtenido un conjunto de datos espaciales correspondiente a los puntos de agua potable ubicados en la región de Sicilia, Italia. La fuente primaria de estos datos es OpenStreetMap (OSM), extraídos mediante la API de Overpass utilizando el paquete osmdata de R.
Descripción
La elección de esta temática responde a una problemática actual y severa: la emergencia hídrica y la sequía endémica que sufre el sur de Italia, especialmente Sicilia. En este contexto de crisis climática, el acceso público y gratuito al agua potable es un recurso vital tanto para la población residente como para el sector turístico.
Al realizar la descarga en bruto desde OpenStreetMap, se detecta que el conjunto de datos espaciales presenta deficiencias significativas que limitan su utilidad para la gestión pública o la respuesta a emergencias:
Exceso de ruido: Cientos de atributos (columnas) autogenerados que están completamente vacíos (NA) o son irrelevantes para el usuario final.
Falta de estandarización: Muchos puntos carecen de la etiqueta de “nombre”, lo que dificulta su identificación en un visor cartográfico.
Falsos positivos de accesibilidad: Existen puntos catalogados como “agua potable” que en realidad tienen un acceso restringido (ej. access = private o access = customers), lo cual es inútil para un ciudadano que busca una fuente pública en la calle.
Tratamiento
Para mejorar el conjunto de datos y convertirlo en una herramienta fiable, se ha diseñado un script de limpieza en R utilizando el ecosistema tidyverse y sf.
El procedimiento metodológico ha consistido en:
Filtrado de accesibilidad: Eliminar cualquier punto de agua que sea privado o de acceso exclusivo para clientes.
Limpieza de atributos: Seleccionar únicamente las variables útiles (ID, nombre, accesibilidad y municipio) y descartar los metadatos de OSM.
Estandarización (Imputación de datos): Rellenar los valores nulos (NA) en el campo “nombre” con la etiqueta estandarizada “Fuente Pública”.
# Cargamos las librerías necesariaslibrary(tidyverse)library(sf)library(osmdata)library(mapview)# 1. Definir el área de interés y rutas relativas para los archivosbbox_sicilia<-getbb("Sicily, Italy")archivo_bruto<-"fuentes_sicilia_bruto.gpkg"archivo_salida<-"fuentes_publicas_sicilia_mejorado.gpkg"# Usamos servidor espejo para evitar caídas de Overpassset_overpass_url("https://lz4.overpass-api.de/api/interpreter")# 2. Lógica de descarga y mejora de datosif(!file.exists(archivo_salida)|!file.exists(archivo_bruto)){# A. DESCARGA EN BRUTO (Input)query<-opq(bbox_sicilia, timeout =300)%>%add_osm_feature(key ="amenity", value ="drinking_water")datos_brutos<-osmdata_sf(query)puntos_agua<-datos_brutos$osm_points# Guardamos temporalmente el dataset bruto para la comparativa visualst_write(puntos_agua, archivo_bruto, delete_dsn =TRUE, quiet =TRUE)# B. MEJORA DE DATOS (Data Enhancement)agua_mejorada<-puntos_agua%>%# Nos quedamos solo con variables de interésselect(osm_id, name, access)%>%# FILTRO CRÍTICO: Excluir fuentes privadas o exclusivas para clientesfilter(is.na(access)|!access%in%c("private", "customers", "no"))%>%# ESTANDARIZACIÓN: Si no tiene nombre, le asignamos uno genérico en lugar de NAmutate( name =ifelse(is.na(name), "Fuente Pública", name), estado_acceso ="Público/Libre")%>%# Limpiar columna original de access para simplificarselect(-access)# C. EXPORTACIÓN (Output persistente)st_write(agua_mejorada, archivo_salida, delete_dsn =TRUE, quiet =TRUE)}else{# Carga local para asegurar reproducibilidad rápida y mostrar comparativapuntos_agua<-st_read(archivo_bruto, quiet =TRUE)agua_mejorada<-st_read(archivo_salida, quiet =TRUE)}# 3. Cuantificación del impacto de la mejoran_brutos<-nrow(puntos_agua)cols_brutas<-ncol(puntos_agua)n_mejorados<-nrow(agua_mejorada)cols_limpias<-ncol(agua_mejorada)eliminados<-n_brutos-n_mejorados# Calculamos cuántos NA había en el campo 'name' originalnombres_nulos<-sum(is.na(puntos_agua$name))cat("RESULTADOS DEL DATA ENHANCEMENT:\n")