O APPEEARS (Application for Extracting and Exploring Analysis Ready Samples) é uma plataforma da NASA desenvolvida pela Land Processes Distributed Active Archive Center (LP DAAC) que facilita o acesso e o pré-processamento de dados de sensoriamento remoto, especialmente da coleção MODIS e outros produtos de observação da Terra.
Objetivo
Este pipeline processa dados ecológicos do MODIS
extraídos via APPEEARS, contendo métricas essenciais
para monitoramento vegetativo:
Variáveis Processadas:
- ET (Evapotranspiração) - EVI
(Enhanced Vegetation Index)
- NDVI (Normalized Difference Vegetation Index)
- FPAR (Fraction of Absorbed Photosynthetically Active
Radiation) - LAI (Leaf Area Index)
# Carregar bibliotecas
library(tidyverse)
library(dplyr)
library(geobr)
# Lista de arquivos
csv_files_list <- list.files("../data-raw/AppEEARS/", # arquivos excluídos
pattern = ".csv",
full.names = TRUE)
# Empilhar arquivos
appeears_stack <- purrr::map_dfr(csv_files_list,
readr::read_csv)
Abaixo vamos selecionar camadas de interesses, renomear colunas, extraindo o ano e o mês das datas no formato YYYY-MM-DD, filtrar para nos anos que serão analisados e agrupar por lat e lon. Após o agrupamento é calculado a média das variáveis numéricas por mês e ano.
appeears <- appeears_stack |>
dplyr::select(Latitude, Longitude, Date, MOD15A2H_061_Lai_500m, MOD15A2H_061_Fpar_500m,
MOD13Q1_061__250m_16_days_EVI, MOD13Q1_061__250m_16_days_NDVI,
MOD16A2_061_ET_500m) |>
dplyr::rename(date = Date,
lat = Latitude,
lon = Longitude,
lai = MOD15A2H_061_Lai_500m,
fpar = MOD15A2H_061_Fpar_500m,
evi = MOD13Q1_061__250m_16_days_EVI,
ndvi = MOD13Q1_061__250m_16_days_NDVI,
et = MOD16A2_061_ET_500m) |>
dplyr::mutate(year = lubridate::year(date),
month = lubridate::month(date)) |>
dplyr::filter(
year >= 2015 & year <= 2023
) |>
dplyr::group_by(lat, lon, year, month) |>
dplyr::summarise(
dplyr::across(c(fpar, lai, evi, ndvi, et),
~ mean(., na.rm = TRUE),
.names = "media_{.col}"),
n_observacoes = dplyr::n(),
.groups = 'drop'
) |>
dplyr::arrange(lat, lon, year, month)
# Valores NA na coluna ET (Dados de 2021 a 2024)
# Visualizar dados
dplyr::glimpse(appeears)
# View(appeears)
# Verificacao de pontos Brasil Central
br_country <- geobr::read_country(showProgress = FALSE)
br_country |>
ggplot2::ggplot()+
ggplot2::geom_sf()+
ggplot2::geom_point(
data=appeears |>
dplyr::filter(ano == 2018),
ggplot2::aes(lon,lat)
)
appeears |>
dplyr::filter(ano == 2017) |>
ggplot2::ggplot(ggplot2::aes(lon,lat)) +
ggplot2::geom_point()
# Gerar arquivo com os dados
# readr::write_rds(appeears, '../data-raw/appeears-modis.rds')
library(sf) # para st_make_valid
appeears_modis <- read_rds("../data-raw/appeears-modis.rds")
# 1. Garantir que shapefile de municípios está no mesmo CRS e válido
municipality_sf <- municipality %>%
st_transform(crs = 4326) %>%
st_make_valid()
# 2. Converter seu data frame para sf sem perder colunas
appeears_modis_sf <- st_as_sf(
appeears_modis,
coords = c("lon", "lat"),
crs = 4326,
remove = FALSE # mantém as colunas originais lon/lat
)
# 3. Fazer o join espacial
appeears_modis_sf <- st_join(
appeears_modis_sf,
municipality_sf %>% select(name_muni),
join = st_within
)
# 4. Criar coluna "city_ref", substituindo NA por "Other"
appeears_modis_sf <- appeears_modis_sf %>%
mutate(city_ref = ifelse(is.na(name_muni), "Other", name_muni)) %>%
select(-name_muni) # remove coluna original se não quiser duplicada
# 5. Converter de volta para data frame se não quiser manter como sf
appeears_modis <- as.data.frame(appeears_modis_sf)
# Conferir
glimpse(appeears_modis)
# Transformar em objeto sf (coordenadas lon/lat, CRS WGS84),
# Nesse caso os pontos já estão em lon/lat, EPSG:4326
appeears_modis_sf <- st_as_sf(appeears_modis,
coords = c("lon", "lat"),
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
appeears_modis_incorporado <- st_join(appeears_modis_sf, estados["abbrev_state"])
# Converter para data frame e renomear coluna
appeears_modis_incorporado <- as_tibble(appeears_modis_incorporado |>
rename("state" = abbrev_state))
# Visualizar resumo
glimpse(appeears_modis_incorporado)
# tail(appeears_modis_incorporado)
# Salvar
# write_rds(appeears_modis_incorporado, "../data/appeears_modis.rds")