Crecimiento urbano en Valencia: edificios del Catastro INSPIRE con año de construcción (dataset derivado)
datos-espaciales
urbanismo
catastro
sf
Autor/a
Afiliación
Antonio Richarte
Universitat de València
Fecha de publicación
1 de abril de 2026
Input
Se ha obtenido un conjunto de datos geoespacial de edificios del Catastro en el marco de INSPIRE, concretamente del servicio ATOM Buildings. En esta versión reproducible del documento no se realiza ninguna descarga durante el renderizado: se parte de un fichero ZIP del municipio de Valencia ya almacenado localmente dentro del proyecto.
El recurso original presenta varias limitaciones para su uso directo en análisis urbanos. En primer lugar, se distribuye como un fichero comprimido ZIP que contiene un GML con una estructura relativamente compleja y numerosas variables técnicas. En segundo lugar, la variable de fecha de construcción requiere un proceso de limpieza y normalización antes de poder utilizarse en análisis temporales. Por último, en aplicaciones de estudio del crecimiento urbano suele ser más útil trabajar con un subconjunto espacial centrado en el área urbana de interés que con la totalidad del municipio.
La fuente original es la Dirección General del Catastro, dentro de la infraestructura INSPIRE Buildings. Para garantizar la reproducibilidad desde otro equipo, este documento asume que el ZIP ya forma parte de la carpeta del proyecto.
Descripción
El objetivo de este dataset derivado es ofrecer un fichero geoespacial listo para análisis con los edificios del municipio de Valencia, enriquecido con variables útiles para estudiar el crecimiento urbano.
En concreto, el dataset final incluye:
la fecha de construcción normalizada;
el año de construcción extraído como variable numérica;
una clasificación temporal en intervalos por cuantiles;
el área estimada del footprint del edificio;
un recorte espacial de los edificios situados en un radio de 3 km alrededor del centro urbano de Valencia.
De esta manera, el fichero generado resulta más sencillo de utilizar que el GML original y está orientado a tareas habituales de análisis espacial, visualización y estudio de la evolución del tejido urbano.
Tratamiento
options(scipen =999)library(dplyr)library(stringr)library(readr)library(fs)library(sf)library(lubridate)library(classInt)library(ggplot2)dir_raw<-"../data/2526020039/data_raw/catastro"dir_out<-"../data/2526020039/output"fs::dir_create(dir_out, recurse =TRUE)mun<-"VALENCIA"radio_m<-3000# 1) Localizar ZIP ya descargadozip_path<-fs::path(dir_raw, paste0(mun, ".zip"))if(!file.exists(zip_path)){stop(paste0("No se ha encontrado el ZIP local en: ", zip_path,". Guarda ahí el archivo del municipio de Valencia y vuelve a renderizar."))}# 2) Descomprimir en carpeta temporal del proyectounzip_dir<-fs::path(dir_raw, mun)fs::dir_create(unzip_dir)gml_existente<-fs::dir_ls(unzip_dir, recurse =TRUE, regexp ="building\\.gml$")if(length(gml_existente)==0){utils::unzip(zip_path, exdir =unzip_dir)}# 3) Leer GMLgml_file<-fs::dir_ls(unzip_dir, recurse =TRUE, regexp ="building\\.gml$")if(length(gml_file)==0){stop("No se encontró ningún fichero 'building.gml' tras descomprimir el ZIP local.")}gml_file<-gml_file[1]buildings<-sf::st_read(gml_file, quiet =TRUE)# 4) Limpieza de fecha de construcciónbuildings<-buildings%>%dplyr::mutate(beginning2 =stringr::str_replace(beginning, "^-", "0000"))%>%dplyr::mutate(beginning3 =lubridate::ymd_hms(beginning2, quiet =TRUE))%>%dplyr::mutate(beginning_date =lubridate::as_date(beginning3))%>%dplyr::filter(!is.na(beginning_date))%>%dplyr::mutate(year =lubridate::year(beginning_date))if(nrow(buildings)==0){stop("Tras limpiar la fecha de construcción no quedan observaciones válidas.")}# 5) Clases temporales por cuantilesn_classes<-11breaks<-classInt::classIntervals( var =buildings$year, n =n_classes, style ="quantile")labels<-names(print(breaks, under ="<", over =">", cutlabels =FALSE))
buildings<-buildings%>%dplyr::mutate( year_class =cut(year,breaks$brks, labels =labels, include.lowest =TRUE))# 6) Recorte espacial en torno al centro de Valenciacentro<-sf::st_as_sf(data.frame(lon =-0.37680, lat =39.46979), coords =c("lon", "lat"), crs =4326)centro<-sf::st_transform(centro, sf::st_crs(buildings))buf<-sf::st_buffer(centro, dist =radio_m)buildings_crop<-suppressWarnings(sf::st_intersection(buildings, buf))if(nrow(buildings_crop)==0){stop("El recorte espacial ha dado 0 edificios. Revisa el CRS o el radio del buffer.")}# 7) Área y selección de variables finalesout_sf<-buildings_crop%>%dplyr::mutate(area_m2 =as.numeric(sf::st_area(geometry)))%>%dplyr::transmute(gml_id,beginning_date,year,year_class,area_m2,geometry)
summary_tbl<-out_sf%>%sf::st_drop_geometry()%>%dplyr::count(year_class, name ="n_edificios")%>%dplyr::arrange(year_class)out_csv<-fs::path(dir_out, "valencia_edificios_resumen_por_clase.csv")readr::write_csv(summary_tbl, out_csv)# 9) Objetos a mostrar en el documenton_edificios<-nrow(out_sf)crs_salida<-sf::st_crs(out_sf)$inputrango_anios<-range(out_sf$year, na.rm =TRUE)summary_tbl
En esta versión no se realiza ninguna descarga durante el renderizado. El procedimiento parte de un ZIP local ya incorporado al proyecto, lo descomprime, lee el GML con sf, limpia la variable beginning, extrae el año de construcción, genera clases temporales mediante cuantiles y recorta el conjunto a un radio de 3 km alrededor del centro de Valencia. Por último, calcula el área geométrica de cada edificio y guarda un GeoPackage final y un CSV resumen.
Output
Se ha obtenido un dataset derivado en formato GeoPackage con los edificios de Valencia recortados al entorno urbano central y enriquecidos con variables temporales y geométricas. Además, se ha generado un fichero CSV de resumen con el número de edificios por clase temporal.
cat("Número de edificios en el dataset final:", n_edificios, "\n")
ggplot(out_sf)+geom_sf(aes(fill =year_class), color =NA)+labs( title ="Edificios del centro de Valencia por clase temporal de construcción", fill ="")+theme_void()
El fichero principal generado con este procedimiento puede descargarse en la carpeta output/valencia_edificios_crecimiento_urbano.gpkg, mientras que el resumen tabular se guarda en output/valencia_edificios_resumen_por_clase.csv.
El/los fichero(s) generados con este procedimiento/técnica/metodología se puede descargar de aquí.
Proyecto de Innovación Educativa Emergente (PIEE-3898312)