Aplicações
7.0.1 Pontos de incêndio nas florestas brasileiras
Para a segunda aplicação, será utilizada uma base de dados do kaggle com os pontos e a quantidade de incêndios nas florestas brasileiras. Para isso, serão instalados os pacotes abaixo.
options(repos = list(CRAN="http://cran.rstudio.com/"))
options("install.lock"=FALSE)
install.packages(c('sf','mapview'))
library(sf)
library(mapview)
library(ggplot2) # graphic
library(tidyverse)
library(dplyr) # data manipulation
library(readr) # read files
O dataset foi retirado do Kaggle e o link está apresentado no code chunk abaixo.
# Data frame com os incêndios e os estados brasileiros
# fonte: https://www.kaggle.com/code/tianjinglei/starter-forest-fires-in-brazil-41eec699-a/input
<- read.csv("Data/amazon.csv")
forest_fires head(forest_fires)
## year state month number date
## 1 1998 Acre Janeiro 0 1998-01-01
## 2 1999 Acre Janeiro 0 1999-01-01
## 3 2000 Acre Janeiro 0 2000-01-01
## 4 2001 Acre Janeiro 0 2001-01-01
## 5 2002 Acre Janeiro 0 2002-01-01
## 6 2003 Acre Janeiro 10 2003-01-01
View(forest_fires)
str(forest_fires)
## 'data.frame': 6454 obs. of 5 variables:
## $ year : int 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 ...
## $ state : chr "Acre" "Acre" "Acre" "Acre" ...
## $ month : chr "Janeiro" "Janeiro" "Janeiro" "Janeiro" ...
## $ number: num 0 0 0 0 0 10 0 12 4 0 ...
## $ date : chr "1998-01-01" "1999-01-01" "2000-01-01" "2001-01-01" ...
Analisando a base de dados, é possível perceber que houveram problemas na leitura de estados que possuem acento no nome, como Pará e Piauí. Para resolver isso:
# Problema com a palavra "Pará" porque tem um acento e o R não está conseguindo ler
Encoding(forest_fires$state) <- "latin1"
$state[forest_fires$state == 'Par�'] <- 'Para' #Ajuste
forest_fires
# Piauí tambémdeu problema
$state[forest_fires$state == 'Piau'] <- 'Piaui' #Ajuste
forest_firesView(forest_fires)
Para analisar a quantidade de incêndios ao longo dos anos nos estados brasileiros, será realizada a soma deles em cada estado:
# Agrupando a soma dos incêndios por estado
<- forest_fires %>%
total_fires_by_state group_by(state) %>%
summarise(sum = sum(number))
# Visualizando a base de dados criada com a soma por estado
View(total_fires_by_state)
# Sumarização dos dados
summary(total_fires_by_state)
## state sum
## Length:23 Min. : 3237
## Class :character 1st Qu.:21059
## Mode :character Median :25129
## Mean :30388
## 3rd Qu.:37750
## Max. :96246
Para visualizar a quantidade de incêndios por estado, será realizado um gráfico de barras:
# Gráfico de barras com a soma de incêncios por estado
ggplot(total_fires_by_state, aes(x = state, y = sum)) +
geom_bar(stat='identity') +
coord_flip()
Para poder realizar a criação de mapas, foi criado um arquivo com as coordenadas (retiradas do Google Maps) de cada um dos estados brasileiros em WGS84:
# Dataframe com as coordenadas lat e long em WGS84 (fonte: google maps)
<- read.table("Data/coordenadas.txt", sep=",",dec=".",header = TRUE)
coord View(coord)
Para poder analisar a quantidade de incêndios no mapa, será realizada a junção entre a tabela com a quantidade de incêndio por estado e a tabela de coordenadas:
# Juntando os dataframes
<- inner_join(total_fires_by_state,coord,by="state")
joindata View(joindata)
Para que as coordenadas da tabela sejam tratadas como simple features
, será utilizada a função st_as_sf()
para criar os pontos das coordenadas de acordo com a latitude e longitude:
# Junção entre a tabela com as coordenadas e a quantidade de incêndios:
<- inner_join(total_fires_by_state,coord,by="state") %>%
joindata2 st_as_sf(coords=c('long','lat'), crs=4326) # criação dos pontos com as coordenadas e inserção do CRS de referência
Para poder visualizar cada um dos pontos com os limites geográficos dos estados brasileiros, será importado um shapefile do IBGE. Sabe-se que os shapefiles do IBGE como CRS o SIRGAS 2000 e isso será confirmado a partir da função ´st_crs()´.
# Importando shapefile (fonte: ibge)
<- read_sf('Data/Shapefiles/BR_UF_2020.shp') # por ser do ibge, utiliza crs = SIRGAS2000 (EPSG code: 4674), precisamos mudar para WGS84
shape st_crs(shape)
## Coordinate Reference System:
## User input: SIRGAS 2000
## wkt:
## GEOGCRS["SIRGAS 2000",
## DATUM["Sistema de Referencia Geocentrico para las AmericaS 2000",
## ELLIPSOID["GRS 1980",6378137,298.257222101,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["Horizontal component of 3D system."],
## AREA["Latin America - Central America and South America - onshore and offshore. Brazil - onshore and offshore."],
## BBOX[-59.87,-122.19,32.72,-25.28]],
## ID["EPSG",4674]]
View(shape)
Como o objetivo é a visualização da ´joindata´ e do shapefile em um mesmo mapa, ambos precisam estar com o mesmo CRS. Dessa forma, o shapefile do IBGE será transformado em WGS84 a partir da função `st_transform
:
<- st_transform(shape, 4326) # Mudando crs para WGS84 (EPSG code: 4326)
shape2 st_crs(shape2)
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCRS["WGS 84",
## ENSEMBLE["World Geodetic System 1984 ensemble",
## MEMBER["World Geodetic System 1984 (Transit)"],
## MEMBER["World Geodetic System 1984 (G730)"],
## MEMBER["World Geodetic System 1984 (G873)"],
## MEMBER["World Geodetic System 1984 (G1150)"],
## MEMBER["World Geodetic System 1984 (G1674)"],
## MEMBER["World Geodetic System 1984 (G1762)"],
## MEMBER["World Geodetic System 1984 (G2139)"],
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]],
## ENSEMBLEACCURACY[2.0]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["Horizontal component of 3D system."],
## AREA["World."],
## BBOX[-90,-180,90,180]],
## ID["EPSG",4326]]
Antes de criarmos os mapas, iremos checr se os CRS são os mesmos:
# Checando SGR
st_crs(joindata2)
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCRS["WGS 84",
## ENSEMBLE["World Geodetic System 1984 ensemble",
## MEMBER["World Geodetic System 1984 (Transit)"],
## MEMBER["World Geodetic System 1984 (G730)"],
## MEMBER["World Geodetic System 1984 (G873)"],
## MEMBER["World Geodetic System 1984 (G1150)"],
## MEMBER["World Geodetic System 1984 (G1674)"],
## MEMBER["World Geodetic System 1984 (G1762)"],
## MEMBER["World Geodetic System 1984 (G2139)"],
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]],
## ENSEMBLEACCURACY[2.0]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["Horizontal component of 3D system."],
## AREA["World."],
## BBOX[-90,-180,90,180]],
## ID["EPSG",4326]]
st_crs(shape2)
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCRS["WGS 84",
## ENSEMBLE["World Geodetic System 1984 ensemble",
## MEMBER["World Geodetic System 1984 (Transit)"],
## MEMBER["World Geodetic System 1984 (G730)"],
## MEMBER["World Geodetic System 1984 (G873)"],
## MEMBER["World Geodetic System 1984 (G1150)"],
## MEMBER["World Geodetic System 1984 (G1674)"],
## MEMBER["World Geodetic System 1984 (G1762)"],
## MEMBER["World Geodetic System 1984 (G2139)"],
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]],
## ENSEMBLEACCURACY[2.0]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["Horizontal component of 3D system."],
## AREA["World."],
## BBOX[-90,-180,90,180]],
## ID["EPSG",4326]]
O primeiro mapa será um mapa interativo:
# Mapa Interativo com os pontos no mapa do Brasil
mapview(shape2, col.regions = 'green') +
mapview(joindata2)