library(sf)
library(geobr)
library(ggplot2)
library(dplyr)
# remotes::install_github("abjur/abjData")
library(abjData)
O pacote {sf} (Simple Features for R) (Pebesma 2020, 2018) possibilita trabalhar com bases de dados espaciais.
Para utilizar esses dados, temos duas abordagens: - Bases que não são georreferenciadas - Bases que são georreferenciadas
Identificar a unidade de análise, e com os joins, unir com uma base georreferenciada.
O pacote geobr (Pereira and Goncalves 2020) é um pacote que disponibiliza funções para realizar o download de diversas bases de dados espaciais oficiais do Brasil. Você pode saber mais no repositório do pacote no GitHub: https://ipeagit.github.io/geobr/
Quais funções para acessar cada dataset:
geobr::list_geobr()
knitr::kable(geobr::list_geobr())
function | geography | years | source |
---|---|---|---|
read_country |
Country | 1872, 1900, 1911, 1920, 1933, 1940, 1950, 1960, 1970, 1980, 1991, 2000, 2001, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_region |
Region | 2000, 2001, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_state |
States | 1872, 1900, 1911, 1920, 1933, 1940, 1950, 1960, 1970, 1980, 1991, 2000, 2001, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_meso_region |
Meso region | 2000, 2001, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_micro_region |
Micro region | 2000, 2001, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_intermediate_region |
Intermediate region | 2017, 2019, 2020 | IBGE |
read_immediate_region |
Immediate region | 2017, 2019, 2020 | IBGE |
read_municipality |
Municipality | 1872, 1900, 1911, 1920, 1933, 1940, 1950, 1960, 1970, 1980, 1991, 2000, 2001, 2005, 2007, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 | IBGE |
read_municipal_seat |
Municipality seats (sedes municipais) | 1872, 1900, 1911, 1920, 1933, 1940, 1950, 1960, 1970, 1980, 1991, 2010 | IBGE |
read_weighting_area |
Census weighting area (área de ponderação) | 2010 | IBGE |
read_census_tract |
Census tract (setor censitário) | 2000, 2010, 2017, 2019, 2020 | IBGE |
read_statistical_grid |
Statistical Grid of 200 x 200 meters | 2010 | IBGE |
read_metro_area |
Metropolitan areas | 1970, 2001, 2002, 2003, 2005, 2010, 2013, 2014, 2015, 2016, 2017, 2018 | IBGE |
read_urban_area |
Urban footprints | 2005, 2015 | IBGE |
read_amazon |
Brazil’s Legal Amazon | 2012 | MMA |
read_biomes |
Biomes | 2004, 2019 | IBGE |
read_conservation_units |
Environmental Conservation Units | 201909 | MMA |
read_disaster_risk_area |
Disaster risk areas | 2010 | CEMADEN and IBGE |
read_indigenous_land |
Indigenous lands | 201907, 202103 | FUNAI |
read_semiarid |
Semi Arid region | 2005, 2017 | IBGE |
read_health_facilities |
Health facilities | 2015 | CNES, DataSUS |
read_health_region |
Health regions and macro regions | 1991, 1994, 1997, 2001, 2005, 2013 | DataSUS |
read_neighborhood |
Neighborhood limits | 2010 | IBGE |
read_schools |
Schools | 2020 | INEP |
read_comparable_areas |
Historically comparable municipalities, aka Areas minimas comparaveis (AMCs) | 1872,1900,1911,1920,1933,1940,1950,1960,1970,1980,1991,2000,2010 | IBGE |
read_urban_concentrations |
Urban concentration areas (concentrações urbanas) | 2015 | IBGE |
read_pop_arrangements |
Population arrangements (arranjos populacioanis) | 2015 | IBGE |
Exemplos:
# geobr::read_country() # importa a delimitação do Brasil
# geobr::read_state() # importa a delimitação dos estados do Brasil
# geobr::read_state("DF") # importa a delimitação de um Estado específico, usando a sigla
# geobr::read_municipality() # importa a delimitação de todos os municípios do Brasil. É uma base mais pesada!
# geobr::read_municipality(code_muni = 3550308) # importa a delimitação de um município específico, usando o código do IBGE do município.
Não usar View()!
estados <- readr::read_rds("dados/geobr/estados.Rds")
# Como obter essa mesma base?
# estados <- geobr::read_state()
estado_df <- readr::read_rds("dados/geobr/estado_df.Rds")
# Como obter essa mesma base?
# estado_df <- geobr::read_state("DF")
Qual é a classe?
class(estados)
## [1] "sf" "data.table" "data.frame"
Usamos o pacote ggplot2 para criar os mapas, utilizando o geom_sf()
estados %>%
ggplot() +
geom_sf()
Empilhando as bases usando os geom’s :
ggplot() +
geom_sf(data = estados) +
geom_sf(data = estado_df, fill = "blue") +
theme_bw()
glimpse(estados)
## Rows: 27
## Columns: 6
## $ code_state <dbl> 11, 12, 13, 14, 15, 16, 17, 21, 22, 23, 24, 25, 26, 27, 2…
## $ abbrev_state <fct> RO, AC, AM, RR, PA, AP, TO, MA, PI, CE, RN, PB, PE, AL, S…
## $ name_state <fct> Rondônia, Acre, Amazonas, Roraima, Pará, Amapá, Tocantins…
## $ code_region <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, …
## $ name_region <fct> Norte, Norte, Norte, Norte, Norte, Norte, Norte, Nordeste…
## $ geom <MULTIPOLYGON [°]> MULTIPOLYGON (((-63.32721 -..., MULTIPOLYGON…
estados %>%
filter(name_region == "Nordeste") %>%
ggplot() +
geom_sf()
class(abjData::pnud_uf)
## [1] "tbl_df" "tbl" "data.frame"
pnud_uf_sf <- estados %>%
left_join(abjData::pnud_uf, by = c("code_state" = "uf"))
class(pnud_uf_sf)
## [1] "sf" "data.table" "data.frame"
# glimpse(pnud_uf_sf)
pnud_uf_sf %>%
ggplot(aes(fill = idhm)) +
geom_sf() +
theme_void()
library(magrittr)
library(dplyr)
library(ggplot2)
escolas_brasilia <- readr::read_rds("dados/geobr/escolas_brasilia.Rds")
# Como obter essa mesma base?
# escolas <- geobr::read_schools()
# escolas_brasilia <- escolas %>%
# filter(abbrev_state == "DF", name_muni == "Brasília")
municipio_brasilia <- readr::read_rds("dados/geobr/municipio_brasilia.Rds")
# Como obter essa mesma base?
# municipio_brasilia <- geobr::read_municipality(5300108)
Passo 1: colocar a delimitação do município e também as escolas
ggplot() +
geom_sf(data = municipio_brasilia) +
geom_sf(data = escolas_brasilia)
Passo 2: Colorir as escolas por “government_level”
ggplot() +
geom_sf(data = municipio_brasilia) +
geom_sf(data = escolas_brasilia, aes(color = government_level))
Passo 3: Fazer um facet com “government_level”
ggplot() +
geom_sf(data = municipio_brasilia) +
geom_sf(data = escolas_brasilia, aes(color = government_level)) +
facet_wrap(~ government_level)
Passo 4: Remover a legenda, mudar o tema, adicionar um título e centralizar o título
ggplot() +
geom_sf(data = municipio_brasilia) +
geom_sf(data = escolas_brasilia, aes(color = government_level), show.legend = FALSE) +
facet_wrap(~ government_level) +
theme_void() +
labs(title = "Escolas em Brasília \n") +
theme(plot.title = element_text(hjust = 0.5))
library(sf)
library(geobr)
library(magrittr)
Como buscar a base? Se quiser baixar, remova os comentários (#) dos códigos abaixo:
# Link que disponibiliza a base
# u_shp <- "https://www.gov.br/infraestrutura/pt-br/centrais-de-conteudo/rodovias-zip"
# Cirar a pasta para baixar o arquivo
# dir.create("../dados/shp_rod")
# Fazer o download do arquivo zip
# httr::GET(u_shp,
# httr::write_disk("../dados/shp_rod/rodovias.zip"),
# httr::progress())
# Descompactar o zip
# unzip("../dados/shp_rod/rodovias.zip", exdir = "../dados/shp_rod/")
# Importar a base em arquivo .shp
# rodovias <-
# st_read(
# "../dados/shp_rod/rodovias.shp",
# quiet = TRUE#,
# #options = "ENCODING=WINDOWS-1252"
# ) %>%
# # limpar o nome das colunas
# janitor::clean_names()
# filtrar para DF
# rodovias_df <- rodovias %>%
# filter(sg_uf == "DF")
Essa base foi gerada a partir do código no chunk anterior.
rodovias_df <- readr::read_rds("dados/rodovias_df.Rds")
ggplot() +
geom_sf(data = rodovias_df)
# Inicio do ggplot
ggplot() +
# limite do estado
geom_sf(data = estado_df, color = "gray") +
# escolas
geom_sf(data = escolas_brasilia, aes(color = government_level), show.legend = FALSE) +
# rodovias
geom_sf(data = rodovias_df, color = "black") +
# adicionar tema
theme_void()