---
title: "dendrometry: Forest Estimations and Dendrometric Computations"
subtitle: "Guide and examples to use main functions of the packages."
author: "Narcisse Yehouenou"
date: "`r Sys.Date()`"
output:  
  html_document:
    theme: journal
    toc: yes
    toc_depth: 5
    toc_float: yes
    number_sections: true
vignette: >
  %\VignetteIndexEntry{HTML browser interface for user guide.}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  markdown: 
    wrap: 72
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = FALSE,
  comment = "#>"
)
```

# The `dendrometry` r package

## Description

The r package `dendrometry` is an implementation in R language of
forests estimations methods such as dendrometric parameters of trees and
structural parameters of tree populations. The objective is to provide
an user-friendly R package for researchers, ecologists, foresters,
statisticians, loggers and others persons who deal with forest inventory
data. Useful conversion of angle value from degree to radian, conversion
from angle to slope (in percentage) and their reciprocals as well as
principal angle determination are also included. Position and dispersion
parameters usually found in forest studies are implemented. The package
contains Fibonacci series, its extensions and the Golden Number
computation.

## Package citation

Please cite this package in publication or anywhere it comes to be
useful for you. Using `citation` R function is a simple way to get this
package references on R interface. The function also provides a BibTeX
entry for La-TeX users.

```{r Citation, eval=FALSE}
citation("dendrometry")
```

# Forest estimations: Structural parameters

Before use the package, load it first.

```{r package}
library(dendrometry)
```

## `Tree` data

Let consider the package built-in `Tree` data.

```{r data, collapse=TRUE}
data("Tree")
head(Tree)
```

To see `Tree`data description, use

```{r data description, eval=FALSE}
help("Tree")
```

## Diameter at Breast Height (DBH)

Use `dbh` function to estimate trees diameters (DBH).Type `?dbh` for
help.

```{r dbh}
Tree$DBH <- dbh(Tree$circum)
head(Tree)
```

## Height estimation

Use `height` function to estimate tree height.Type `?height` for help.

```{r Height estimation}
Tree$upHeight <- height(
  distance = Tree$dist, top = Tree$up, bottom = Tree$down,
  type = "angle", angleUnit = "deg"
)
Tree$futHeight <- height(
  distance = Tree$dist, top = Tree$fut, bottom = Tree$down,
  type = "angle", angleUnit = "deg"
)
head(Tree)
```

### Let round data

```{r round, eval=TRUE}
Tree$DBH <- round(Tree$DBH, 2)
Tree$upHeight <- round(Tree$upHeight, 2)
Tree$futHeight <- round(Tree$futHeight, 2)
Tree
```

## Compute slope

Ones could need converting angle values to slope. The `angle2slope`
function does it easily. The reciprocal of this function is
`slope2angle`.

```{r slope}
Tree$up.slope <- angle2slope(Tree$up)
Tree$up.slope <- round(Tree$up.slope)
Tree
```

## Individual basal area

The basal area of each tree is computed with `basal_i` function.

```{r ind basal}
Tree$basal <- basal_i(dbh = Tree$DBH / 100)
Tree$basal <- round(Tree$basal, 4)
Tree
```

DBH is divided by **100** in order to convert DBH to meter (m). This
conversion is optional and depends on the study methodology.

## Lorey's mean height

The Lorey's mean height is computed via `loreyHeight` function.

```{r Lorey}
Lorey <- loreyHeight(basal = Tree$basal, height = Tree$upHeight)
Lorey
```

**Note:** Simple mean of height is different from Lorey's mean height.

```{r Lorey \' s and simple mean diffrence, echo=FALSE}
Height.Mean <- mean(Tree$upHeight)
Height <- c(Height.Mean, Lorey)
names(Height) <- c("Mean of Height(m)", "Lorey height(m)")
Height
```

## Mean diameter

The mean diameter is computed with `diameterMean` function.

```{r Mean diameter}
Dm <- diameterMean(Tree$DBH)
Dm
```

**Note:** Simple mean of diameter is different from mean diameter (Dm).

```{r Mean diameter vs simple mean of dbh, echo=FALSE}
Diam <- mean(Tree$DBH)
Diameter <- c(Diam, Dm)
names(Diameter) <- c("Simple mean of Diameter(cm)", "Mean diameter(cm)")
Diameter
```

# Logging: Dendrometric characteristics

This section is illustrated with the `Logging` data set.

## The `Logging` dataset

The `Logging` data are in a data frame with twenty five observations and
eight variables assumed collected on trees and/or logs. Type `?Logging`
for details.

```{r Logging dataset}
data("Logging")
summary(Logging)
```

## `factorize` a dataset

The variable `tree` is considered as *character* rather than *factor*.
To overcome that and make easier manipulation one changes *character*
variables to *factor* variables. To do that for whole dataset, use
function `factorize`. Type `?factorize` for help.

```{r factorize}
class(Logging$tree)
Logging <- factorize(data = Logging)
class(Logging$tree)
summary(Logging)
head(Logging, 4)
attach(Logging)
```

## The decrease coefficient

This coefficient expresses the ratio between the diameter (or
circumference) at mid-height of the bole and the diameter (or
circumference) measured at breast height. The `decrease` function is
used to compute this coefficient. Type `?decrease` for help.

```{r decrease}
Decrease <- decrease(middle = diametreMedian, breast = diametreBase)
Decrease
```

## The reduction coefficient

The reduction coefficient is the ratio between the difference in size at
breast height and mid-height on the one hand, and the size at breast
height on the other. It is thus the complement to 1 of the coefficient
of decrease. The `reducecoef` function is used to compute the reduction
coefficient. Type `?reducecoef` for help.

```{r reducecoef}
Reduce <- reducecoef(middle = diametreMedian, breast = diametreBase)
Reduce
```

## Metric decay

The average metric decay expresses the difference, in centimeters per
meter, between the diameter (or circumference) at breast height and its
diameter at mid-height of a stem related to the difference between the
height at mid-height and that at breast height. The average metric decay
is computed using `decreaseMetric` function.Type `?decreaseMetric` for
help.

```{r decreaseMetric}
DecMetric <- decreaseMetric(
  dmh = diametreMedian, dbh = diametreBase,
  mh = hauteur / 2
)
DecMetric
```

In case of DBH considered at other height than 1.3 m, the breast height
is set via `bh` argument of `decreaseMetric` function.

```{r decreaseMetric 1.5}
DecMetric1.5 <- decreaseMetric(
  dmh = diametreMedian, dbh = diametreBase,
  mh = hauteur / 2, bh = 1.5
)
DecMetric1.5
```

## Logs and trees volume computation

The wood volume of logs and trees is computed withe `volume` function.
Type `?volume` for help. The `Huber`, `Smalian`, `Cone` and `Newton`
methods are implemented. When `successive` is set *TRUE*, the selected
method is implemented on all log belonging to the same tree. The sum of
logs volume is returned per tree. Type `?volume` for details.

### On foot or one log tree volume

```{r volume}
# HUBER
VolHub <- volume(height = hauteur, dm = diametreMedian, method = "huber")
# SMALIAN
VolSmal <- volume(
  height = hauteur, do = diametreBase, ds = diametreSection,
  method = "smalian"
)
# CONE
VolCone <- volume(
  height = hauteur, do = diametreBase, ds = diametreSection,
  method = "cone"
)
# NEWTON
VolNew <- volume(
  height = hauteur, do = diametreBase, dm = diametreMedian,
  ds = diametreSection, method = "newton"
)
```

Make a data frame of tree volumes per method.

```{r Trees volume}
TreeVol <- data.frame(tree, VolHub, VolSmal, VolCone, VolNew)
head(TreeVol)
```

### Tree volume from its logs volume sum

Now, let consider the variable `tree` as the tree to which belong the
log; such that each observation of the data set stands for
characteristics of a log. It's like trees are cut in many logs. Then
those logs are measured. All logs from the same tree have the same value
for variable `tree`. Then let compute trees volume with sum of all logs
obtained from each tree. The `successive` argument should then be set to
`TRUE`.

```{r volume successive}
# HUBER
VolHubSuc <- volume(
  height = hauteur, dm = diametreMedian, method = "huber",
  successive = TRUE, log = tree
)
# SMALIAN
VolSmalSuc <- volume(
  height = hauteur, do = diametreBase, ds = diametreSection,
  method = "smalian", successive = TRUE, log = tree
)
# CONE
VolConSuc <- volume(
  height = hauteur, do = diametreBase, ds = diametreSection,
  method = "cone", successive = TRUE, log = tree
)
# NEWTON
VolNewSuc <- volume(
  height = hauteur, do = diametreBase, dm = diametreMedian,
  ds = diametreSection, method = "newton", successive = TRUE,
  log = tree
)
VolNewSuc
volume(
  height = hauteur, do = diametreBase, dm = diametreMedian,
  ds = diametreSection, method = "newton", successive = TRUE, log = tree
)
```

Make a data frame of tree volumes per method.

```{r Tree volume successive}
TreeVolSuc <- data.frame(tree = unique(tree), VolHubSuc, VolSmalSuc, VolConSuc, VolNewSuc)
TreeVolSuc
```

## The shape coefficient

The shape coefficient of the tree is the ratio of the actual volume of
the tree to the volume of a cylinder having as base the surface of the
section at 1.3 m (or a given breast height) and as length, the height of
the tree.

```{r shape coefficient}
Shape <- shape(volume = VolNewSuc, height = hauteur, dbh = perimetreMedian)
Shape
```
