Tipologia dos Dados Espaciais

Estatística Espacial

Prof. Wagner Tassinari

Tipologia dos Dados Espaciais

Classificação Segundo Cressie (1993)

A estatística espacial pode ser dividida em três grandes áreas:

  1. Padrões Pontuais (Point Patterns)
  2. Geoestatística (Geostatistical Data)
  3. Dados de Área (Areal Data)

Padrões Pontuais

Definição

As observações ocorrem de maneira aleatória no espaço, representando a localização exata de eventos.

Características

  • O interesse está nas coordenadas geográficas exatas (latitude, longitude).
  • Objetivo: Entender padrões de agrupamento, dispersão ou aleatoriedade.

1. Padrões Pontuais

Exemplos de Aplicação

  • 🏥 Localização de casos de uma doença notificados em uma cidade

  • 🌳 Distribuição espacial de árvores em um parque urbano

  • 🐾 Registros de avistamentos de animais silvestres em uma reserva

  • 🔥 Focos de incêndio florestal detectados por satélite

  • 🔫 Registros de ocorrências de crimes em uma área urbana

Estrutura de Dados: Padrões Pontuais

Formato dos Dados

Latitude Longitude
-22.90 -43.20
-22.91 -43.22
-22.92 -43.18

Visualização: Padrões Pontuais

Exemplo: Focos de queimadas no Rio de Janeiro

Padrões Pontuais no R

# Lendo os dados
library(readxl)

dados_pontos <- read_excel("dados/queimadas/queimadas_pontos.xlsx")

head(dados_pontos)
# A tibble: 6 × 2
  latitude longitude
     <dbl>     <dbl>
1    -22.6     -42.1
2    -22.6     -42.1
3    -22.7     -43.3
4    -22.6     -42.1
5    -22.7     -43.8
6    -21.1     -42.0

Padrões Pontuais no R

# Transformando em objeto espacial
library(sf)

pontos_sf <- st_as_sf(dados_pontos,
                      coords = c("longitude", "latitude"),
                      crs = 4326)

plot(pontos_sf$geometry, pch = 16, col = "red",
     main = "Focos de Queimadas")

Padrões Pontuais no R

Entendendo o Código R

Funções principais

  • st_as_sf(): Converte um data frame comum em um objeto espacial do tipo sf (Simple Features)
  • coords = c("longitude", "latitude"): Indica quais colunas representam as coordenadas geográficas
  • crs = 4326: Define o Sistema de Referência de Coordenadas (WGS 84 - padrão do GPS)

O que é CRS (Sistema de Referência de Coordenadas)

O CRS é como uma “regra de tradução” entre o que está em um mapa e o mundo real.

  • Define como as coordenadas se relacionam com locais reais na Terra.
  • Sem um CRS, uma coordenada não tem significado geográfico.

WGS 84 (EPSG:4326): Usado por GPS e Google Maps (em graus)

UTM: Usado para mapas locais (em metros)

Baixando o mapa via biblioteca geobr

library(geobr)

# Baixar polígono do RJ (código IBGE = 33)
rj_contorno <- read_state(code_state = 33, year = 2020)

# Plotando o mapa
plot(rj_contorno, title = "Contorno no estato do Rio de Janeiro")

Baixando o mapa via biblioteca geobr

Visualizar o mapa com os pontos

library(ggplot2)
# Plotar
ggplot() +
   geom_sf(data = rj_contorno, fill = "lightgreen", color = "black") +
   geom_sf(data = pontos_sf, color = "red", size = 1.0, alpha = 0.7) +
   labs(title = "Focos de Queimadas - Rio de Janeiro",
       caption = "Fonte: INPE") +
  theme_minimal()

Visualizar o mapa com os pontos

Geoestatística

Definição

Dados com atributo mensurável em localizações contínuas ou irregulares no espaço.

Características

  • Cada ponto tem uma variável medida associada.
  • Objetivo: Analisar dependência espacial e interpolar valores para locais não amostrados.

Exemplos de Aplicação

  • 🌧️ Medição da quantidade de chuva em diferentes locais

  • 🦟 Contagem de ovos de Aedes aegypti em ovitrampas

  • 🌫️ Concentração de poluentes no ar em pontos georreferenciados

  • 🌽 Análise da produtividade agrícola em diferentes talhões

Estrutura de Dados: Geoestatística

Formato dos Dados

Latitude Longitude Atributo Mensurado
-22.90 -43.20 5.4
-22.91 -43.22 6.1
-22.92 -43.18 5.9

Visualização: Geoestatística

Exemplo: Distribuição espacial de FRP (Fire Radiative Power)

Trabalhando com Dados Geoestatísticos em R

Lendo os dados

library(readxl)

# Carregar o arquivo
dados_geo <- read_excel("dados/queimadas/queimadas_geo.xlsx")

head(dados_geo)
# A tibble: 6 × 3
  latitude longitude   frp
     <dbl>     <dbl> <dbl>
1    -22.6     -42.1   2.2
2    -22.6     -42.1   0.9
3    -22.7     -43.3   0.5
4    -22.6     -42.1   0.9
5    -22.7     -43.8   0.6
6    -21.1     -42.0   2.3

Transformando em objeto espacial

library(sf)
dados_geo_sf <- st_as_sf(dados_geo, coords = c("longitude", "latitude"), crs = 4326)
  • st_as_sf(dados_geo, ...): Converte um data frame comum em um objeto espacial do tipo sf

  • coords = c("longitude", "latitude"): Indica quais colunas representam as coordenadas geográficas (primeiro longitude, depois latitude)

  • crs = 4326: Define o Sistema de Referência de Coordenadas como WGS 84 (padrão GPS, coordenadas em graus)

  • dados_geo_sf <-: Armazena o resultado em um novo objeto já no formato espacial

Visualização com Gradiente de Cores

library(ggplot2)
library(sf)

# Plotar com gradiente de cor
ggplot() +
  geom_sf(data = rj_contorno, fill = "gray90", color = "black") +
  geom_sf(data = dados_geo_sf, aes(color = frp), size = 2, alpha = 0.7) +
  scale_color_viridis_c(name = "FRP", option = "plasma") +
  labs(title = "Distribuição Espacial do FRP") +
  theme_minimal()

Visualização com Gradiente de Cores

Dados de Área

Definição:

Fenômenos agregados por unidades geográficas bem definidas, representados por polígonos.

Características:

  • Dados agregados dentro de unidades administrativas (municípios, bairros, setores censitários).

  • Objetivo: Identificar autocorrelação espacial e aplicar modelos de regressão espacial.

Exemplos de Aplicação

  • 📊 Taxa de mortalidade por município

  • 🏥 Número de casos de dengue por bairro

  • 💰 Renda média por setor censitário

  • 🎓 Taxa de alfabetização por região administrativa

Estrutura de Dados: Dados de Área

Formato dos Dados

Polígono Nome do Polígono Atributo Mensurado
110920 Alta Esperança 1000.50
123690 Divino 963.56
130269 Dourados 801.01

Visualização: Dados de Área

Exemplo: Mapa temático com dados agregados por município

Trabalhando com Dados de Área em R

Exemplo: Quantidade de Focos de incêndios por município ocorridos no estado do Rio de Janeiro/Brasil no mês de dezembro de 2025.

Lendo os dados:

# lendo a base de queimadas
dados_area <- readxl::read_excel("dados/dengue/dengue2025.xlsx")
dados_area <- dados_area |>
              dplyr::mutate(tx_dengue = casos / pop2022 * 100000)
head(dados_area)
# A tibble: 6 × 5
  code_muni municipio          pop2022 casos tx_dengue
  <chr>     <chr>                <dbl> <dbl>     <dbl>
1 3300100   Angra dos Reis      169948  1361      801.
2 3300159   Aperibé              11174    88      788.
3 3300209   Araruama            127254  5897     4634.
4 3300225   Areal                13086   201     1536.
5 3300233   Armação dos Búzios   32091   176      548.
6 3300258   Arraial do Cabo      31561   358     1134.

Lendo o Shapefile

Lendo o shapefile via diretório

library(sf)

# Ler arquivo shapefile
rj_municipios <- st_read("malhas/mapa_rj.shp")
Reading layer `mapa_rj' from data source 
  `/home/wagner/Google Drive/UFRRJ/spatial_ebook/apresentacoes/malhas/mapa_rj.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 92 features and 7 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -44.88932 ymin: -23.36893 xmax: -40.95794 ymax: -20.76321
Geodetic CRS:  SIRGAS 2000
names(rj_municipios)
[1] "code_mn"  "name_mn"  "cod_stt"  "abbrv_s"  "nam_stt"  "cod_rgn"  "nam_rgn" 
[8] "geometry"

Lendo o shapefile

Ou baixando via geobr

library(geobr)

# Baixar polígono do RJ (código IBGE = 33)
rj_municipios <- read_municipality(year = 2020) %>%
                 dplyr::filter(code_state == 33)

names(rj_municipios)
[1] "code_muni"    "name_muni"    "code_state"   "abbrev_state" "name_state"  
[6] "code_region"  "name_region"  "geom"        

Padronizando as variaveis e as chaves primárias

# Padronizar os nomes dos municípios em ambos os dataframes
rj_municipios <- rj_municipios |>
  dplyr::mutate(municipio = tolower(name_muni))

dados_area <- dados_area |>
  dplyr::mutate(municipio = tolower(municipio))

# Fazer o left join usando as novas colunas padronizadas
rj_municipios <- rj_municipios |>
     dplyr::left_join(dados_area, by = "municipio")

names(rj_municipios)
 [1] "code_muni.x"  "name_muni"    "code_state"   "abbrev_state" "name_state"  
 [6] "code_region"  "name_region"  "municipio"    "code_muni.y"  "pop2022"     
[11] "casos"        "tx_dengue"    "geom"        

Visualizando Dados de Área

library(ggplot2)

# Plotar mapa temático
ggplot(rj_municipios) +
  geom_sf(aes(fill = tx_dengue), color = "black") +
  scale_fill_viridis_c(option = "F",
    name = "Taxa de incidência de dengue", direction = -1) +
  labs(title = "Taxa de incidência de dengue por Município - RJ") +
  theme_minimal()

Visualizando Dados de Área

Resumo da Tipologia

Tipo de Dado Característica Estrutura Exemplo
Pontual Localização exata (x, y) Casos de dengue
Geoestatístico Variável contínua (x, y, z) Temperatura
Área Dados agregados Polígonos Taxa de mortalidade

Escolhendo o Tipo de Análise

Pergunta-chave:

Qual é a natureza dos meus dados?

  • Tenho pontos exatos de eventos? → Padrões Pontuais
  • Tenho medições contínuas em locais? → Geoestatística
  • Tenho dados agregados por região? → Dados de Área