Mopdelagem de Temperatura com LCZ
Max Anjos
April 08, 2026
Source:vignettes/local_func_modeling.Rmd
local_func_modeling.RmdIntrodução
Compreender as variações de temperatura em ambientes urbanos é
crucial para a pesquisa climática, particularmente ao examinar Ilhas de
Calor Urbanas (ICU). O pacote LCZ4r oferece funções poderosas para criar
mapas interpolados e análises de anomalia térmica dentro das Zonas
Climáticas Locais (LCZs). As funções lcz_interp_map() e
lcz_anomaly_map() podem ser aplicadas para gerar
representações espaciais detalhadas da temperatura do ar, permitindo que
pesquisadores analisem a influência das estruturas urbanas e do uso do
solo nos climas locais.
Neste guia, demonstraremos como usar essas funções para modelar dados de temperatura em Berlim com base nas LCZs, abordando:
- Interpolação espacial da temperatura do ar usando classes LCZ
- Mapeamento de anomalias térmicas para identificar pontos quentes e frios
- Análise temporal em diferentes escalas de tempo
- Opções de personalização para resolução espacial e visualização
library(LCZ4r)
# Get the LCZ map for your city
lcz_map <- lcz_get_map_euro(city = "Berlin")
# Load sample data from LCZ4r
data("lcz_data")::: {.callout .callout-note} ::: {.callout .callout-note} Entendendo a Interpolação Espacial com LCZ:
As funções de interpolação no LCZ4r usam Krigagem, uma técnica geoestatística que considera a autocorrelação espacial para estimar temperaturas em locais não medidos. Ao integrar as classes LCZ, a interpolação considera as características térmicas das diferentes formas urbanas, resultando em distribuições de temperatura mais realistas.
Parâmetros principais: - sp.res: Resolução espacial em metros (padrão: 100 m) - tp.res: Frequência de agregação temporal (hour, day, month) - by: Divide a análise por variáveis temporais ou categóricas :::
Interpolando Temperatura do Ar
A função lcz_interp_map() gera mapas interpolados de
temperatura do ar com base nas classes LCZ. Essas funções aplicam
técnicas de interpolação para estimar temperaturas em toda a área de
estudo.
Interpolação de Mapa para Hora Única
O exemplo a seguir demonstra como gerar um mapa de temperatura para uma data e hora específicas.
# Mapping air temperatures for February 6, 2019 at 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)
# Customize the plot with titles and labels
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]")
Interpolação espacial da temperatura do ar para Berlim às 05:00 do dia 6 de fevereiro de 2019. O mapa revela variações de temperatura entre diferentes classes LCZ, com áreas mais quentes tipicamente correspondendo a zonas compactas construídas.
Interpolação Horária ao Longo de um Dia
O argumento by = "hour" permite gerar uma sequência de
mapas de temperatura horários para um dia específico, com cada hora
representada como uma camada raster individual.
# Generate hourly temperature maps for the entire day
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")
# Rename raster layers with hour numbers
names(my_interp_map) <- paste0("Hour ", 1:24)
# Visualize all hourly maps
lcz_plot_interp(my_interp_map,
title = "Hourly LCZ Air Temperature Patterns",
subtitle = "Berlin - February 6, 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")
Sequência de interpolação horária de temperatura para 6 de fevereiro de 2019, mostrando a evolução diurna dos padrões de temperatura nas classes LCZ de Berlim.
Interpolando Anomalias Térmicas
A função lcz_anomaly_map() destaca anomalias de
temperatura em relação às condições médias nas LCZs. Mapas de anomalia
são particularmente úteis para identificar áreas onde as temperaturas
diferem significativamente dos valores típicos, como hotspots de calor
em áreas urbanas.
Interpolação de Mapa para Dia Único
# Generate a thermal anomaly map for a specific day
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)
# Plot the thermal anomaly map
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 anomalia térmica para Berlim em 6 de fevereiro de 2019. Áreas vermelhas indicam temperaturas acima da média urbana (pontos quentes), enquanto áreas azuis indicam temperaturas abaixo da média (pontos frios).
Anomalias Diurnas e Noturnas
Usando o argumento by = "daylight" a análise é dividida
em períodos diurno e noturno, revelando como os padrões térmicos mudam
entre os ciclos diurnos.
# Separate anomalies into daytime and nighttime
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")
# Rename raster layers for clarity
names(my_anomaly_map) <- c("Daytime", "Nighttime")
# Plot the thermal anomaly maps for day and night
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")
Comparação de anomalias térmicas diurnas e noturnas em 6 de fevereiro de 2019. Isso revela como os padrões térmicos urbanos diferem entre dia e noite, com a ICU tipicamente se intensificando após o pôr do sol.
Opções Avançadas de Modelagem
Padrões Sazonais de Temperatura
Você pode gerar mapas de temperatura para diferentes estações para entender as variações sazonais:
# Generate seasonal temperature maps for 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")
# Visualize seasonal patterns
lcz_plot_interp(seasonal_maps,
title = "Seasonal LCZ Air Temperature Patterns",
subtitle = "Berlin - 2019",
caption = "Source: LCZ4r, 2024",
fill = "Temperature [°C]")Resolução Espacial Personalizada
Ajuste a resolução espacial para atender às suas necessidades de análise:
# High resolution (50 m) for detailed analysis
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)
# Lower resolution (500 m) for regional overview
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)Dica: Resolução espacial mais alta (valores menores de sp.res) produz mapas mais detalhados, mas requer mais recursos computacionais. Comece com a resolução padrão de 100 m e ajuste com base em suas necessidades específicas e poder de computação disponível.
Múltiplos Passos de Tempo
Gere mapas para várias datas para analisar mudanças temporais:
# Generate maps for specific dates across the year
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)
# Visualize the seasonal progression
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]")Trabalhando com Saídas Raster
As funções de interpolação retornam objetos raster que podem ser analisados posteriormente:
Acessando Valores Raster
# Extract raster data for statistical analysis
library(raster)
# Get temperature values for a specific location
temperature_at_point <- extract(my_interp_map,
cbind(longitude, latitude))
# Calculate summary statistics for the study area
mean_temperature <- cellStats(my_interp_map, stat = "mean")
max_temperature <- cellStats(my_interp_map, stat = "max")
min_temperature <- cellStats(my_interp_map, stat = "min")
# Calculate temperature by LCZ class
lcz_values <- extract(my_interp_map, lcz_map)Exportando Rasters
# Save raster as GeoTIFF for use in other software
writeRaster(my_interp_map,
filename = "berlin_temperature_20190206_05h.tif",
format = "GTiff",
overwrite = TRUE)
# Save multiple rasters in a stack
writeRaster(my_interp_map,
filename = "berlin_hourly_temperatures.tif",
bylayer = TRUE,
suffix = "names",
format = "GTiff")Aplicações Práticas
A modelagem de temperatura com LCZ tem inúmeras aplicações práticas:
1. Avaliação da Ilha de Calor Urbana
Identifique áreas com temperaturas persistentemente altas para priorizar intervenções de resfriamento urbano.
2. Alerta Precoce de Ondas de Calor
Use mapas de temperatura interpolados para prever áreas de maior risco durante eventos de calor extremo.
3. Suporte ao Planejamento Urbano
Informe decisões sobre localização de infraestrutura verde, densidade de construção e desenho urbano.
Resumo dos Parâmetros
Aqui está uma referência rápida para os principais parâmetros usados nas funções de interpolação:
| Parâmetro | Descrição | Opções |
|---|---|---|
sp.res |
Resolução espacial em metros | Numérico (ex.: 100, 250, 500) |
tp.res |
Frequência de agregação temporal | “hour”, “day”, “month”, “year” |
by |
Método de divisão dos dados | “hour”, “season”, “month”, “daylight”, etc. |
palette |
Paleta de cores para visualização | “bl_yl_rd”, “viridis”, “magma”, etc. |
fill |
Rótulo da barra de cores | Descrição textual |
title |
Título do gráfico | Texto |
subtitle |
Subtítulo do gráfico | Texto |
caption |
Legenda do gráfico | Texto |
Considerações de Desempenho
Notas Importantes:
- Recursos Computacionais: Mapas de alta resolução (sp.res < 50 m) requerem memória e tempo de processamento significativos
- Densidade de Dados: A precisão da interpolação depende do número e distribuição das estações de monitoramento
- Resolução Temporal: Mapas horários para períodos estendidos podem gerar tamanhos de arquivo grandes
- Representação LCZ: Certifique-se de que sua área de estudo tenha representação adequada de todas as classes LCZ para uma interpolação precisa
Tem sugestões ou feedback?
Você tem uma ideia para melhoria ou encontrou um erro? Adoraríamos saber! Clique no botão abaixo para criar uma nova issue (GitHub) e compartilhar seu feedback ou sugestões diretamente conosco.
Open GitHub issue