library(tidyverse)
library(sf) # ler shapefile
# Exemplo com os três shapefiles
amz <- st_read("../data-raw/dados_brutos/deter_queimadas/deter-amz-deter-public.shp") # ALB (completo, desde 2016)
# cerrado <- st_read("../data-raw/dados_brutos/deter_queimadas/deter-cerrado-nb-deter-public.shp") # Somente desmatamento
pantanal <- st_read("../data-raw/dados_brutos/deter_queimadas/deter-pantanal-deter-public.shp") # Dados de cicatriz de queimada Somente a partir de 2023
# EXEMPLIFICANDO COM AMAZONIA
# Ver estrutura
# str(amz)
#
# # Visualizar os primeiros registros
# head(amz)
# # ou
# glimpse(amz)
#
# # Visualizar nomes das colunas
# names(amz) #Coluna de interesse ("CLASSNAME")
#
# # Visualizar nomes das linhas da coluna "CLASSNAME"
# amz$CLASSNAME
#
# # Quantificar observações
# table(amz$CLASSNAME)
#
# # Verificar valores únicos de classe e estado
# unique(amz$CLASSNAME) # Linha de interesse ("CICATRIZ_DE_QUEIMADA")
# unique(amz$UF) # Somente MT
#
# Filtrar para linha de interesse
amz <- amz |>
# select(CLASSNAME, VIEW_DATE, UF, geometry, MUNICIPALI)
mutate(
bioma = "Amazônia"
) |>
filter(CLASSNAME == "CICATRIZ_DE_QUEIMADA",
UF == "MT")
# Plot simples
# plot(st_geometry(amz))
ggplot(amz) +
geom_sf() + # Preenchimento por bioma, sem contorno
# scale_fill_manual(values = c("Amazônia" = "#1b9e77",
# "Cerrado" = "#d95f02",
# "Pantanal" = "#7570b3")) +
theme_minimal() +
labs(title = "Queimada Amazônia Legal brasileira (DETER)") +
theme(legend.position = "bottom")
# str(cerrado)
# glimpse(cerrado)
# unique(cerrado$UF)
#
# cerrado <- cerrado |>
# mutate(
# bioma = "Cerrado"
# ) |>
# filter(CLASSNAME == "DESMATAMENTO_CR", # Só desmat
# UF == c("MT", "MS", "GO", "DF"))
#
# ggplot(cerrado) +
# geom_sf() + # Preenchimento por bioma, sem contorno
# # scale_fill_manual(values = c("Amazônia" = "#1b9e77",
# # "Cerrado" = "#d95f02",
# # "Pantanal" = "#7570b3")) +
# theme_minimal() +
# labs(title = "Desmatamento Cerrado (DETER)") +
# theme(legend.position = "bottom")
# str(pantanal)
glimpse(pantanal)
unique(pantanal$CLASS_NAME)
pantanal <- pantanal |>
mutate(CLASSNAME = CLASS_NAME,
bioma = "Pantanal") |> # padronizar nome da coluna
filter(CLASSNAME == "cicatriz de queimada")
ggplot(pantanal) +
geom_sf() + # Preenchimento por bioma, sem contorno
# scale_fill_manual(values = c("Amazônia" = "#1b9e77",
# "Cerrado" = "#d95f02",
# "Pantanal" = "#7570b3")) +
theme_minimal() +
labs(title = "Queimada Pantanal (DETER)") +
theme(legend.position = "bottom")
# Unindo shapefiles em um único
deter_all <- bind_rows(amz, cerrado, pantanal)
# Gerando plot dos biomas
ggplot(deter_all) +
geom_sf(aes(fill = bioma), color = NA) +
scale_fill_manual(values = c(
"Amazônia" = "#1b9e77",
"Cerrado" = "#d95f02",
"Pantanal" = "#7570b3"
)) +
theme_minimal() +
labs(title = "Áreas com Cicatriz de Queimada e Desmatamento (DETER)",
fill = "Bioma") +
theme(legend.position = "bottom")
# Baixando arquivo shapefile unido
# write_rds(deter_all, "areas-queimada-biomas")
deter_all$geometry[[1]] |> plot()
deter_all |>
mutate(ANO = year(VIEW_DATE)) |>
filter(ANO == 2021) |>
ggplot() +
geom_sf(aes(fill = bioma), color = NA) +
scale_fill_manual(values = c(
"Amazônia" = "#1b9e77",
"Cerrado" = "#d95f02",
"Pantanal" = "#7570b3"
)) +
theme_minimal() +
labs(title = "Áreas com Cicatriz de Queimada e Desmatamento (DETER)",
fill = "Bioma") +
theme(legend.position = "bottom")
# Averiguação do Cálculo da Área
# pantanal |> slice(1) |> pull(geometry) |> plot()# 0.1000308
# coords <- pantanal$geometry[[1]] |> as.matrix()
# geosphere::areaPolygon(coords) / 1000000
func_ret_x <-function(geometria){
ob <- geometria[[1]] |> as.matrix()
mean(ob[,1])
}
func_ret_y <-function(geometria){
ob <- geometria[[1]] |> as.matrix()
mean(ob[,2])
}
df <- deter_all |>
group_by(geometry) |>
mutate(
ANO = year(VIEW_DATE),
x = func_ret_x(geometry),
y = func_ret_y(geometry)
)
df |>
as_tibble() |>
# write_rds("../data-raw/deter-queimadas.rds")
deter-queimadas.rds# original archive "deter-queimadas.rds" = 122,1mb
deter_queimadas <- read_rds("../data-raw/deter-queimadas.rds") |>
rename(
longitude = x,
latitude = y
)
glimpse(deter_queimadas)
library(sf)
library(dplyr)
library(lwgeom) # para st_make_valid
municipality_sf <- municipality %>%
st_transform(crs = 4326) %>%
st_make_valid()
deter_queimadas_sf <- st_as_sf(
deter_queimadas,
coords = c("longitude", "latitude"),
crs = 4326,
remove = FALSE # mantém as colunas originais lon/lat
)
deter_queimadas_sf <- st_join(
deter_queimadas_sf,
municipality_sf %>% select(name_muni),
join = st_within
)
deter_queimadas_sf <- deter_queimadas_sf %>%
mutate(city_ref = ifelse(is.na(name_muni), "Other", name_muni)) %>%
select(-name_muni) # remove coluna original para evitra duplicada
deter_queimadas <- as.data.frame(deter_queimadas_sf)
glimpse(deter_queimadas)
# Salvar
# write_rds(deter_queimadas, "data-raw/deter_queimadas.rds")
library(sf)
library(geobr)
# Transformar em objeto sf (coordenadas lon/lat, CRS WGS84),
# Nesse caso os pontos já estão em lon/lat, EPSG:4326
deter_queimadas_sf <- st_as_sf(deter_queimadas,
coords = c("longitude", "latitude"),
crs = 4326,
remove = FALSE)
# Estados do geobr (CRS do pacote é o SIRGAS 4674)
estados <- geobr::read_state(year = 2020) |>
st_transform(crs = 4326) # transforma para mesmo sistema de referência de coord (WGS84)
# Join espacial
deter_queimadas <- st_join(deter_queimadas_sf, estados["abbrev_state"])
# Converter para data frame e renomear coluna
deter_queimadas <- as_data_frame(deter_queimadas |>
rename("state" = abbrev_state))
# Visualizar resumo
glimpse(deter_queimadas)
tail(deter_queimadas)
# Padronizar colunas
deter_queimadas <- deter_queimadas |>
mutate(CLASSNAME = as.character(CLASSNAME),
CLASSNAME = case_when(
CLASSNAME == "cicatriz de queimada" ~ "CICATRIZ_DE_QUEIMADA",
TRUE ~ CLASSNAME
))
# Converter para data frame novamente
deter_queimadas <- as_data_frame(deter_queimadas)
# Salvar
# write_rds(deter_queimadas, "../data/deter_queimadas.rds")
Esta base não contém dados de queimada por município, somente os focos por estados
Arquivo deter-fogo-28-09-2025-20_46_38.csv (baixado em: https://terrabrasilis.dpi.inpe.br/app/dashboard/fires/biomes/aggregated/#)
focos_queimadas <- read.csv("../data-raw/dados_brutos/deter_queimadas/all_dashboard-fires-month-25-10-2025-09_15_56.csv",
sep = ";")
# Considerando todo tipo de foco de incêndio
focos_queimadas <- focos_queimadas |>
mutate(
uf = case_when(
uf == "GOIÁS" ~ "GO",
uf == "MATO GROSSO DO SUL" ~ "MS",
uf == "MATO GROSSO" ~ "MT"
)
) |>
filter(
uf == c("GO", "MS", "MT")) |>
separate(date, into = c("ano", "mes"), sep = "/") |>
mutate(
ano = as.integer(ano),
mes = as.integer(mes)
) |>
arrange(ano) |>
group_by(uf, ano) |>
summarise(
focos = sum(focuses, na.rm = TRUE)
)
# Salvar
# write_rds(focos_queimadas, "../data/focos_queimadas.rds")