O pacote {d2h} é um esforço de aproximação da comunidade acadêmica e profissional com a linguagem de programação R e com metodologias de análises de dados espaciais relacionados à engenharia florestal. Todas as classes, métodos e funções desenvolvidas são pensados de forma a atender as principais demandas de um engenheiro florestal nesse quesito e, na medida do possível, buscam concentrar a utilização de uma única interface/software para realização dos cálculos.

1. Instalação

Para instalar o pacote, basta instalar a partir do repositório oficial do pacote no github, conforme o comando abaixo. Caso o pacote remotes não exista, pode ser instalado normalmente a partir do CRAN. Depois de instalado, o pacote pode ser carregado normalmente.

# Comando para instalar o pacote
remotes::install_github('d2h-florestal/d2h')

# Caso não possua o pacote remotes, instale-o primeiro.
install.packages('remotes')

# Para carregar o pacote
library(d2h)

2. Primeiros Passos

O pacote {d2h} possui como fonte principal de dados tabelas de inventários. É partir dessas tabelas de dados que são extraídas todas as informações para análises.

2.1 Carregando dados

Tais tabelas podem estar em arquivos de excel (.xlsx), tabelas separadas por vírgula (.csv), tabelas de textos (.txt), bem como objetos espaciais como shapefiles (.shp), geojson (.geojson) e GeoPackages (.gpkg). O pacote {d2h} possui uma função que engloba todas essas principais formas de entrada de dados, chamada read.inv(). Aqui, “inv” se refere à abreviação de “inventário”.

O primeiro argumento de read.inv() é o caminho até o arquivo que se deseja carregar. Aqui usaremos o caminho padrão de um arquivo .csv disponível do pacote. Na prática, o caminho até o arquivo real deve ser fornecido.

library(d2h)
#> 
#> Attaching package: 'd2h'
#> The following object is masked from 'package:stats':
#> 
#>     confint

caminho_ate_arquivo <- system.file("extdata", "dados_exemplo.csv", package = 'd2h')

inv <- read.inv(path = caminho_ate_arquivo, #* Caminho até o arquivo de interesse
                variavel = 'Va',            #* Coluna ou número da coluna da variável de interesse
                d = 'd',                    # Coluna ou número da coluna dos diâmetros
                h = 'h',                    # Coluna ou número da coluna das alturas
                par = 'Parcela',            # Coluna ou número da coluna da variável de interesse
                areapar = 0.04,             # Área da parcela (em hectares)
                areatotal = 200,            # Área total do inventário (em hectares)
                metodo = 'fixo',            # Indica o método de inventário ("fixa" ou "variavel")
                processo = 'AAS',           # Indica o processo de amostragem
                ha = TRUE                   # TRUE/FALSE indicando se os dados estão por hectare
                )

# Classe do objeto de saída
class(inv)
#> [1] "Inv"
#> attr(,"package")
#> [1] "d2h"

Assim é carregada a tabela para análise. De todos os argumentos de read.inv(), apenas os dois primeiros (marcados com * no comentário ao lado) são obrigatórios. Caso qualquer outro seja omitido, o arquivo ainda é carregado. Uma explicação extensiva sobre o funcionamento da função, bem como informações dos seus argumentos pode ser consultada na documentação oficial ?read.inv.

No argumento variavel= deve ser informado o nome ou o número da coluna da variável de interesse. Essa será a principal variável resposta para a maioria das operações. Em inventário, frequentemente é o volume, porém pode também ser biomassa, diâmetro, altura dominante etc.

Note ainda que, embora opcionais, a omissão de alguns argumentos pode inviabilizar algumas análises por falta de informação.

Abaixo está uma versão alternativa com um arquivo shapefile. Note que a forma de carregamento é a mesma. Veja também que em vez dos nomes das colunas de interesse, também pode ser informado o número delas (i.e. coluna 1, coluna 2 etc.). Por fim, veja que os argumentos podem ser parcialmente escritos (“variav” em vez de “variavel”). Isso é permitido desde que a abreviação não fique ambígua entre dois argumentos distintos (e.g. “area” poderia ser tanto “areatotal” quanto “areapar”)


caminho_ate_shapefile <- system.file('extdata', 'parcelas.shp', package = 'd2h')

inv2 <- read.inv(path = caminho_ate_shapefile,  #* Caminho até o arquivo
                 variav = 5                     #* Nesse caso a coluna de interesse é a quinta
                 )
#> ---------------------------------------
#> Nem todas as feições são polígonos: [POINT].
#> Área das parcelas deve ser informada via `areapar=`
#> ---------------------------------------
#> Argumento `parcelas` não informado. Parcelas terão sequência ordinal.

# Classe do objeto de saída
class(inv2)
#> [1] "Inv"
#> attr(,"package")
#> [1] "d2h"

Veja que dessa vez outras informações são impressas na tela, especificamente sobre o tipo de geometria carregada (uma vez que foi um shapefile), bem como o aviso de que o nome das parcelas/identificador não foi informado, e portanto será presumido que cada linha é uma observação diferente, e portanto será criada uma sequência ordinal crescente de identificadores genéricos para as parcelas.

A função read.inv() retorna um objeto da Classe Inv. Esse objeto é a espinha dorsal das análises do pacote {d2h}, e é a partir desse objeto que todos os demais são construídos.

2.2 Trabalhando com a classe Inv

A classe Inv é a classe básica do pacote {d2h}, e é obtida ao carregar um arquivo usando read.inv() ou aplicando o inicializador Inv() (veja ?Inv para mais detalhes). De maneira geral, todas as informações pertinentes a um inventário florestal estarão contidas no objeto Inv, e tais informações se dividem em dois componentes:

  1. Componente de Inventário
  2. Componente Espacial

2.2.1 Componente de Inventário

O componente de inventário reúne todas as informações comumente utilizadas em inventários, como área da parcela, área total da floresta, área amostrada, fração amostral etc.. Tais informações são brevemente apresentadas quando imprimimos o objeto no terminal, basicamente chamando o objeto na tela, conforme abaixo:


# Objeto contendo todas as informações
inv
#>   Número de parcelas:  46 
#>    Área da parcela:  0.04  ha
#>    Área amostrada:  1.84  ha
#>    Fração amostral:  0.0092 
#>  ------------------------------------------
#>    Área Total:  200  ha
#>    Método de Amostragem:  fixo 
#>    Processo de Amostragem:  Amostragem Aleatória Simples 
#>  ------------------------------------------
#>   Volume médio(a): 132.07 m³/ha
#>   Desvio Padrão(a): 25.53 m³/ha
#>  ------------------------------------------
#>   *Assumindo volume dado(a) em m³/ha.

# Objeto com omissão de informações
inv2
#>   Número de parcelas:  46 
#>    Área da parcela:  0  ha
#>    Área amostrada:  0  ha
#>    Fração amostral:  0 
#>  ------------------------------------------
#>    Área Total:  Inf  ha
#>    Método de Amostragem:  fixo 
#>    Processo de Amostragem:  Amostragem Aleatória Simples 
#>  ------------------------------------------
#>   Volume médio(a): 132.07 m³/ha
#>   Desvio Padrão(a): 25.53 m³/ha
#>  ------------------------------------------
#>   *Assumindo volume dado(a) em m³/ha.

A maior parte das informações apresentadas podem ser acessadas e alteradas no objeto de classe Inv. Por exemplo, para obter o valor da área da parcela de inv2, basta usar o método areapar().

areapar(inv2)
#> -----------------------------------------
#> Não há área de parcela associada.
#> -----------------------------------------
#> [1] 0

areapar(inv2) <- 0.04
#> Área de parcela definida para 0.04 ha.

Veja que no exemplo acima areapar() pode ser utilizada para acessar o valor da área da parcela, bem como pode ser utilizada para alterar o valor da área da parcela. O mesmo pode ser feito com a área total

areatotal(inv2)
#> -----------------------------------------
#> Não há área total associada.
#> -----------------------------------------
#> [1] Inf

areatotal(inv2) <- 135
#> Área total definida para 135 ha.

inv2
#>   Número de parcelas:  46 
#>    Área da parcela:  0.04  ha
#>    Área amostrada:  1.84  ha
#>    Fração amostral:  0.01362963 
#>  ------------------------------------------
#>    Área Total:  135  ha
#>    Método de Amostragem:  fixo 
#>    Processo de Amostragem:  Amostragem Aleatória Simples 
#>  ------------------------------------------
#>   Volume médio(a): 132.07 m³/ha
#>   Desvio Padrão(a): 25.53 m³/ha
#>  ------------------------------------------
#>   *Assumindo volume dado(a) em m³/ha.

Note que ao chamar inv2, agora a área amostrada, bem como a fração amostral, foram recalculadas a partir das novas informações.

Portanto ao omitir informações em read.inv(), essas ainda podem ser complementadas posteriormente. Uma lista com todos os métodos possíveis para a classe Inv podem ser encontradas em

methods(class = 'Inv')
#>  [1] alturas     alturas<-   areapar     areapar<-   areatotal   areatotal<-
#>  [7] bordas      bordas<-    crs         crs<-       diametros   diametros<-
#> [13] ha          ha<-        initialize  metodo      metodo<-    n          
#> [19] parcelas    parcelas<-  plot        processar   processo    processo<- 
#> [25] salvar      show        spobj       spobj<-     volumes    
#> see '?methods' for accessing help and source code

2.2.1.1 Opções de plotagem

Além dos métodos que tratam do componente de inventário. Também é possível criar alguns gráficos básicos com o objeto de classe Inv. São 4 gráficos de apresentação básica: parcelas (o padrão), histograma, relação h-d e boxplot. O tipo de gráfico é alterado com o argumento type=



# Plot das parcelas (o padrão)
plot(inv)         # mesma coisa que plot(inv, type="parcelas")



# Histograma da variável de interesse
plot(inv, type = 'hist')


# Dispersão da relação h-d (apenas se diâmetros e alturas forem informados)
plot(inv, type = 'scatter')


# Boxplot da variável de interesse
plot(inv, type = 'boxplot')

Opções de cores, títulos de eixos, além de outras configurações, podem ser passadas para plot(). Alguns exemplos são


plot(inv, xlab = 'Eixo X',  ylab = 'Eixo Y', col = 'red', border = 'orange')


plot(inv, type = 'boxplot',  col = 'darkblue',  border = 'magenta')


plot(inv, type = 'scatter',  col = 'steelblue',  pch = 'd')

Outros argumentos, bem como informações de utilização da função podem ser conferidos em ?plot-Inv.

2.2.2 Componente Espacial

O segundo componente do objeto Inv se refere à estrutura espacial do inventário, que nem sempre está disponível ou presente nas bases de dados. No contexto do pacote {d2h}, estrutura espacial é a geolocalização das observações e como ela pode ser utilizada na área florestal. Além dessa geolocalização, também faz parte do componente espacial qualquer informação adicional relacionada À geolocalização, como delimitação da área da floresta, por exemplo.

No pacote {d2h}, todas as manipulações vetoriais são realizadas com o pacote sf (Pebesma & Bivand, 2023). Assim como todas as manipulações com rasters são feitas com o pacote terra (Hijmans, 2024).

Para se conferir se existe um componente espacial ao objeto Inv, basta executar o comando spobj() no objeto em questão. O retorno do comando será uma mensagem informando que não há objeto espacial se for o caso. Ou então retornará informações a respeito do objeto espacial associado.


# Sem componente espacial
spobj(inv)
#> Não há objeto espacial associado. Nada será retornado.
#> Use `espacializar()` para associar um objeeto espacial ao objeto Inv.


# Com componente espacial
spobj(inv2)
#> Sistema de Coordenadas utilizado: WGS 84 / UTM zone 21S
#> Simple feature collection with 46 features and 5 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 563740.3 ymin: 8205845 xmax: 566222.5 ymax: 8207714
#> Projected CRS: WGS 84 / UTM zone 21S
#> First 10 features:
#>    parcela idade     d     h       va                 geometry
#> 1     T1P1    17 24.70 22.48  90.2098   POINT (564011 8205845)
#> 2     T1P2    17 29.89 24.60 151.0114 POINT (563865.3 8205981)
#> 3     T1P3    17 28.32 23.88 133.2068 POINT (563740.3 8206104)
#> 4     T1P4    17 31.01 25.09 153.7527 POINT (563900.6 8206308)
#> 5     T1P5    17 31.04 25.15 181.3990 POINT (564057.9 8206148)
#> 6     T1P6    17 30.25 24.72 137.2731 POINT (564196.6 8206013)
#> 7     T2P1    17 29.17 24.35 126.3728 POINT (564373.9 8206193)
#> 8     T2P2    17 31.55 25.34 150.1543 POINT (564217.9 8206330)
#> 9     T2P3    17 31.37 25.24 120.2229 POINT (564083.4 8206446)
#> 10    T2P4    17 30.42 24.81 148.3301 POINT (564388.3 8206477)

Existem três maneiras de se obter o componente espacial de um objeto da classe Inv:

  1. Carregando um arquivo espacial (shapefile, GeoJSON, GeoPackage);
  2. Complementando o objeto Inv com um arquivo espacial adicional;
  3. Criando um objeto espacial a partir das informações da tabela de dados

2.2.2.1 Carregando um arquivo espacial

Ao fornecer um arquivo espacial para read.inv(), então automaticamente o componente espacial será criado. É o caso do objeto inv2, criado a partir de um shapefile.


caminho_ate_shapefile <- system.file('extdata', 'parcelas.shp',  package = 'd2h')
inv2 <- read.inv(path = caminho_ate_shapefile,
                 variavel = 5,
                 par = "parcela")
#> ---------------------------------------
#> Nem todas as feições são polígonos: [POINT].
#> Área das parcelas deve ser informada via `areapar=`
#> ---------------------------------------

Caso todas feições do arquivo sejam polígonos, então será presumido que tais polígonos se referem a parcelas, e portanto a área desses polígonos será utilizada automaticamente para cálculo da área de parcela. Se as áreas dos polígonos não for a mesma, então será feita automaticamente a média das áreas, e essa área média será utilizada. Lembre que a qualquer momento a área pode ser alterada via areapar(objeto) <- valor, ou até diretamente no argumento areapar= de read.inv().

Caso alguma das feições não seja polígono, então a função não tentará calcular nenhuma área, e portanto deve ser fornecida via argumento de read.inv() ou posteriormente via areapar(objeto) <- valor.

2.2.2.2 Complementando o objeto Inv

Alternativamente, é possível manter o objeto Inv carregado, e carregar outro arquivo que contém somente as feições/vetores das observações. Isso é feito via função espacializar() com os argumentos InvObj= e source=.


# Objeto sem componente espacial
spobj(inv)
#> Não há objeto espacial associado. Nada será retornado.
#> Use `espacializar()` para associar um objeeto espacial ao objeto Inv.

invesp <- espacializar(InvObj = inv,                    # Objeto `Inv`
                       source = caminho_ate_shapefile)  # Caminho até objeto espacial complementar
#> Objeto espacial de parcelas incluído no Inventário.


spobj(invesp)
#> Sistema de Coordenadas utilizado: WGS 84 / UTM zone 21S
#> Simple feature collection with 46 features and 5 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 563740.3 ymin: 8205845 xmax: 566222.5 ymax: 8207714
#> Projected CRS: WGS 84 / UTM zone 21S
#> First 10 features:
#>    parcela idade     d     h       va                 geometry
#> 1     T1P1    17 24.70 22.48  90.2098   POINT (564011 8205845)
#> 2     T1P2    17 29.89 24.60 151.0114 POINT (563865.3 8205981)
#> 3     T1P3    17 28.32 23.88 133.2068 POINT (563740.3 8206104)
#> 4     T1P4    17 31.01 25.09 153.7527 POINT (563900.6 8206308)
#> 5     T1P5    17 31.04 25.15 181.3990 POINT (564057.9 8206148)
#> 6     T1P6    17 30.25 24.72 137.2731 POINT (564196.6 8206013)
#> 7     T2P1    17 29.17 24.35 126.3728 POINT (564373.9 8206193)
#> 8     T2P2    17 31.55 25.34 150.1543 POINT (564217.9 8206330)
#> 9     T2P3    17 31.37 25.24 120.2229 POINT (564083.4 8206446)
#> 10    T2P4    17 30.42 24.81 148.3301 POINT (564388.3 8206477)

Note que para isso funcionar, o arquivo espacial complementar deve ter o mesmo número de feições que observações de Inv. Além disso, deve-se garantir que a ordem das parcelas informadas em source= esteja na mesma ordem das observações do objeto Inv.

Caso o objeto Inv original possua identificadores de parcela, e esses mesmos identificadores sejam um atributo do objeto espacial, então o nome do atributo pode ser passado para o argumento id= da função, que irá então parear as observações com os respectivos pontos espaciais a partir dos identificadores de parcela.


parcelas(inv)
#>  [1] "T1P1" "T1P2" "T1P3" "T1P4" "T1P5" "T1P6" "T2P1" "T2P2" "T2P3" "T2P4"
#> [11] "T2P5" "T2P6" "T3P1" "T3P2" "T3P3" "T3P4" "T3P5" "T3P6" "T4P1" "T4P2"
#> [21] "T4P3" "T4P4" "T4P5" "T4P6" "T5P1" "T5P2" "T5P3" "T5P4" "T5P5" "T5P6"
#> [31] "T6P1" "T6P2" "T6P3" "T6P4" "T6P5" "T6P6" "T7P1" "T7P2" "T7P3" "T7P4"
#> [41] "T7P5" "T7P6" "T8P1" "T8P2" "T8P3" "T8P4"

invesp <- espacializar(InvObj = inv,
                       source = caminho_ate_shapefile,
                       id = 'parcela')   # Esse é o nome da coluna das parcelas do objeto espacial
#> Objeto espacial de parcelas incluído no Inventário.

spobj(invesp)
#> Sistema de Coordenadas utilizado: WGS 84 / UTM zone 21S
#> Simple feature collection with 46 features and 5 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 563740.3 ymin: 8205845 xmax: 566222.5 ymax: 8207714
#> Projected CRS: WGS 84 / UTM zone 21S
#> First 10 features:
#>    parcela idade     d     h       va                 geometry
#> 1     T1P1    17 24.70 22.48  90.2098   POINT (564011 8205845)
#> 2     T1P2    17 29.89 24.60 151.0114 POINT (563865.3 8205981)
#> 3     T1P3    17 28.32 23.88 133.2068 POINT (563740.3 8206104)
#> 4     T1P4    17 31.01 25.09 153.7527 POINT (563900.6 8206308)
#> 5     T1P5    17 31.04 25.15 181.3990 POINT (564057.9 8206148)
#> 6     T1P6    17 30.25 24.72 137.2731 POINT (564196.6 8206013)
#> 7     T2P1    17 29.17 24.35 126.3728 POINT (564373.9 8206193)
#> 8     T2P2    17 31.55 25.34 150.1543 POINT (564217.9 8206330)
#> 9     T2P3    17 31.37 25.24 120.2229 POINT (564083.4 8206446)
#> 10    T2P4    17 30.42 24.81 148.3301 POINT (564388.3 8206477)

2.2.2.3 Criando o componente espacial

Eventualmente as tabelas de inventário possuem as coordenadas das parcelas. Sabendo disso, uma maneira de obter o componente espacial é construindo a partir dos dados da tabela de inventário, i.e. a partir de coordenadas dos pontos.

A construção é feita informando a coluna da Longitude/Coordenada X/East e da Latitude/Coordenada Y/North, nessa ordem, para a função espacializar(), juntamente do sistema de referenciamento de coordenadas (CRS) em seu código EPSG. Veja que deve ser informado o CRS cujas coordenadas forma obtidas.


spobj(inv)
#> Não há objeto espacial associado. Nada será retornado.
#> Use `espacializar()` para associar um objeeto espacial ao objeto Inv.

invesp <- espacializar(InvObj = inv,
                       coordx = "X",   # "X" é o nome da coluna que contém a longitude no exemplo
                       coordy = 'Y',   # "Y" é o nome da coluna que contém a longitude no exemplo
                       crs = 32721     # 32721 é o código EPSG do sistemas SIRGAS 2000 UTM 21S
                       )
#> Objeto espacial de parcelas incluído no Inventário.


spobj(invesp)
#> Sistema de Coordenadas utilizado: EPSG:32721
#> Simple feature collection with 46 features and 5 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 563740.3 ymin: 8205845 xmax: 566222.5 ymax: 8207714
#> Projected CRS: WGS 84 / UTM zone 21S
#> First 10 features:
#>    Parcela Idade     d     h       Va                 geometry
#> 1     T1P1    17 24.70 22.48  90.2098   POINT (564011 8205845)
#> 2     T1P2    17 29.89 24.60 151.0114 POINT (563865.3 8205981)
#> 3     T1P3    17 28.32 23.88 133.2068 POINT (563740.3 8206104)
#> 4     T1P4    17 31.01 25.09 153.7527 POINT (563900.6 8206308)
#> 5     T1P5    17 31.04 25.15 181.3990 POINT (564057.9 8206148)
#> 6     T1P6    17 30.25 24.72 137.2731 POINT (564196.6 8206013)
#> 7     T2P1    17 29.17 24.35 126.3728 POINT (564373.9 8206193)
#> 8     T2P2    17 31.55 25.34 150.1543 POINT (564217.9 8206330)
#> 9     T2P3    17 31.37 25.24 120.2229 POINT (564083.4 8206446)
#> 10    T2P4    17 30.42 24.81 148.3301 POINT (564388.3 8206477)

Caso o CRS não seja fornecido. A função tentará identificar se são coordenadas geográficas ou projetadas, e usará WGS 84 UTM 22S para projetadas, e WGS 84 para geográficas por padrão. Informações detalhadas podem ser consultadas na documentação ?espacializar.

2.2.2.4 Plotagem do componente espacial

Uma vez que o componente espacial existe, uma nova opção de plotagem é habilitada com o argumento type='sp', onde é possível visualizar os objetos espaciais. Note que, por padrão, objetos Inv com componente espacial terão esse comportamento por padrão.


plot(inv2, type='sp')

# Mesma coisa que, pois é o comportamento padrão quando o componente espacial está presente.
plot(inv2)

2.2.2.5 Vetores de bordadura

Outro elemento que pertence ao componene espacial é o vetor de bordadura, que pode ser interpretado como a delimitação de um talhão ou empreendimento. A inclusão desse objeto é opcional, porém é útil para delimitação da área apropriada para operações espaciais.

O vetor de bordadura é adicionado com o comando talhao(), onde o usuário fornece o caminho até o arquivo de interesse via argumento source=. A função aceita tanto arquivos espaciais (.shp, .geojson, .gpkg) quanto arquivos tabulares (.txt, .csv, .xlsx).


caminho_ate_borda <- system.file('extdata', 'bordas.shp', package = 'd2h')

inv2 <- talhao(InvObj = inv2,   # O primeiro argumento é o objeto `Inv` que será alterado
               source = caminho_ate_borda
               )
#> Objeto espacial de talhão incluído no inventário

Caso um arquivo espacial seja fornecido, então ele será apenas adicionado ao objeto Inv.

Caso seja fornecido um arquivo tabular, então o objeto espacial deve ser construído, e presume-se que o arquivo informado é composto por coordenadas dos pontos que delimitam a bordadura. Dessa forma, a função aceita arquivos que contenham duas ou três colunas de dados.

No caso de 2 colunas, estas devem ser latitude e longitude, nessa ordem, e será construído um único polígono ligando todos os vértices informados.

No caso de 3 colunas, então a primeira coluna será interpretada como a coluna de identificação de talhões, e assim os vértices serão agrupados por identificador, gerando tantos polígonos quanto identificadores únicos de talhão.


caminho_ate_borda_csv <- system.file('extdata', 'area.csv', package = 'd2h')

inv3 <- talhao(InvObj = inv2,
               source = caminho_ate_borda_csv,  # Objeto csv
               crs = 32721                      # Código EPSG do sistema SIRGAS 2000 UTM 21s
               )
#> Objeto espacial de talhão incluído no inventário

Como resumo rápido dessa etapa: se o arquivo informado for espacial, ele será apenas importado. Se for tabular, então objeto será criado.

Como todo objeto espacial possui um sistema de coordenadas associado, também a função deve lidar com isso. Por isso, talhao() possui também um argumento crs=, que indica o sistema de referência de coordenadas adotado a partir do código EPSG (veja epsg.io).

Se o objeto informado já for espacial(e.g. shapefile), então o argumento crs= pode ser ignorado pois arquivos espaciais já possuem SRC, e a função irá utilizar o SRC do arquivo. No entanto, se o objeto Inv já possuir um objeto espacial das parcelas, a função lançará um erro caso os SRC dos dois objetos não forem o mesmo. Para contornar isso, o usuário pode forçadamente informar um crs= em talhao() para reprojetar a camada da bordadura durante a execução da função.

Caso o arquivo informado seja tabular, então obrigatoriamente precisa-se informar um SRC.

talhao() possui ainda um argumento recalc=, que recebe TRUE ou FALSE (o padrão), que indica se a área total do objeto Inv deve ser recalculada a partir da área da bordadura. Com isso, outros valores como a fração amostral também serão atualizados. Veja que se recalc=TRUE, há interação entre componente espacial e componente de inventário.


areatotal(inv2)
#> -----------------------------------------
#> Não há área total associada.
#> -----------------------------------------
#> [1] Inf
# Veja que a bordadura já foi adicionada a `inv2`, porém não trouxe mudanças no componente de inventário


inv2 <- talhao(InvObj = inv2,
               source = caminho_ate_borda,
               recalc = TRUE     # Irá recalcular parâmetros do componente de inventário
               )
#> Objeto espacial de talhão incluído no inventário

areatotal(inv2)
#> [1] 222.4491

Por fim, é importante ressaltar que, caso já exista objeto espacial do inventário (os pontos das observações), então a bordadura informada deve obrigatoriamente conter todos os pontos de inventário. Caso algum ponto amostral não esteja contido em um polígono de borda, será lançado um erro informando tal constatação, juntamente com uma lista de potenciais unidades amostrais fora dos polígonos da bordadura.

Uma vez que a bordadura for informada, ela é plotada junto dos demais objetos espaciais.


plot(inv2)

## Mesma área porém gerada pelo arquivo csv
plot(inv3)

3 Outras Variáveis

Todas as mensagens e gráficos retornados usam como padrão a variável “Volume” e a unidade “m³”. Caso o usuário tenha como variável de interesse outra, como “Biomassa”, por exemplo, denotada por “w”, tais nomes podem ser rapidamente alterados mudando as opções globais d2h.unit e d2h.variavel.


inv
#>   Número de parcelas:  46 
#>    Área da parcela:  0.04  ha
#>    Área amostrada:  1.84  ha
#>    Fração amostral:  0.0092 
#>  ------------------------------------------
#>    Área Total:  200  ha
#>    Método de Amostragem:  fixo 
#>    Processo de Amostragem:  Amostragem Aleatória Simples 
#>  ------------------------------------------
#>   Volume médio(a): 132.07 m³/ha
#>   Desvio Padrão(a): 25.53 m³/ha
#>  ------------------------------------------
#>   *Assumindo volume dado(a) em m³/ha.

options(d2h.unit = 'w')
options(d2h.variavel = 'Biomassa')

# A mensagem impressa na tela mudou
inv
#>   Número de parcelas:  46 
#>    Área da parcela:  0.04  ha
#>    Área amostrada:  1.84  ha
#>    Fração amostral:  0.0092 
#>  ------------------------------------------
#>    Área Total:  200  ha
#>    Método de Amostragem:  fixo 
#>    Processo de Amostragem:  Amostragem Aleatória Simples 
#>  ------------------------------------------
#>   Biomassa médio(a): 132.07 w/ha
#>   Desvio Padrão(a): 25.53 w/ha
#>  ------------------------------------------
#>   *Assumindo biomassa dado(a) em w/ha.

No entanto, note que nem todos os textos terão extrema coerência gramatical, dada a eventual mudança de gênero dos substantivos.

4 Próximos passos

Após aprender a criar um objeto da classe Inv e entender seus componentes de inventário e espacial, é possível dar os próximos passos.