1) O documento introduz o uso de dados espaciais no R para estudos ambientais, apresentando os principais formatos, conversões e visualizações de dados espaciais no R.
2) É ensinado como importar, projetar e visualizar dados espaciais vetoriais e de malha no R, utilizando pacotes como sf, rgdal e raster.
3) Também é mostrado como relacionar dados espaciais com tabelas de atributos usando juntas no pacote dplyr.
Dados Espaciais em R: Introdução à Análise Espacial
1. Dados Espaciais em R
Ângela Terumi Fushita
Vitor Vieira Vasconcelos
Introdução ao uso de dados espaciais para estudos ambientais
Programa de Pós-Graduação em Ciência e Tecnologia Ambiental
Universidade Federal do ABC
Fevereiro, 2020
São Bernardo do Campo - SP
3. Conteúdo
•Principais formatos de dados espaciais em R
•Conversão entre formatos de dados espaciais
•Reprojeção de sistemas de coordenadas
•Junção de dados tabulares e espaciais
•Visualização de dados espaciais
•Layout de mapas
•Exportar do R
4. Principais linguagens para
análise espacial
●
R
– Estatística espacial
●
Python
– Automação interna (QGis, ArcGis)
– Big Data
●
PostGreSQL
– Bancos de dados espaciais em servidores
– Geoportais
6. É sempre recomendável verificar
atualizações nos pacotes instalados
antes de começar a trabalhar
Abrir o R Studio
7. Fontes de Referência
CRAN Task View: Analysis of Spatial Data
https://cran.r-project.org/web/views/Spatial.html
Links para os manuais de cada pacote R
8. Livros
Mas, Jean-Francois,
Horta, M.B.
Vasconcelos, R. N.
Análise espacial com
R. Feira de Santana:
UEFS Editora, 2019.
●
Operações básicas
em R para análise
espacial
https://bit.ly/2KpSI7C
https://www.researchgate.net/publication/33
2865022_Analise_espacial_com_R
9. Livros
Lovelace, Robin; Nowosad,
J.; Muenchow, J.
Geocomputation with R.
CRC Press. 2019.
https://geocompr.robinlovelace.net/
●
Conteúdo de
referência:
– Dados vetoriais (sf) e
raster
– Visualização
10. Livros
Bivand, Roger. S., Pebesma, E.
J., Gomez-Rubio, V., &
Pebesma, E. J. (2013). Applied
spatial data analysis with R.
New York: Springer.
https://app.box.com/s/uti6bqyisc
qpoqu2dsmd06yk5xw5m9qw
Site de apoio:
https://asdar-book.org/
●
Conteúdo de referência
– Dados vetoriais e raster
(formato sp)
– Estatística espacial
12. Elementos de um mapa
Título
Rosa dos Ventos
Escala Gráfica
Mapa e
coordenadas
LegendaLegenda
• Sistema de projeção
• Fontes das bases
cartográficas
• Método de
visualização
• Autoria e data
13. Materiais de aula disponiveis em:
https://app.box.com/s/rlp75p8gvl1v363g1v4m6xbb4rdlz91y
Baixar os dados em:
D:/R_CTA/aula_3/
●
Pasta de nome curto, perto da raiz, sem
caracteres especiais, nem espaços
●
Não criar pasta em “Área de trabalho”,
“Meus documentos”, etc...
17. ●
Ao criar o projeto, ele já especifica a mesma pasta
como diretório de trabalho
●
Confirmando o diretório de trabalho
getwd()
[1] "D:/R_CTA/aula3"
●
Criar um novo script de
programação
19. Roteiro
• Abrir a tabela “pocos_abc.csv”
• Dados obtidos no sistema Siagas
http://siagasweb.cprm.gov.br
• O formato CSV é o recomendado para importação
no R
• Recomendação: converter do XLS para o CSV no
LibreOffice
• O LibreOffice é mais recomendado que o Excel para
trabalhar com formatos CSV e DBF
• Na hora de gravar arquivos CSV e DBF no LibreOffice,
configure e anote qual é o sistema de codificação.
- Sistema UTF-8 lida melhor com caracteres
especiais
31. Pacotes a serem utilizados
readr Leitura de tabelas
rgdal Conversão de formatos espaciais e projeções
sf Formato espacial sf
dplyr Manipulação de banco de dados (com uniões)
raster Formato espacial raster
prettymapr Escalas e legendas em método incremental
tmap Mapas em método não-incremental
install.packages( ) Instala
library( ) Carrega na memória
32. • Grave o script de trabalho (arquivo de extensão *.R)
33. • Imprimir nosso primeiro mapa
plot(latitude_decimal ~longitude_decimal, data=pocos_abc )
34. Principais pacotes para
formatos espaciais em R
•sp: classes e métodos para dados espaciais
•sf (Simple Features): atualização do sp nos
padrões Open Geospatial Consortium
(OGC)
•raster: extensão do sp para dados raster
CRAN Task View: Analysis of Spatial Data https://cran.r-project.org/web/views/Spatial.html
Além de formatos específicos de cada pacote
36. Pacotes para acesso a
bases de dados externas
•rgdal e maptools:
conversão de formatos espaciais
•OpenStreetMap, rosm e osmdata:
OpenStreetMaps
•RgoogleMaps, googleway e ggmap:
Google Maps
•ows4R: geoservicos de portais WebGis
CRAN Task View: Analysis of Spatial Data https://cran.r-project.org/web/views/Spatial.html
37. Pacote sf
Lovelace, R.; Nowosad, J.;
Muenchow, J. Geocomputation with R.
CRC Press. 2019.
Além de formatos
específicos com
curvas em vez de
linhas (para CAD)
38. Pacote sf
sfg
Geometria de um objeto
sfg
Geometria de um objeto
sfg
Geometria de um objeto
sfc
Lista de geometrias de
objetos
Simple feature geometry
Simple feature column
sf
data.frame de
atributos e sfc
Simple feature
41. Projeções
• Site oficial: http://www.epsg-registry.org/
• Pegar código Proj4: http://spatialreference.org
• Pacote rgdal
• Ou copiando de uma outra base projetada
44. Selecione a opção Proj4
+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs
45. Trabalhando com projeções no R
install.packages("rgdal")
library(rgdal)
EPSG <- make_EPSG()
View(EPSG)
National Center for Ecological Analysis and Synthesis, University of Califórnia, Santa
Barbara, https://www.nceas.ucsb.edu/scicomp/recipes/projections
46. ●
Como exemplo, procure pela projeção SIRGAS 2000
●
A função “grep” procura casos na tabela que tenham
a expressão desejada
consulta_sirgas <-
EPSG[grep("SIRGAS 2000", EPSG$note, ignore.case=TRUE), 1:3]
View(consulta_sirgas)
National Center for Ecological Analysis and Synthesis, University of Califórnia, Santa Barbara,
https://www.nceas.ucsb.edu/scicomp/recipes/projections
47. ● Recorte a informação PROJ.4 para um código EPSG
subset(EPSG, code==4674)
sirgas2000 <- "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"
ou
sirgas2000 <- as.character(EPSG[321, 3])
● Atribua a projeção a uma variável
48. Atividade 1
Criar uma varável para armazenar a
projeção WGS 84, que possui
EPSG 4326
Sugestão: abrir uma nova aba de script
no RStudio para gravar os códigos das
atividades e submeter no fim da aula
54. • Simple feature geometry (sfg): lista de pares de coordenadas (vértices)
• Simple feature column (sfc): lista de linhas
• Simple features (sf): tabela de atributos associados a uma lista de linhas
Linhas
Bivand, Roger. 2014. Applied Spatial Data Analysis with R. Open Source Geospatial
Research and Education Symposium, Aalto University, Finland
Rowlingson, Barry. Geospatial data in R and beyond! Lancaster University, 2012
55. • Simple feature geometry (sfg): lista de pares de coordenadas em que
o último vértice coincide com o primeiro.
• Simple feature column (sfc): lista de polígonos
• Simple features (sf): tabela de atributos associados a uma lista de
polígonos
Polígonos
Bivand, Roger. 2014. Applied Spatial Data Analysis with R. Open Source Geospatial Research and
Education Symposium, Aalto University, Finland
Rowlingson, Barry. Geospatial data in R and beyond! Lancaster University, 2012
Polígonos multi-parte (ilhas)
Polígonos com buracos (anéis)
56. Próximos passos
●
Importar um arquivo shapefile com
hidrografia do ABC paulista
1:50.000, vetorizadas das cartas do IBGE
Fonte: http://datageo.ambiente.sp.gov.br
●
Função read_sf, do pacote sf, converte
arquivos para formato sf
padrão: read_sf(“arquivo.extensão”)
hidrografia_abc <- read_sf("hidrografia_abc.shp")
57. st_crs(hidrografia_abc)
●
Essa é a projeção Sirgas 2000 UTM 23S
●
Vamos retransformar para Sirgas 2000
●
Função st_transform(arquivo, projeção desejada)
hidrografia_abc_sirgas2000<-st_transform(hidrografia_abc,
st_crs(sf_pocos_abc))
hidrografia_abc_sirgas2000<-st_transform(hidrografia_abc, 4674)
ou
ou
hidrografia_abc_sirgas2000<-st_transform(hidrografia_abc, sirgas2000)
59. Importando polígonos
●
Abrir um shapefile com os setores censitários do
Estado de São Paulo (Censo 2010, IBGE)
ftp://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_de_setores_censitario
s__divisoes_intramunicipais/censo_2010/setores_censitarios_shp/sp/sp_setores_censitarios.zip
setores_sp <- read_sf("35SEE250GC_SIR.shp")
View(setores_sp)
60. Códigos do IBGE para o ABC
CD_GEOCODM NM_MUNICP
3513801 DIADEMA
3529401 MAUÁ
3547809 SANTO ANDRÉ
3548708 SÃO BERNARDO DO CAMPO
3548807 SÃO CAETANO DO SUL
3543303 RIBEIRÃO PIRES
3544103 RIO GRANDE DA SERRA
64. ●
Dados do Censo 2010:
ftp://ftp.ibge.gov.br/Censos/Censo_Demografico_2010/Resultados_do_Universo/Agregados_por_Setores_Censitarios/
censo2010 <- read.csv("censo2010.csv",sep = ";", dec = ",")
View(censo2010)
●
Código do setor censitário
●
Setor: Urbano (1-3) e Rural (4-7)
●
Domicílios
●
Pessoas
●
Renda média do(a) chefe de domicílio
●
% de coleta de esgoto
●
% de coleta de lixo
65. install.packages("dplyr")
library(dplyr)
setores_abc_censo <- left_join(setores_abc, censo2010, by =
c(CD_GEOCODI = "Cod_setor"))
Error: Can't join on 'Cod_setor' x 'CD_GEOCODI' because of
incompatible types (numeric / character)
is.numeric(censo2010$Cod_setor)
is.numeric(setores_abc$CD_GEOCODI)
setores_abc$CD_GEOCODI <- as.numeric (setores_abc$CD_GEOCODI)
setores_abc_censo <- left_join(setores_abc, censo2010, by =
c(CD_GEOCODI = "Cod_setor"))
68. O pacote plotKML possui opções mais avançadas de
exportação de KML, incluindo cores, legendas,
visualização 3D, dados espaço-temporais, fotos e rasters
http://plotkml.r-forge.r-project.org/fig_eberg_two_aesthetics.jpg
69. plot(setores_abc_censo["Renda"], axes = TRUE,
border = NA, cex.axis=0.5, breaks = "quantile")
Primeiro mapa temático
Camada
Tamanho do
texto na grade de
coordenadas
Grade de
CoordenadasVariável
Não desenhar
bordas dos
polígonos
Método de
classificação
Comando plot do
pacote sf
70. breaks = “métodos de classificação”
●
fixed: definidos pelos usuário
●
equal: intervalos iguais
●
pretty: quase intervalos iguais, em números
arredondados
●
quantile: número de objetos iguais por classe
●
sd: desvio padrão em relação à média
●
fisher: quebras naturais
e outros
72. Atividade 2
Criar um mapa do percentual de
rede de esgoto com intervalo por
quebras naturais
Submeter código e imagem do mapa
73. Pacote raster
●
Extensão das classes sp
●
Permite trabalhar com arquivos maiores e
de forma mais eficiente
●
RasterLayer → uma camada raster
●
RasterBrick → várias camadas em um
arquivo
●
RasterStack → tabela apontando para
diversas camadas raster
76. Pacotes para visualização de
dados espaciais
• sp, sf, raster: visualização básica
• lattice, ggplot2: gráficos (e mapas) avançados
• rasterVis: visualização raster
• RColorBrewer: paletas de cores para legendas
• classInt: métodos de classificação de intervalos
• tmap, cartography: cartografia temática
• quickmapr, mapmisc: modelos para mapas
rápidos
• mapview, leaflet, plotGoogleMaps, plotKML,
plotly: mapas interativos para Web
CRAN Task View: Analysis of Spatial Data https://cran.r-project.org/web/views/Spatial.html
77. Métodos de visualização
●
Incremental
– Cada linha de código
adiciona camadas de
informação.
– Ex: plot, cartography
●
Não incremental
– Cada bloco de código é
um mapa
– Ex: lattice, ggplot2,
ggspatial, tmap
79. plot(srtm_abc_sirgas2000, cex.axis=0.6,
main ="ABC Paulista")
Camada
Tamanho do
texto na grade de
coordenadas
Título
Como instalamos o
pacote “raster”, usará a
função plot( ) desse
pacote para as
camadas raster
88. Argumentos úteis para formatos vetoriais
Classe Argumento Significado
Pontos
pch Símbolo
col Cor
bg Cor de preenchimento
cex Tamanho do símbolo
Linhas
col Cor
lwd Largura da linha
lty Tipo de linha
Polígonos
col
Cor de preenchimento
ou de hashuras
border Cor da borda
lwd Largura da borda
density
Densidade de
hashuras
angle Ângulo de hashuras
92. ●
Adicionando escala com a função scalebar( ) do
pacote raster
scalebar(10, xy=click(), type="bar", divs=4,
below="Km", cex=0.7)
distância
posição
interativa
tipo de
escala divisões
texto tamanho
do texto
93. ●
Adicionando rosa dos ventos
install.packages("prettymapr")
library(prettymapr)
addnortharrow("bottomright", scale = 0.5)
tamanhoposição
O pacote prettymapr
também possui opções
avançadas para
adicionar escalas
gráficas
96. Atividade 3
Modificar o mapa incremental com as seguintes
alterações:
●
Dobrar o tamanho de fonte dos eixos de coordenadas
●
Limites municipais com borda de cor preta
●
Hidrografia com linha pontilhada
●
Pontos de poços de cor amarela e formato quadrado
●
Nome dos municípios apenas em Santo André e São
Bernardo do Campo, colocados manualmente com a
função locator
●
Seta de norte no canto superior direito
Obs: submeter código e imagem
97. Mapas temáticos não incrementais
Pacote tmap
●
Incorpora métodos de:
– sf (Simple Features)
– ggplot2: gráficos gerais
– RColorBrewer: paletas de cores para mapas
– classInt: classificação de intervalos
– leaflet: mapas web interativos
●
Fluxo de programação
– Fontes: tm_shape(dados, vetor ou raster)
– Elementos: ex: tm_polygons( ) + tm_grid( )
99. Elementos Desenho
tm_polygons Polígonos com bordas
tm_fill Polígonos sem bordas
tm_borders Bordas dos polígonos
tm_symbols Pontos (símbolos)
tm_lines Linhas
tm_raster Raster
tm_text Rótulos
tm_basemap
Mapa de fundo
(ex: OpenStreetMaps)
tm_bubbles Símbolos proporcionais
tm_iso
Isolinhas
(curvas de nível)
tm_rgb Imagem
100. Acessórios Desenho
tm_grid
Grade de
coordenadas
tm_scale_bar Escala
tm_compass Seta de norte
tm_credits Caixa de texto
tm_logo Logo institucional
tm_xlab Eixo de longitude
tm_ylab Eixo de latitude
Mais elementos e informações:
help("tmap-element")
vignette("tmap-getstarted")
101. dev.new(width=10, height=10)
tm_shape(setores_abc_censo) +
tm_grid(alpha = 0.2, labels.rot = c(0,90),
labels.inside.frame = FALSE) +
tm_fill(col = "Renda", style = "quantile",
palette = "YlOrBr") +
Transparência Rotação do texto (horizontal,vertical)
Coordenadas fora do mapa
Grade
Polígonos sem borda Classificação por quantil
Paleta de cores do ColorBrewer
110. Atividades para a
próxima semana
•Em grupo:
- Fazer um mapa de localização
para o trabalho final usando o pacote
tmap (submeter código e figura)
•Individual:
- Leitura de um artigo com análise
espacial de dados vetoriais, relacionado
ao tema do projeto final (para atividade
no início da próxima aula)