Geosaber
  • Potenciometrico

Curso - Análise Espacial e Interpolação de Dados no R (9 a 13/06)

Curso de Geoestatística

Análise Espacial e Interpolação com R

Author

Sidney Schaberle Goveia

Published

May 13, 2025

Conteúdo

  • Instalação
  • Versão do R e pacotes utilizados neste tutorial
  • 1. Introdução
    • a. R básico
    • b. Métodos de Interpolação
  • 2. Análise Exploratória de Dados
    • a. Estatística Descritiva
    • b. Transformação de dados
    • c. Visualização
  • 3. Variografia
    • a. Variograma experimental
    • b. Ajuste do modelo
    • c. Variogramas direcionais
  • 4. Interpolação
    • a. Krigagem Ordinária
  • Conclusão
  • Referências
Curso de Análise Espacial e Interpolação de Dados no R

Dias 09 a 13 de Junho, das 19h as 21h

Inscrições abertas, vagas limitadas.

https://geosaber.com.br

Instalação

  1. Baixar o R: CRAN.
  2. Instalar o RStudio IDE: RStudio.
  3. Verificar a instalação:
R.version.string
[1] "R version 4.5.0 (2025-04-11)"

Versão do R e pacotes utilizados neste tutorial

  • R 4.5.0 (How About a Twenty-Six)
  • RTools 4.5
# Pacotes
library(gstat)      # v2.1-3
library(sf)         # v1.0-21
library(mapview)    # v2.11.2.9001
library(leafem)     # v0.2.3.9017
library(stars)      # v0.6-9
library(automap)    # v1.1-16
library(terra)      # v1.8-43
library(sp)         # v2.2-0
library(dplyr)
library(ggplot2)

# Base de dados
data(meuse, package = "sp")
data(meuse.grid)

1. Introdução

a. R básico

Exemplo básico de operações espaciais

# Criar um objeto sf simples
pontos <- st_as_sf(data.frame(
  x = c(1, 2, 3, 4),
  y = c(2, 3, 4, 5),
  valor = rnorm(4)
), coords = c("x", "y"))

plot(pontos)

b. Métodos de Interpolação

Exemplo simples de interpolação por inverso da distância

# criar grade de interpolação
grid <- st_bbox(pontos) |> 
  st_as_stars(nx = 10, ny = 10) |> 
  st_set_crs(st_crs(pontos))

# Interpolar
idw_result <- idw(valor ~ 1, pontos, grid)
[inverse distance weighted interpolation]
plot(idw_result)

2. Análise Exploratória de Dados

a. Estatística Descritiva

# Converter data.frame para sf
data(meuse, package = "sp")
meuse_sf <- st_as_sf(meuse, coords = c("x", "y"), crs = 28992)
meuse_grid <- st_as_sf(meuse.grid, coords = c("x", "y"), crs = 28992)  # EPSG:28992 (RD New)

summary(meuse_sf$zinc)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  113.0   198.0   326.0   469.7   674.5  1839.0 
hist(meuse_sf$zinc, main = "Teor de Zinco", col = "skyblue")

b. Transformação de dados

# Transformação logarítmica
meuse_sf$log_zinc <- log(meuse_sf$zinc)
hist(meuse_sf$log_zinc, main = "Log Zinco", col = "red")

c. Visualização

# Mapa interativo
mapview(meuse_sf, zcol = "zinc", layer.name = "Zinco (ppm)")

3. Variografia

a. Variograma experimental

# Calcular variograma experimental
v <- variogram(log_zinc ~ 1, meuse_sf)
plot(v, plot.numbers = TRUE)

b. Ajuste do modelo

# Ajuste automático de variograma
fit <- fit.variogram(v, vgm("Sph"))
plot(v, fit)

c. Variogramas direcionais

# Variograma direcional
v_dir <- variogram(log_zinc ~ 1, meuse_sf, alpha = c(0, 45, 90, 135))
plot(v_dir)

4. Interpolação

a. Krigagem Ordinária

# Interpolação
krig_result <- krige(log_zinc ~ 1, meuse_sf, meuse_grid, model = fit)
[using ordinary kriging]
# Converter o sf data.frame para formato plottável
krig_plot <- krig_result |> 
  cbind(st_coordinates(krig_result)) |>  # Extrair coordenadas X/Y
  st_drop_geometry() |>                  # Remover coluna de geometria
  rename(predicao = var1.pred)           # Renomear coluna de predição

# Plotar com ggplot2
ggplot() +
  # Camada raster da krigagem
  geom_raster(
    data = krig_plot,
    aes(x = X, y = Y, fill = predicao),
    interpolate = TRUE
  ) +
  
  # Camada de pontos observados
  geom_sf(
    data = meuse_sf,
    color = "red",
    size = 1,
    alpha = 0.5,
    inherit.aes = FALSE
  ) +
  
  # Escala de cores
  scale_fill_viridis_c(
    option = "viridis",
    name = "log(Zinco) Predito",
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 1,
      title.position = "top"
    )
  ) +
  
  # Sistema de coordenadas
  coord_sf(datum = st_crs(meuse_sf)) + 
  
  # Rótulos e título
  labs(
    title = "Krigagem Ordinária - Concentração de Zinco",
    x = "Coordenada X",
    y = "Coordenada Y"
  ) +
  
  # Tema e formatação
  theme_minimal() +
  theme(
    legend.position = "bottom",
    panel.grid = element_blank(),
    axis.text = element_text(size = 8)
  )

Conclusão

Principais tópicos abordados:

  • Fundamentos de geoestatística
  • Fluxo de trabalho de análise espacial
  • Técnicas de interpolação avançada

Referências

  • Pebesma, E. (2004). Multivariable geostatistics in S: the gstat package.
  • Bivand, R. S., Pebesma, E., & Gómez-Rubio, V. (2013). Applied spatial data analysis with R.

Copyright

Geosaber₢2025
 
  • https://geosaber.com.br