Modelado de temperatura con LCZ
Max Anjos
April 08, 2026
Source:vignettes/local_func_modeling.Rmd
local_func_modeling.RmdIntroducción
Comprender las variaciones de temperatura dentro de los entornos
urbanos es crucial para la investigación climática, particularmente
cuando se examinan las Islas de Calor Urbanas (UHI). El paquete LCZ4r
ofrece potentes funciones para crear mapas interpolados y análisis de
anomalías térmicas dentro de zonas climáticas locales (LCZ). El
lcz_interp_map() y lcz_anomaly_map() Las
funciones se pueden aplicar para generar representaciones espaciales
detalladas de la temperatura del aire, lo que permite a los
investigadores analizar la influencia de las estructuras urbanas y el
uso del suelo en los climas locales.
En esta guía, demostraremos cómo utilizar estas funciones para modelar datos de temperatura en la LCZ de Berlín, y cubriremos:
- Interpolación espacial de la temperatura del aire usando clases LCZ
- Mapeo de anomalías térmicas para identificar puntos calientes y fríos
- Análisis temporal en diferentes escalas de tiempo
- Opciones de personalización para resolución espacial y visualización
library(LCZ4r)
# Obtén el mapa de la ZLC de tu ciudad.
lcz_map <- lcz_get_map_euro(city = "Berlin")
# Cargar datos de muestra desde LCZ4r
data("lcz_data")Comprensión de la interpolación espacial con LCZ:
Las funciones de interpolación en LCZ4r utilizan Kriging, una técnica geoestadística que considera la autocorrelación espacial para estimar temperaturas en ubicaciones no medidas. Al integrar las clases LCZ, la interpolación tiene en cuenta las características térmicas de diferentes formas urbanas, lo que da como resultado distribuciones de temperatura más realistas.
Parámetros clave: - sp.res: Resolución espacial en metros (predeterminado: 100 m) - tp.res: Frecuencia de agregación temporal (hora, día, mes) - por: divide el análisis por variables temporales o categóricas
Interpolación de la temperatura del aire
El lcz_interp_map() La función genera mapas interpolados
de temperatura del aire basados en clases LCZ. Estas funciones aplican
técnicas de interpolación para estimar temperaturas en el área de
estudio.
Interpolación de mapas de una sola hora
El siguiente ejemplo demuestra cómo generar un mapa de temperatura para una fecha y hora específicas.
# Mapeo de las temperaturas del aire para febrero 6, 2019 en 05:00h
my_interp_map <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "hour",
year = 2019, month = 2, day = 6, hour = 5)
# Personaliza la trama con títulos y etiquetas
lcz_plot_interp(my_interp_map,
title = "LCZ Air Temperature Distribution",
subtitle = "Berlin - February 6, 2019 at 05:00",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")
Interpolación espacial de la temperatura del aire en Berlín a las 05:00 del 6 de febrero de 2019. El mapa revela variaciones de temperatura entre diferentes clases de LCZ, y las áreas más cálidas suelen corresponder a zonas construidas compactas.
Interpolación horaria durante un día
El by = "hour" El argumento le permite generar una
secuencia de mapas de temperatura por horas para un día específico, con
cada hora representada como una capa ráster individual.
# Generar mapas de temperatura por hora para todo el día
my_interp_map <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "hour",
year = 2019, month = 2, day = 6,
by = "hour")
# Cambie el nombre de las capas ráster con números de hora
names(my_interp_map) <- paste0("Hour ", 1:24)
# Visualiza todos los mapas por hora
lcz_plot_interp(my_interp_map,
title = "Hourly LCZ Air Temperature Patterns",
subtitle = "Berlin - February 6, 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")
Secuencia de interpolación de temperatura horaria para el 6 de febrero de 2019, que muestra la evolución diurna de los patrones de temperatura en las clases LCZ de Berlín.
Interpolación de anomalías térmicas
El lcz_anomaly_map() La función resalta las anomalías de
temperatura en relación con las condiciones promedio en las LCZ. Los
mapas de anomalías son particularmente útiles para identificar áreas
donde las temperaturas difieren significativamente de los valores
típicos, como puntos críticos de calor dentro de áreas urbanas.
Interpolación de mapas de un solo día
# Generar un mapa de anomalías térmicas para un día específico
my_anomaly_map <- lcz_anomaly_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "day",
year = 2019, month = 2, day = 6)
# Trazar el mapa de anomalías térmicas
lcz_plot_interp(my_anomaly_map,
title = "LCZ Temperature Anomalies",
subtitle = "Berlin - Daily Anomalies on February 6, 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature Anomaly [°C]",
palette = "bl_yl_rd")
Mapa de anomalías térmicas de Berlín el 6 de febrero de 2019. Las áreas rojas indican temperaturas por encima del promedio urbano (puntos calientes), mientras que las áreas azules indican temperaturas por debajo del promedio (puntos fríos).
Anomalías diurnas y nocturnas
Usando el by = "daylight" El argumento divide el
análisis en períodos diurnos y nocturnos, revelando cómo los patrones
térmicos cambian entre los ciclos diurnos.
# Separe las anomalías en diurnas y nocturnas
my_anomaly_map <- lcz_anomaly_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "hour",
year = 2019, month = 2, day = 6,
by = "daylight")
# Cambie el nombre de las capas ráster para mayor claridad
names(my_anomaly_map) <- c("Daytime", "Nighttime")
# Graficar los mapas de anomalías térmicas para el día y la noche
lcz_plot_interp(my_anomaly_map,
title = "LCZ Temperature Anomalies",
subtitle = "Berlin - Diurnal Cycle on February 6, 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature Anomaly [°C]",
palette = "bl_yl_rd")
Comparación de las anomalías térmicas diurnas y nocturnas el 6 de febrero de 2019. Esto revela cómo los patrones térmicos urbanos difieren entre el día y la noche, y el UHI generalmente se fortalece después del atardecer.
Opciones avanzadas de modelado
Patrones de temperatura estacionales
Puede generar mapas de temperatura para diferentes estaciones para comprender las variaciones estacionales:
# Generar mapas de temperatura estacionales para 2019
seasonal_maps <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "day",
year = 2019,
by = "season")
# Visualice los patrones estacionales
lcz_plot_interp(seasonal_maps,
title = "Seasonal LCZ Air Temperature Patterns",
subtitle = "Berlin - 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")Resolución espacial personalizada
Ajuste la resolución espacial para que coincida con sus necesidades de análisis:
# Resolución alta (50 m) para un análisis detallado
high_res_map <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 50, # Higher resolution
tp.res = "hour",
year = 2019, month = 7, day = 15, hour = 14)
# Menor resolución (500 m) para una visión general regional
low_res_map <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 500, # Lower resolution
tp.res = "hour",
year = 2019, month = 7, day = 15, hour = 14)Consejo: Una resolución espacial más alta (valores sp.res más bajos) produce mapas más detallados pero requiere más recursos computacionales. Comience con la resolución predeterminada de 100 my ajústela según sus necesidades específicas y la potencia informática disponible.
Múltiples pasos de tiempo
Genere mapas para múltiples fechas para analizar cambios temporales:
# Generar mapas para fechas específicas a lo largo del año
selected_dates <- lcz_interp_map(lcz_map,
data_frame = lcz_data,
var = "airT",
station_id = "station",
sp.res = 100,
tp.res = "day",
year = 2019,
month = c(1, 4, 7, 10),
day = 15)
# Visualiza la progresión estacional
lcz_plot_interp(selected_dates,
title = "Seasonal Temperature Progression",
subtitle = "Berlin - 2019 (15th of Jan, Apr, Jul, Oct)",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")Trabajar con salidas ráster
Las funciones de interpolación devuelven objetos ráster que pueden analizarse más a fondo:
Acceso a valores ráster
# Extraer datos ráster para análisis estadístico
library(raster)
# Obtenga los valores de temperatura para una ubicación específica
temperature_at_point <- extract(my_interp_map,
cbind(longitude, latitude))
# Calcular estadísticas descriptivas para el área de estudio
mean_temperature <- cellStats(my_interp_map, stat = "mean")
max_temperature <- cellStats(my_interp_map, stat = "max")
min_temperature <- cellStats(my_interp_map, stat = "min")
# Calcular la temperatura por clase LCZ
lcz_values <- extract(my_interp_map, lcz_map)Exportación de rásteres
# Guarda el ráster como GeoTIFF para usarlo en otro software
writeRaster(my_interp_map,
filename = "berlin_temperature_20190206_05h.tif",
format = "GTiff",
overwrite = TRUE)
# Guarda varios rásteres en una pila
writeRaster(my_interp_map,
filename = "berlin_hourly_temperatures.tif",
bylayer = TRUE,
suffix = "names",
format = "GTiff")Aplicaciones prácticas
El modelado de temperatura con LCZ tiene numerosas aplicaciones prácticas:
1. Evaluación de la isla de calor urbana
Identificar áreas con altas temperaturas persistentes para priorizar las intervenciones de enfriamiento urbano.
2. Alerta temprana de olas de calor
Utilice mapas de temperatura interpolados para predecir áreas de mayor riesgo durante eventos de calor extremo.
3. Apoyo a la planificación urbana
Informar las decisiones sobre la ubicación de infraestructura verde, la densidad de construcción y el diseño urbano.
Resumen de parámetros
A continuación se ofrece una referencia rápida de los principales parámetros utilizados en las funciones de interpolación:
| Parámetro | Descripción | Opciones |
|---|---|---|
sp.res |
Resolución espacial en metros | Numérico (por ejemplo, 100, 250, 500) |
tp.res |
Frecuencia de agregación temporal | “hora”, “día”, “mes”, “año” |
by |
Método de división de datos | “hora”, “estación”, “mes”, “luz del día”, etc. |
palette |
Paleta de colores para visualización | “bl_yl_rd”, “viridis”, “magma”, etc. |
fill |
Etiqueta de barra de color | Descripción del texto |
title |
Título de la trama | Texto |
subtitle |
Subtítulo de la trama | Texto |
caption |
Título de la trama | Texto |
Consideraciones de rendimiento
Notas importantes:
- Recursos computacionales: los mapas de alta resolución (sp.res < 50 m) requieren memoria y tiempo de procesamiento significativos
- Densidad de datos: La precisión de la interpolación depende del número y la distribución de las estaciones de monitoreo
- Resolución temporal: los mapas horarios para períodos prolongados pueden generar archivos de gran tamaño
- Representación LCZ: asegúrese de que su área de estudio tenga una representación adecuada de todas las clases LCZ para una interpolación precisa
¿Tiene comentarios o sugerencias?
¿Tiene una idea para mejorar o detectó un error? ¡Nos encantaría saber de usted! Haga clic en el botón a continuación para crear una nueva edición (GitHub) y compartir sus comentarios o sugerencias directamente con nosotros.
Abrir incidencia en GitHub