1.1 MiB
Cálculos da ocupação de áreas por indicadores específicos
Adenor Vicente Wendling
23/02/2021
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.4 ✓ dplyr 1.0.2
## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
## ✓ readr 1.4.0 ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(readr)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
Introdução
O presente script (tutorial), tem como finalidade demonstrar um método para calcular os dados das imagens do projeto doAssentamento SL. Quero calcular: Porcentagem de APP
Porcentagem de Mata Nativa
Porcentagem de área para cada orientação
Calculo Porcentagem de cada altitude
Para esse cálculo, será utilizado a Camada Raster Altitude_SL
, que já está com dados da área do Assentamento. Da mesma forma como está representado na camada, será calculado a porcentagem para 10 grupos de altitudes. Para realizar o cálculo, segue-se os seguintes passos: 1 - Na Caixa de ferramentas de processamento
busco pelas opções, digitando “Report” na linha de busca. 2 - Seleciona-se o comando r.report
. 3 - Na janela do será aberta (Imagem 1), seleciona-se o raster com o qual queremos realizar os calculos.
Imagem 1 - Janela r.report, para definição dos procedimentos de calculo
Ao clicar em ...
, abre-se uma nova janela (Imagem 2), com as camadas rasters do projeto, onde deve ser selecionada a camada correspondente. No exemplo, foi selecionado o raster Altitude_SL
.
Imagem 2 - Janela r.report, seleção da camada raster com os quais serão realizados os cálculos
As demais opções a serem selecionados aparecem na Imagem 1 e 3. Na opção unidades
(figura 1) foi selecionado a opção me que calcula os dados em metros quadrados. Mas tem as opções de h para hectares, entre outras. Não opç~oes de comprimento e largura de págnina não é necessário alterar. Na opção Número de subfaixas fp para coletar estatísticas de
é necessário selecionar o número de grupos a serem calculados. Para a altutude, como já mencionado acima, foram selecionados 10 grupos. No entanto, podem ser selecionados outros valores, de acordo com o interesse de cada projetista.
No final da janela, na última linha, é necessário (importante) selecionar o caminho e definir o nome do arquivo de saída dos dados, que será em arquivo do tipo txt.
Pronto. Estão definidas as especificações, e só resta clicar em executar, para rodar os cálculos.
Imagem 3 - Janela r.report, para definição das especificações dos cálculos e arquivo a ser gerado
O resultado será em formato .txt. que podem ser importados e manipulados aqui no R.
Alt_estatistica <- read_delim("data/Alt_estatistica.txt", "|", escape_double = FALSE, col_names = FALSE,
trim_ws = TRUE, skip = 4)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_character(),
## X2 = col_character(),
## X3 = col_character(),
## X4 = col_number(),
## X5 = col_logical()
## )
## Warning: 3 parsing failures.
## row col expected actual file
## 11 -- 5 columns 3 columns 'data/Alt_estatistica.txt'
## 12 -- 5 columns 4 columns 'data/Alt_estatistica.txt'
## 13 -- 5 columns 1 columns 'data/Alt_estatistica.txt'
View(Alt_estatistica)
str(Alt_estatistica)
## tibble [13 × 5] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ X1: chr [1:13] NA NA NA NA ...
## $ X2: chr [1:13] "1228.146967-1250.959961" "1205.333972-1228.146967" "1022.830017-1045.643011" "1045.643011-1068.456006" ...
## $ X3: chr [1:13] "from to . . . . . . . . . . . . . . . . ." "from to . . . . . . . . . . . . . . . . ." "from to . . . . . . . . . . . . . . . . ." "from to . . . . . . . . . . . . . . . . ." ...
## $ X4: num [1:13] 192823 1688302 3816216 3949951 4665067 ...
## $ X5: logi [1:13] NA NA NA NA NA NA ...
## - attr(*, "problems")= tibble [3 × 5] (S3: tbl_df/tbl/data.frame)
## ..$ row : int [1:3] 11 12 13
## ..$ col : chr [1:3] NA NA NA
## ..$ expected: chr [1:3] "5 columns" "5 columns" "5 columns"
## ..$ actual : chr [1:3] "3 columns" "4 columns" "1 columns"
## ..$ file : chr [1:3] "'data/Alt_estatistica.txt'" "'data/Alt_estatistica.txt'" "'data/Alt_estatistica.txt'"
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_character(),
## .. X2 = col_character(),
## .. X3 = col_character(),
## .. X4 = col_number(),
## .. X5 = col_logical()
## .. )
Porém, é necessário manipular o nome das colunas, para ser possível trabalhar com os dados.
Altitude_SL<-Alt_estatistica%>%
filter(X3=="from to . . . . . . . . . . . . . . . . .")%>%
select(X2,X4)%>%
transmute(
De_Ate=X2,
Metro_Quad=X4,
Ha=X4/10000,
Porcentagem=X4/ sum(X4) *100,
)%>%
tidyr::separate(De_Ate, into=c("De","Até"), sep="-", remove="TRUE" )%>%
mutate(
Alt_Menor = as.numeric(De),
Alt_Maior = as.numeric(Até)
)
View(Altitude_SL)
A tabela com os dados
kable(Altitude_SL[ ,3:6 ],
format = "simple",
digits = 1,
padding = 2,
caption = "1 - Quantidade de metros quadrados de área de cada altitude, no assentamento Sâo Lourenço")
Metro_Quad | Ha | Porcentagem | Alt_Menor |
---|---|---|---|
192823 | 19.3 | 0.4 | 1228.1 |
1688302 | 168.8 | 3.8 | 1205.3 |
3816216 | 381.6 | 8.5 | 1022.8 |
3949951 | 395.0 | 8.8 | 1045.6 |
4665067 | 466.5 | 10.4 | 1182.5 |
4991098 | 499.1 | 11.1 | 1068.5 |
5296222 | 529.6 | 11.8 | 1091.3 |
5952907 | 595.3 | 13.3 | 1114.1 |
7038303 | 703.8 | 15.7 | 1136.9 |
7333390 | 733.3 | 16.3 | 1159.7 |
Os dados são os seguintes: A menor área está em altitude de metros acima do nível do mar (ANM) com 19.2823 hectares de área, ou seja, 0.4292178 porcento da área total. A maior área está em altitude de - ANM, com 733.339ha de área, ou seja, 16.3238903 porcento da área total.
Grafico1 <-ggplot(Altitude_SL, aes(x=Alt_Menor, y=Porcentagem))+
geom_col(col="red",fill="blue" )+
theme_bw()+
theme(axis.text = element_text(
size=12,
face=3)
)+
xlab("Altitude (m)")
Grafico1 +ggtitle("Gráfico 1: Distribuição das terras de acordo com a altitude, no Assentamento São Lourenço")
Dados de Orientação
Os dados de orientação mostram para qual quadrante a área está inclinada. Será usado o arquivo raster Orientacao_SL
, e a saída em txt gerada pelo comando r.report
do Qgis.
> Para a importação correta deste arquivo, deletei as linhas do cabeçalho em editor de texto.
Orient_NEst <- read_delim("data/Orient_NEst.txt",
"|", escape_double = FALSE, col_names = FALSE,
trim_ws = TRUE, skip = 1)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_character(),
## X2 = col_character(),
## X3 = col_character(),
## X4 = col_number(),
## X5 = col_logical()
## )
## Warning: 4 parsing failures.
## row col expected actual file
## 9 -- 5 columns 3 columns 'data/Orient_NEst.txt'
## 10 -- 5 columns 4 columns 'data/Orient_NEst.txt'
## 11 -- 5 columns 1 columns 'data/Orient_NEst.txt'
## 12 -- 5 columns 1 columns 'data/Orient_NEst.txt'
View(Orient_NEst)
Porém, é necessário manipular o nome das colunas, para ser possível trabalhar com os dados.
Altitude_SL<-Alt_estatistica%>%
filter(X3=="from to . . . . . . . . . . . .")%>%
select(X2,X4)%>%
transmute(
De_Ate=X2,
Metro_Quad=X4,
Ha=X4/10000,
Porcentagem=X4/15215421*100,
)%>%
tidyr::separate(De_Ate, into=c("De","Até"), sep="-", remove="TRUE" )%>%
mutate(
Alt_Menor = as.numeric(De),
Alt_Maior = as.numeric(Até)
)
view(Altitude_SL)
A tabela com os dados
kable(Altitude_SL[ ,3:6 ],
format = "simple",
digits = 1,
padding = 2,
caption = "1 - Quantidade de metros quadrados de área de cada altitude, no assentamento Sâo Lourenço")
Metro_Quad | Ha | Porcentagem | Alt_Menor |
---|
Os dados são os seguintes: A menor área está em altitude de metros acima do nível do mar (ANM) com hectares de área, ou seja, porcento da área total. A maior área está em altitude de - ANM, com -ha de área, ou seja, - porcento da área total.
Grafico1 <-ggplot(Altitude_SL, aes(x=Alt_Menor, y=Porcentagem))+
geom_col(col="red",fill="blue" )+
theme_bw()+
theme(axis.text = element_text(
size=12,
face=3)
)+
xlab("Altitude (m)")
Grafico1 +ggtitle("Distribuição das terras de acordo com a altitude, no Assentamento São Lourenço")
Dados de Orientação
Os dados de orientação mostram para qual quadrante a área está inclinada. Será usado o arquivo raster Orientacao_SL
, e a saída em txt gerada pelo comando r.report
do Qgis.
Orient_NEst <- read_delim("data/Orient_NEst.txt",
"|", escape_double = FALSE, col_names = FALSE,
trim_ws = TRUE, skip = 1)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_character(),
## X2 = col_character(),
## X3 = col_character(),
## X4 = col_number(),
## X5 = col_logical()
## )
## Warning: 4 parsing failures.
## row col expected actual file
## 9 -- 5 columns 3 columns 'data/Orient_NEst.txt'
## 10 -- 5 columns 4 columns 'data/Orient_NEst.txt'
## 11 -- 5 columns 1 columns 'data/Orient_NEst.txt'
## 12 -- 5 columns 1 columns 'data/Orient_NEst.txt'
#View(Orient_NEst)
Orient_NEst<-Orient_NEst%>%
filter(X3=="from to . . . . . . . . . . . . .")%>%
select(X2,X4)%>%
transmute(
De_Ate=X2,
Metro_Quad=X4,
Ha=X4/10000,
Porcentagem=X4/15163779*100,
)%>%
tidyr::separate(De_Ate, into=c("De","Até"), sep="-", remove="TRUE" )%>%
mutate(
Orient_Menor = as.numeric(De),
Orient_Maior = as.numeric(Até)
)%>%
arrange(Orient_Menor)
str(Orient_NEst)
## tibble [8 × 7] (S3: tbl_df/tbl/data.frame)
## $ De : chr [1:8] "0.050844" "45.037363" "90.023881" "135.0104" ...
## $ Até : chr [1:8] "45.037363" "90.023881" "135.0104" "179.996919" ...
## $ Metro_Quad : num [1:8] 2523735 2125164 2213918 2272266 1452114 ...
## $ Ha : num [1:8] 252 213 221 227 145 ...
## $ Porcentagem : num [1:8] 16.64 14.01 14.6 14.98 9.58 ...
## $ Orient_Menor: num [1:8] 0.0508 45.0374 90.0239 135.0104 179.9969 ...
## $ Orient_Maior: num [1:8] 45 90 135 180 225 ...
A tabela com os dados
kable(Orient_NEst[ ,6:3 ],
format = "simple",
digits = 1,
padding = 2,
caption = "1 - Quantidade de metros quadrados de área de cada altitude, no assentamento Sâo Lourenço")
Orient_Menor | Porcentagem | Ha | Metro_Quad |
---|---|---|---|
0.1 | 16.6 | 252.4 | 2523735 |
45.0 | 14.0 | 212.5 | 2125164 |
90.0 | 14.6 | 221.4 | 2213918 |
135.0 | 15.0 | 227.2 | 2272266 |
180.0 | 9.6 | 145.2 | 1452114 |
225.0 | 7.7 | 117.2 | 1171881 |
270.0 | 8.4 | 127.5 | 1275427 |
315.0 | 14.0 | 212.9 | 2129273 |
library(plotrix)
OrietNames<-c("N","NW","W","SW","S","SE", "E", "NE")
OrientaHa<-Orient_NEst$Ha
radial.plot(OrientaHa,labels=OrietNames,rp.type="r",label.prop=1.1, main="Área (ha) conforme orientação, do assentamento São Lourenço",
grid.unit="Ha",poly.col="green",radial.lim=c(0,250),show.grid.labels=1,
line.col = "red", lwd=5, grid.col = "blue")
Capacidade de uso
segundo LEPSCH et al., 1991
Para o calculo da declividade foi utilizado o arquivo topodata Decliv(B), que apresenta os dados conforme as Classes de capacidade de uso -definem o grau de limitação do uso (I, II, III, IV, V, VI, VII e VIII):
Classe I: terras cultiváveis, aparentemente sem problemas especiais de conservação;
Classe II: terras cultiváveis com problemas simples de conservação;
Classe III: terras cultiváveis com problemas complexos de conservação;
Classe IV: terras cultiváveis apenas ocasionalmente ou em extensão limitada, com sérios problemas de conservação;
Classe V: terras adaptadas em geral para pastagens e/ou reflorestamento, sem necessidade de práticas especiais de conservação, cultiváveis apenas em casos muito especiais;
Classe VIII: terras impróprias para cultura, pastagem ou reflorestamento, podendo servir apenas como abrigo e proteção da fauna e flora silvestre, como ambiente para recreação, ou para fins de armazenamento de água (LEPSCH et al., 1991).
Buscando os dados
Declive_B<- read_delim("data/declive_b.txt",
"|",
escape_double = FALSE,
col_names = FALSE,
trim_ws = TRUE,
skip = 4)
View(Declive_B)
organizando dados
Declive_b<-Declive_B%>%
filter(!is.na(X4))%>%
select(X2,X4)%>%
transmute(
Classe=X2,
Metro_Quad=X4,
Ha=X4/10000,
Porcentagem=X4/sum(X4)*100,
)%>%
arrange(Classe)
head(Declive_b)
## # A tibble: 5 x 4
## Classe Metro_Quad Ha Porcentagem
## <chr> <dbl> <dbl> <dbl>
## 1 2 200520 20.1 1.32
## 2 3 2973715 297. 19.5
## 3 4 4963703 496. 32.6
## 4 5 7043355 704. 46.3
## 5 6 34134 3.41 0.224
A tabela com os dados
kable(Declive_b,
format = "simple",
digits = 1,
padding = 2,
caption = "1 - Quantidade de metros quadrados de área de cada classe de declividade, no assentamento Sâo Lourenço")
Classe | Metro_Quad | Ha | Porcentagem |
---|---|---|---|
2 | 200520 | 20.1 | 1.3 |
3 | 2973715 | 297.4 | 19.5 |
4 | 4963703 | 496.4 | 32.6 |
5 | 7043355 | 704.3 | 46.3 |
6 | 34134 | 3.4 | 0.2 |
Segundo Embrapa 1999
Classe nº | Classe de relevo | Declividade (%) |
---|---|---|
1 | Plano | 0 – 3 |
2 | Suave Ondulado | 3 – 8 |
3 | Ondulado | 8 – 20 |
4 | Forte Ondulado | 20 – 45 |
5 | Montanhoso | 45 – 75 |
6 | Escarpado | > 75 |
Buscando os dados
Declive_C<- read_delim("data/declive_c.txt",
"|",
escape_double = FALSE,
col_names = FALSE,
trim_ws = TRUE,
skip = 4)
View(Declive_C)
organizando dados
Declive_c<-Declive_C%>%
filter(!is.na(X4))%>%
select(X2,X4)%>%
transmute(
Classe=X2,
Metro_Quad=X4,
Ha=X4/10000,
Porcentagem=X4/sum(X4)*100,
)%>%
arrange(Classe)
#head(Declive_c)
A tabela com os dados
kable(Declive_c,
format = "simple",
digits = 1,
padding = 2,
caption = "1 - Quantidade de metros quadrados de área de cada classe de declividade, conforme classificação da Embrapa (1991) no assentamento Sâo Lourenço")
Classe | Metro_Quad | Ha | Porcentagem |
---|---|---|---|
1 | 20478 | 2.0 | 0.1 |
2 | 1492385 | 149.2 | 9.8 |
3 | 10559749 | 1056.0 | 69.4 |
4 | 3108681 | 310.9 | 20.4 |
5 | 34134 | 3.4 | 0.2 |
Calculos com Vetores
Para calcular a área de cada informação vetorial, deve-se seguir os mesmos passos utilizados com os dados Raster, e, ao escolher a ferramenta de cálculo, ao invés de selecionar r.report, se seleciona v.report. É importante ficar atento e definir um arquivo, com caminho conhecido e extensão tx.t, para permitir sua importanção pelo R.
RESERVA <- read_delim("Assentamento/RESERVA.TXT",
"|", escape_double = FALSE, na = "0" )
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## `<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><p>cat` = col_character(),
## fid = col_double(),
## IDF = col_double(),
## NOM_TEMA = col_character(),
## NUM_AREA = col_double(),
## area = col_double()
## )
## Warning: 1 parsing failure.
## row col expected actual file
## 6 -- 6 columns 1 columns 'Assentamento/RESERVA.TXT'
RESERVA1<-RESERVA%>%
filter(area>1)
AreaReserva=sum(RESERVA1$area)
AreaReserva
## [1] 1244.277
RLporc=AreaReserva/4495
RLporc
## [1] 0.2768136
library(readr)
APPs<-read_delim("Assentamento/app.txt",
"|", escape_double = FALSE, trim_ws = TRUE)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## `<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><p>cat` = col_character(),
## IDF = col_double(),
## NOM_TEMA = col_character(),
## NUM_AREA = col_double(),
## area = col_double()
## )
## Warning: 1 parsing failure.
## row col expected actual file
## 821 -- 5 columns 1 columns 'Assentamento/app.txt'
str(APPs)
## tibble [821 × 5] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><p>cat: chr [1:821] "</br>5" "</br>11" "</br>241" "</br>811" ...
## $ IDF : num [1:821] 601492 1075568 8079786 8079786 8079786 ...
## $ NOM_TEMA : chr [1:821] "Ã\u0081rea de Preservação Permanente em área antropizada não declarada como área consolidada" "Ã\u0081rea de Preservação Permanente em área antropizada não declarada como área consolidada" "Ã\u0081rea de Preservação Permanente em área de Vegetação Nativa" "Ã\u0081rea de Preservação Permanente a Recompor de Nascentes ou Olhos D'água Perenes" ...
## $ NUM_AREA : num [1:821] 2.11 1.16e-02 1.22e-07 3.13e-07 3.12e-07 ...
## $ area : num [1:821] 0.000111 0.000358 0.001223 0.001234 0.003113 ...
## - attr(*, "problems")= tibble [1 × 5] (S3: tbl_df/tbl/data.frame)
## ..$ row : int 821
## ..$ col : chr NA
## ..$ expected: chr "5 columns"
## ..$ actual : chr "1 columns"
## ..$ file : chr "'Assentamento/app.txt'"
## - attr(*, "spec")=
## .. cols(
## .. `<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><p>cat` = col_character(),
## .. IDF = col_double(),
## .. NOM_TEMA = col_character(),
## .. NUM_AREA = col_double(),
## .. area = col_double()
## .. )
#APPs$area