Title: | Dynamic Stem Profile Models, AKA Tree Taper Equations |
Version: | 1.1 |
Description: | Performs calculations with tree taper (or stem profile) equations, including model fitting. The package implements the methods from García, O. (2015) "Dynamic modelling of tree form" http://mcfns.net/index.php/Journal/article/view/MCFNS7.1_2. The models are parsimonious, describe well the tree bole shape over its full length, and are consistent with wood formation mechanisms through time. |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 7.2.1 |
Depends: | R (≥ 2.10) |
VignetteBuilder: | knitr |
Suggests: | knitr, lattice |
URL: | https://github.com/ogarciav/dyntaper |
BugReports: | https://github.com/ogarciav/dyntaper/issues |
NeedsCompilation: | no |
Packaged: | 2022-08-12 03:55:06 UTC; oscar |
Author: | Oscar Garcia |
Maintainer: | Oscar Garcia <garcia@dasometrics.net> |
Repository: | CRAN |
Date/Publication: | 2022-08-14 08:00:02 UTC |
dyntaper: Dynamic Stem Profile Models, AKA Tree Taper Equations
Description
Performs calculations with tree taper (or stem profile) equations, including model fitting. The package implements the methods from García, O. (2015) "Dynamic modelling of tree form" http://mcfns.net/index.php/Journal/article/view/MCFNS7.1_2. The models are parsimonious, describe well the tree bole shape over its full length, and are consistent with wood formation mechanisms through time.
Details
The main functions relevant to the user are
-
taper
: Calculates diameters or cross-sectional areas for given height levels. -
hlevel
: Calculates the height level for a given diameter or cross-sectional area. -
volume
: Calculates the volume between two given height levels.
The package includes a small example dataset, brink
.
For a tutorial, see the vignette: vignette("dyntaper", package="dyntaper")
.
Author(s)
Maintainer: Oscar Garcia garcia@dasometrics.net (ORCID)
References
García, O. (2015) "Dynamic modelling of tree form". Mathematical and Computational Forestry & Natural-Resource Sciences (MCFNS) 7(1), 9–15. (http://mcfns.net/index.php/Journal/article/view/MCFNS7.1_2).
Koirala, A., Montes, C. R., Bullock, B. P. and Wagle, B. H. (2021) "Developing taper equations for planted teak (Tectona grandis L. f.) trees of central lowland Nepal". Trees, Forests and People 5. (doi:10.1016/j.tfp.2021.100103).
See Also
Useful links:
Examples
dfir <- c(2.569, 0, 1.042, 0.3012, -1) # params. for D.fir in B.C.
height <- 32; dbh <- 24; k <- 0.956 # k is a bark conversion factor
# Plot a taper curve (inside-bark diameter over height levels):
curve(
taper(h, height, k*dbh, dfir, 1.3), # 1.3 m is the breast height
from = 0, to = 32, xname = "h")
# Height level for a diameter of 10 cm (i.b.):
(h10 <- hlevel(10, height, k*dbh, dfir, 1.3))
# Volume from a 30 cm stump to a 10 cm diameter limit:
volume(0.3, h10, height, k*dbh, dfir, 1.3, 100)
Integral of decay function.
Description
Integral of decay function.
Usage
Id(x, p)
Arguments
x |
Input value(s), possibly a vector. |
p |
Parameter. |
Value
Integral of the decay function between 0 and x.
Examples
Id(2, 0)
Id(1.5,0.5)
Id(2.5, 0.5)
Id(2.5, -0.5)
for(p in seq(1, -1, -0.5)) curve(Id(x, p), 0, 3, add=(p != 1))
Double integral of decay function.
Description
Double integral of decay function.
Usage
Idd(x, p)
Arguments
x |
Input value(s), possibly a vector. |
p |
Parameter. |
Value
Iterated integral of the decay function between 0 and x, that is, the integral of Id(x, p).
Examples
Idd(2, 0)
Idd(1.5,0.5)
Idd(2.5, -1)
Idd(2.5, -0.5)
for(p in seq(1, -1, -0.5)) curve(Idd(x, p), 0, 3, add=(p != 1))
Small taper dataset from Brink and von Gadow (1986).
Description
Taper measurements on 10 Eucalyptus cloeziana trees.
Usage
brink
Format
A data frame with 108 rows and 5 variables:
- Tree
tree identification number (factor)
- h
height level, meters
- dib
diameter inside bark, centimeters
- Dob
dbh outside bark, cm (breast height is 1.35 m)
- H
total height, meters
Source
Brink, C. and von Gadow, K. (1986) "On the use of growth and decay functions for modelling stem profiles". EDV in Medizin und Biologi 17, 20-27
Decay function delta
Description
Calculates (1 - p*x)_+^{1/p}
, or its limit exp(-x)
when p
tends to 0.
Usage
decay(x, p)
Arguments
x |
Input value(s), possibly a vector. |
p |
Parameter. |
Details
Perhaps overkill, but uses log1p()
function for better
accuracy than the more obvious formula.
Value
Decay function value(s).
Examples
decay(2, 0) == exp(-2)
decay(1.5, 0.5)
decay(2.5, 0.5)
decay(2.5, -0.5)
for(p in seq(1, -1, -0.5)) curve(decay(x, p), 0, 3, add=(p != 1))
Height level for given diameter or area.
Description
Find the height level at which the tree reaches a given diameter (if
area == FALSE
, default) or a given cross-sectional area (if
area == TRUE
).
That is, the inverse of taper()
, except that a vector argument
is not allowed.
Usage
hlevel(ds, H, D, b, bh, area = FALSE)
Arguments
ds |
The given diameter or area. |
H |
Tree total height. |
D |
Tree diameter at breast height. |
b |
Vector with the 5 parameters. |
bh |
Breast height. Typically 1.2, 1.3 or 1.4 m, or 4.5 ft. |
area |
If TRUE, ' |
Value
Height level corresponding to 'ds
' if any, otherwise NA
.
Examples
b <- c(2.569, 0, 1.042, 0.3012, -1) # parameters
Dib <- 0.956 * 24 # convert dbh outside bark to inside bark
hlevel(15, 32, Dib, b, 1.3) # height where the diameter is 15
hlevel(24, 32, Dib, b, 1.3) # breast height
hlevel(35, 32, Dib, b, 1.3) # height where the diameter is 35
Tree taper (or profile) equation.
Description
Returns the diameter or cross-sectional area at one or more hight levels.
Usage
taper(h, H, D, b, bh, area = FALSE)
Arguments
h |
Height level(s), possibly a vector. |
H |
Tree total height. |
D |
Tree diameter at breast height (dbh). |
b |
Vector with the 5 parameters. |
bh |
Breast height. Typically 1.2, 1.3 or 1.4 m, or 4.5 ft. |
area |
If TRUE, returns cross-sectional areas, otherwise returns diameters. Default is FALSE. |
Value
Diameter(s) at level(s) 'h
' if 'area
' is FALSE,
otherwise cross-sectional area(s).
Note
Diameters or areas are either all outside bark, or all inside bark.
A dbh outside bark can be used with an inside-bark taper equation through
a substitution D -> k * D
, where k
is an outside to inside
bark conversion factor.
Examples
curve(taper(x, 32, 0.956*24, c(2.569, 0, 1.042, 0.3012, -1), 1.3), 0, 32)
Unscaled base taper curve of cross-sectional area vs height level.
Description
Unscaled base taper curve of cross-sectional area vs height level.
Usage
tbase(h, H, b)
Arguments
h |
Height level(s), possibly a vector. |
H |
Tree total height. |
b |
Vector with the 5 parameters. |
Value
Value(s) proportional to the area(s) at the level(s) h
.
Examples
tbase(16, 32, c(2.569, 0, 1.042, 0.3012, -1))
Volume between two height levels.
Description
Volume between two height levels.
Usage
volume(h1, h2, H, D, b, bh, rhd)
Arguments
h1 , h2 |
The two height levels. |
H |
Tree total height. |
D |
Tree diameter at breast height. |
b |
Vector with the 5 parameters. |
bh |
Breast height. Typically 1.2, 1.3 or 1.4 m, or 4.5 ft. |
rhd |
Ratio between the height and diameter units. E.g., 100 for m and cm, or 12 for feet and inches. |
Value
Volume between h1
and h2
.
Examples
b <- c(2.569, 0, 1.042, 0.3012, -1) # parameters
Dib <- 0.956 * 24 # convert dbh outside bark to inside bark
volume(0, 32, 32, Dib, b, 1.3, 100) # total volume
h15 <- hlevel(15, 32, Dib, b, 1.3) # height for diameter 15
volume(0.3, h15, 32, Dib, b, 1.3, 100) # volume between stump and h15