Pular para conteúdo

Relatório Florestal


Warning

Esta biblioteca está em desenvolvimento, nenhuma das soluções apresentadas está disponível para download.

Gere um relatório florestal com base nas alturas e volumes estimados usando os outros módulos do ForestPyTools. Obtenha valores de volume e tipos de árvores por hectare em vários níveis específicos do povoamento florestal, juntamente com outras métricas. Obtenha o relatório nos formatos xlsx (Excel) ou json.


Parâmetros da Classe

ForestReport(df, plot_id, plot_size, tree_type, tree_dbh,
             tree_height, group_levels=None, tree_vol_with_bark=None,
             tree_vol_without_bark=None, iterator=None)
Parâmetros Descrição
df O dataframe contendo os dados processados do inventário florestal.
plot_id Nome da coluna que contém o identificador único para cada parcela.
plot_size Valor numérico indicando o tamanho da parcela em metros quadrados ou o nome da coluna que contém o tamanho de cada parcela em metros quadrados.
tree_type Nome da coluna que contém o id dos tipos de árvores presentes no inventário florestal. O id deve estar incluído em tree_types_df.
tree_dbh Nome da coluna que contém os valores do diâmetro à altura do peito (DAP).
tree_height Nome da coluna que contém os valores de altura das árvores.
group_levels (Opcional) Lista com os nomes dos níveis de agrupamento que o usuário deseja criar. Os grupos devem conter valores únicos. Um resumo será gerado para cada grupo. Exemplo de grupos: Fazenda, talhão, tipo de solo.
tree_vol_with_bark (Opcional) Nome da coluna que contém os valores do volume das árvores com casca.
tree_vol_without_bark (Opcional) Nome da coluna que contém os valores do volume das árvores sem casca.

Métodos da Classe

methods and parameters
  ForestReport.update_tree_types(df)#(1)!

  ForestReport.view_tree_types()

  ForestReport.get_report(dir, format="xlsx")#(2)!

  1. df = DataFrame contendo os tipos de árvores presentes no inventário florestal. Se None, o DataFrame padrão da biblioteca será utilizado.
  2. dir = Diretório onde o relatório será salvo.
    format = Formato em que o relatório será salvo. Pode ser xlsx (Excel) ou json.
Métodos Descrição
.update_tree_types() Atualiza o tree_types_df -> DataFrame que contém os IDs dos tipos de árvores, nomes e descrição.
.view_tree_types() Exibe o tree_types_df que a classe está utilizando no momento.
.get_report() Salva o relatório florestal no formato xlsx ou json no diretório especificado.

Exemplo de tabela de tipos de árvores

id name description commercial_volume missing_stems
0 normal Árvore sem distorções ou defeitos significativos 1 0
1 morta Árvore morta 0 0
2 bifurcada acima do DAP Árvore bifurcada acima do DAP 1 0
3 bifurcada abaixo do DAP Árvore bifurcada abaixo do DAP 1 0
4 queimada Árvore queimada 0 0
5 Faltante Falha na lniha de plantio 0 1

*A ordem das colunas deve ser seguida.

Atenção

  • A coluna commercial_volume é uma flag binária que indica se o tipo de árvore representado pelo id deve ser considerado no cálculo de volume comercial. Um valor igual a 1 significa que a árvore contribui para o volume útil; 0 indica exclusão desse cálculo.

  • A coluna missing_stems também é uma flag binária, utilizada para identificar ausência de árvores no local previsto de plantio. Diferentemente de árvores mortas, esses casos representam falhas no espaçamento, como resultado de mortalidade seguida de queda, desbaste ou ausência de plantio.

Descrição das Colunas

  • id: Representa um identificador único para cada tipo de árvore na classificação. Ele é usado para diferenciar os registros e pode servir como chave de referência em outros conjuntos de dados.

  • name: Indica o nome da árvore com base em sua condição ou características específicas. Esse nome funciona como uma descrição curta para fácil identificação.

  • description: Fornece uma explicação detalhada sobre a condição da árvore, incluindo informações sobre sua estrutura, estado de saúde ou possíveis defeitos que podem afetar sua qualidade comercial.

  • commercial_volume: Define se o volume dessa árvore será considerado comercialmente utilizável. Um valor de 1 indica que a árvore possui volume comercial e será utilizada, enquanto 0 significa que seu volume não será aproveitado.

  • missing_stems: Utilizada para identificar ausência de árvores no local previsto de plantio. Diferentemente de árvores mortas, esses casos representam falhas no espaçamento, como resultado de mortalidade seguida de queda, desbaste ou ausência de plantio.

Exemplo de Uso

Para exemplificar como funciona o módulo de relatório florestal iremos utilizar os dados de inventário adaptados de Arce e Dobner Jr.(2024). O inventário foi realizado em 19 diferentes fazendas, com plantios da espécies Eucalyptus dunnii variando entre 8 e 9 anos de idade. No total, 1954 árvore foram mensuradas. O volume foi calculado usando um fator de forma de 0,45 e um fator de casca de 0,91.

Fazer download do arquivo.

Primeiras 5 linhas do arquivo:

ID parcela area_parcela Idade ID_Regiao ID Fazenda ID talhao Espécie Coluna Árvore Fuste Tipo arvore dap (cm) ht ht_calculada (m) Vol (m³) Vol SC (m³)
14-401-109002-1 300 8 14 14-401 14-401-109002 Eucalyptus dunnii 4 26 1 2 23,5 18,1 17,57 0,342933476 0,329216137
14-401-109002-1 300 8 14 14-401 14-401-109002 Eucalyptus dunnii 3 21 1 1 20,6 17,4 17,25 0,258717577 0,248368874
14-401-109002-1 300 8 14 14-401 14-401-109002 Eucalyptus dunnii 1 5 1 1 20,3 17,21 0,250654405 0,240628229
14-401-109002-1 300 8 14 14-401 14-401-109002 Eucalyptus dunnii 2 12 1 1 20,3 17,6 17,21 0,250654405 0,240628229
14-401-109002-1 300 8 14 14-401 14-401-109002 Eucalyptus dunnii 2 15 1 1 20 17 17,17 0,242735156 0,23302575

A biblioteca traz por padrão um exemplo de DataFrame de tipos de árvore a ser utilizado.
Porém, cada engenheiro florestal ou empresa possui sua propria metodologia e códigos para cada tipo de árvore. Nesse caso, usamos a codificação de tipos de árvores definidos por Arce e Dobner Jr.(2024).

Fazer download do arquivo.

Abaixo podemos visualizar o DataFrame que iremos utilizar.

id name description commercial_volume missing_stems
1 Normal Árvore saudável, sem distorções significativas ou defeitos visíveis. 1 0
2 Dominante Árvore que se destaca em altura e vigor em relação às vizinhas. 1 0
3 Seco Árvore morta, sem folhas e sinais de atividade fisiológica. 0 0
4 Quebrado Árvore com parte do tronco ou copa danificada ou rompida. 0 0
5 Rebrotado Árvore originada de brotações após corte ou dano ao caule principal. 1 0
6 Falta Ausência de árvore no local previsto da linha de plantio. 0 1
7 Bifurcado Árvore com divisão do tronco principal em dois ou mais ramos principais. 1 0
8 Inclinado Árvore com crescimento significativamente inclinado em relação à vertical. 1 0
9 Apice Seco Árvore com a parte superior (ápice) seca ou morta. 1 0
10 Fuste Curvo Árvore com o tronco curvado, sem alinhamento retilíneo. 1 0
11 Suprimido Árvore suprimida pelo sombreamento ou competição com árvores vizinhas. 1 0

forest_report_example.py
1
2
3
from fptools.forest_report import ForestReport#(1)!

import pandas as pd#(2)!

  1. Importa a classe ForestReport.
  2. Importa a bilbioteca pandas para manipulação de dados.

forest_report_example.py
inventory_data = pd.read_excel(
                              r'C:\seu\caminho\exemplo_forest_report.xlsx'
                              )#(1)!

tree_df_types = pd.read_excel(r'C:\seu\caminho\tree_types.xlsx')#(2)!

report = ForestReport(inventory_data, plot_id="ID parcela",
                      plot_size='area_parcela',tree_type='Tipo arvore',
                      group_levels=['ID_Regiao','ID Fazenda','ID talhao'],
                      tree_height="ht_calculada (m)", tree_dbh="dap (cm)",
                      tree_vol_with_bark="Vol (m³)",
                      tree_vol_without_bark="Vol SC (m³)")#(3)!

report.view_tree_types()#(4)!

report.update_tree_types(tree_df_types)#(5)!

report.get_report(r'C:\seu\caminho\para\salvar', format="xlsx")#(6)!

  1. Carrega o DataFrame inventory_data a partir de um arquivo xlsx.
  2. Carrega o DataFrame tree_types_df a partir de um arquivo xlsx.
  3. Cria a variável report contendo a classe ForestReport e utilizando o dataframe inventory_data.
    Define a coluna ID parcela como responsável por identificar cada parcela.
    Define a coluna area_parcela como responsável por fornecer o tamanho da parcela em metros quadrados.
    Define a coluna Tipo arvore como responsável por identificar o ID de cada árvore presente em tree_types_df.
    Define as colunas ID_Regiao, ID Fazenda e ID talhao como subgrupos para os quais os relatórios são gerados.
    Define a coluna ht_calculada (m) como a coluna contendo as alturas das árvores em metros.
    Define a coluna dap (cm) como a coluna contendo os diâmetros das árvores à altura do peito em centímetros.
    Define a coluna Vol (m³) como a coluna contendo o volume total das árvores com casca.
    Define a coluna Vol SC (m³) como a coluna contendo o volume total das árvores sem casca.
  4. Exibe o DataFrame tree_types_df em uso (O DataFrame padrão que deve ser modificado).
  5. Atualiza o DataFrame tree_types_df utilizando o dataframe tree_df_types.
  6. Salva o relatório no formato xlsx.

Atenção: Identificadores únicos nos agrupamentos

Ao utilizar o parâmetro group_levels, é essencial que os grupos definidos contenham combinações únicas de valores entre as colunas. Isso evita ambiguidade nos resumos gerados por agrupamento.

Por exemplo, ao agrupar por ID_Regiao e ID Fazenda, não use identificadores genéricos como "A", "B" ou "C" se esses forem reutilizados em diferentes regiões. Veja os exemplos abaixo:

✅ Exemplo correto:

ID_Regiao ID Fazenda
14 14-A
14 14-B
15 15-A
15 15-B

Cada combinação entre ID_Regiao e ID Fazenda é única, garantindo agrupamentos consistentes e sem sobreposição.

❌ Exemplo incorreto:

ID_Regiao ID Fazenda
14 A
14 B
15 A
15 B

Neste exemplo incorreto, o identificador "A" aparece em duas regiões diferentes. Se o agrupamento for feito apenas por ID Fazenda, os resumos de "A" incluirão dados de ambas as regiões, resultando em erros de interpretação.

💡 Recomendação

Use identificadores compostos que incluam o contexto completo, como "14-A", "15-B" etc., garantindo que cada grupo seja unívoco.

Referências

ARCE, JULIO EDUARDO; DOBNER JR., MARIO. (2024). Manejo e planejamento de florestas plantadas: com ênfase nos gêneros Pinus e Eucalyptus. Curitiba, PR: Ed. dos Autores, 419p.