Assentamento/Tutorial_4_Calculos-de-Porc...

1.1 MiB
Raw Permalink Blame History

<html> <head> </head>

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")
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")
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")
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")
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")
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
</html>