Skip to contents

Introduçã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]")
<
Mapa de interpolação de temperatura para hora única em Berlim

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 mostrando padrões diurnos

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 diário de anomalia térmica para Berlim

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

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.

4. Planejamento de Adaptação Climática

Modele cenários futuros para avaliar a eficácia das estratégias de mitigação propostas.

5. Análise de Saúde Pública

Identifique populações vulneráveis em hotspots de temperatura para intervenções de saúde direcionadas.

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