-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
pratica-parte-1.R
155 lines (112 loc) · 3.57 KB
/
pratica-parte-1.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Obteção dos dados ---------
# Download dos dados de barragens de mineração no Brasil
# https://app.anm.gov.br/SIGBM/Publico/ClassificacaoNacionalDaBarragem
# Conseguimos “imitar” o processo de baixar o arquivo usando programação.
# Salvando o link em um objeto
link_sigbm <-
"https://app.anm.gov.br/SIGBM/Publico/ClassificacaoNacionalDaBarragem/ExportarExcel"
# Fazendo uma requisição POST neste link,
# e salvando o arquivo localmente
httr::POST(
link_sigbm,
httr::write_disk("dados/sigbm.xlsx", overwrite = TRUE)
)
# Importação dos dados ------------
# Importar dados, pulando 4 linhas iniciais
sigbm_bruto <- readxl::read_excel("dados/sigbm.xlsx", skip = 4)
# Ver quais colunas a base apresenta
dplyr::glimpse(sigbm_bruto)
# Limpeza dos dados
sigbm <- sigbm_bruto |>
# Limpando nome das colunas!
janitor::clean_names() |>
dplyr::mutate(
# Arrumando as colunas de lat/long
lat = parzer::parse_lat(latitude),
long = parzer::parse_lon(longitude),
# Adiciona uma coluna com o nome da barragem e empreendedor
texto = glue::glue(
"Nome da barragem: {nome_da_barragem} <br>
Empreendedor: {nome_do_empreendedor}"
)
) |>
# Removendo linhas onde lat/long é igual a 0 (erro de cadastro)
dplyr::filter(lat != 0, long != 0) |>
sf::st_as_sf(coords = c("long", "lat"), crs = 4326, remove = FALSE)
# Site útil para consultar o CRS
# https://epsg.io/
# Verificando a classe
class(sigbm)
# Novas informações:
head(sigbm)
# Geometry type
# Dimension
# Bounding box
# CRS
# Verificando o CRS
sf::st_crs(sigbm)
# Visualização estática -------------------------
library(ggplot2)
sigbm |>
ggplot() +
geom_sf()
# Vamos para a visualização interativa, e depois voltamos
# Visualização interativa ------------------------
# Quando é bom?
# Comunicação com o público: dashboards, apresentações
# Para explorar os dados!
# Não é bom: trabalhos científicos, artigos, relatórios - precisa ser estático
# Vamos fazer uma primeira visualização?
library(leaflet)
# Vamos criar o mapa de forma incremental!
# Versão 1: mapa vazio
sigbm |>
# Começa um mapa vazio
leaflet()
# Versão 2: vamos adicionar as barragens
sigbm |>
leaflet() |>
# Adiciona as barragens
addMarkers()
leaflet::providers
# Versão 3: vamos adicionar um fundo de mapa
sigbm |>
leaflet() |>
addProviderTiles("Esri.WorldImagery") |>
addMarkers()
# Versão 4: vamos agrupar os pontos
sigbm |>
leaflet() |>
addProviderTiles("Esri.WorldImagery") |>
addMarkers(clusterOptions = markerClusterOptions())
# Versão 5: vamos adicionar um popup
sigbm |>
leaflet() |>
addProviderTiles("Esri.WorldImagery") |>
addMarkers(
clusterOptions = markerClusterOptions(),
popup = ~texto
)
# Vamos adicionar a delimitação dos estados brasileiros?
# Baixando os dados
estados <- geobr::read_state()
# Voltando ao mapa: adicionando os estados!
sigbm |>
leaflet() |>
addProviderTiles("Esri.WorldImagery") |>
# Adicionando os estados
addPolygons(data = estados, label = ~abbrev_state, fillOpacity = 0) |>
addMarkers(
clusterOptions = markerClusterOptions(),
popup = ~texto
)
# Vamos exportar a base do sigbm já tratada
readr::write_rds(sigbm, "dados-output/sigbm.rds")
sf::write_sf(sigbm, "dados-output/sigbm_sf.shp")
# Até agora usamos:
# pacote parzer para limpar lat/long
# pacote leaflet para visualização interativa
# pacote geobr para baixar dados vetoriais do Brasil
# ainda precisamos trabalhar com dados raster/matriciais
# e também criar uma visualização estática mais bonita!
# Vamos para a parte 2 da prática :)