Create an artificial forest stand of a given area using tree point clouds.
artificial_stand(
  files,
  n.trees,
  dimension,
  coordinates = NULL,
  sample = TRUE,
  replace = TRUE,
  overlap = NULL,
  rotation = TRUE,
  degrees = NULL,
  n_attempts = 100,
  progress = TRUE,
  plot = TRUE,
  ...
)A character vector describing the file name or path of
the tree point cloud to use. Those files most contain three columns
representing the *XYZ* coordinates of a given point cloud.
A positive numeric vector describing the number of
point clouds to use.
A positive numeric vector of length two describing
the width and length of the future forest stand.
A data.table of two columns and with nrows
equal to n.trees describing the basal *XYZ* coordinates of the point
clouds in the future stand. If NULL, it uses random basal
coordinates based on stand dimension. NULL as default.
Logical. If TRUE, it performs a sample of the files to determine the order to build the artificial stand. If FALSE, it use the file order described in files. TRUE as default.
Logical. If TRUE, it performs a sample selection with a replacement if sample = TRUE to determine the order to build the artificial stand. Useful if the n.trees is lower than length(files). TRUE as default.
A positive numeric vector between 0 and 100 describing the overlap percentage of a given the tree crowns in the future forest stand. If NULL, the degree of overlap is not controlled.
Logical. If TRUE, it performs a rotation in yaw axis of the point cloud. TRUE as default.
A positive numeric vector describing the degrees of rotation of the point clouds in the future stand. The length(degree) should be the same as n.trees. If NULL, it creates random degrees of rotation for each n.trees.
A positive numeric vector of length one describing the number of attempts to provide random coordinates until a tree met the overlap criteria.
This needs to be used if coordinate = NULL and overlap != NULL. n_attempts = 100 as default.
Logical, if TRUE displays a graphical progress bar. TRUE as default.
Logical. If TRUE, it provides visual tracking of the distribution of each tree in the artificial stand. This can not be exported as a return object.
Parameters passed to fread for the reading of files.
A list which contain a data.table (Trees) with the information of the point clouds used and their current coordinates in the stand, and another data.table with that compile all the point clouds used.
When coordinates = NULL, artifical_stand adds, in sequence,
random coordinates to each files in the future stand based on the
crown area overlap. That is, first a tree from files is
randomly located within the stand dimention, then a second tree from
files will be located in the future stand based on the crown area
overlap from the previous tree, and so on. If during the random
location a given tree does not meet the requirements of overlap, new
random coordinates will be provided until the requirements are met.
Since artificial_stand will try to add tree to the stand until the
requirements are met, this could lead to an infinite loop if the stand
dimention is small or if the trees on files are large or many
n.trees. Therefore, the use of n_attempts is recommended to avoid
this scenario.
#' #Import an example point cloud
path <- system.file("extdata", "pc_tree.txt", package = "rTLS")
#Creates a stand of 4 trees with 10% of overlap
files <- rep(path, 4)
artificial_stand(files, n.trees = 4, dimension = c(15, 15), overlap = 10)
 #> Creating an artificial forest stand of 15 x 15 with 4 trees
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |======================================================================| 100%
#> $Stand
#>    n.trees stand_area covered_area total_crown_area n_points
#> 1:       4        225     93.60138          114.196   303248
#> 
#> $Trees
#>    Tree                                                              file
#> 1:    1 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 2:    2 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 3:    3 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 4:    4 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#>    Xcoordinate Ycoordinate       CA  Hmax
#> 1:    9.489306  11.2464647 28.54901 6.036
#> 2:    2.784030   0.8966356 28.54901 6.036
#> 3:   10.446336   3.9893417 28.54901 6.036
#> 4:    2.054869  13.7880876 28.54901 6.036
#> 
#> $Cloud
#>                X        Y     Z Tree
#>      1: 9.435401 11.12674 0.001    1
#>      2: 9.505666 11.10360 0.000    1
#>      3: 9.410832 11.15084 0.039    1
#>      4: 9.433889 11.13002 0.086    1
#>      5: 9.413047 11.12620 0.132    1
#>     ---                             
#> 303244: 2.516888 10.67904 5.420    4
#> 303245: 2.490221 10.66250 5.464    4
#> 303246: 2.600932 10.67776 5.398    4
#> 303247: 2.597624 10.74171 5.425    4
#> 303248: 2.594357 10.69603 5.451    4
#> 
#Creates a stand of 4 trees with their locations
location <- data.table(X = c(5, 10, 10, 5), Y = c(5, 5, 10, 10))
artificial_stand(files, n.trees = 4, dimension = c(15, 15), coordinates = location)
#> Creating an artificial forest stand of 15 x 15 with 4 trees
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |======================================================================| 100%
#> $Stand
#>    n.trees stand_area covered_area total_crown_area n_points
#> 1:       4        225     93.60138          114.196   303248
#> 
#> $Trees
#>    Tree                                                              file
#> 1:    1 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 2:    2 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 3:    3 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 4:    4 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#>    Xcoordinate Ycoordinate       CA  Hmax
#> 1:    9.489306  11.2464647 28.54901 6.036
#> 2:    2.784030   0.8966356 28.54901 6.036
#> 3:   10.446336   3.9893417 28.54901 6.036
#> 4:    2.054869  13.7880876 28.54901 6.036
#> 
#> $Cloud
#>                X        Y     Z Tree
#>      1: 9.435401 11.12674 0.001    1
#>      2: 9.505666 11.10360 0.000    1
#>      3: 9.410832 11.15084 0.039    1
#>      4: 9.433889 11.13002 0.086    1
#>      5: 9.413047 11.12620 0.132    1
#>     ---                             
#> 303244: 2.516888 10.67904 5.420    4
#> 303245: 2.490221 10.66250 5.464    4
#> 303246: 2.600932 10.67776 5.398    4
#> 303247: 2.597624 10.74171 5.425    4
#> 303248: 2.594357 10.69603 5.451    4
#> 
#Creates a stand of 4 trees with their locations
location <- data.table(X = c(5, 10, 10, 5), Y = c(5, 5, 10, 10))
artificial_stand(files, n.trees = 4, dimension = c(15, 15), coordinates = location)
 #> Creating an artificial forest stand of 15 x 15 with 4 trees
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |======================================================================| 100%
#> $Stand
#>    n.trees stand_area covered_area total_crown_area n_points
#> 1:       4        225     101.9986         101.9986   303248
#> 
#> $Trees
#>    Tree                                                              file
#> 1:    1 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 2:    2 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 3:    3 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 4:    4 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#>    Xcoordinate Ycoordinate       CA  Hmax
#> 1:           5           5 28.54901 6.036
#> 2:          10           5 28.54901 6.036
#> 3:          10          10 28.54901 6.036
#> 4:           5          10 28.54901 6.036
#> 
#> $Cloud
#>                X        Y     Z Tree
#>      1: 5.075139 4.892331 0.001    1
#>      2: 5.131044 4.940784 0.000    1
#>      3: 5.041859 4.883592 0.039    1
#>      4: 5.071554 4.892712 0.086    1
#>      5: 5.064148 4.872859 0.132    1
#>     ---                             
#> 303244: 7.519325 8.120474 5.420    4
#> 303245: 7.512075 8.089938 5.464    4
#> 303246: 7.579839 8.178809 5.398    4
#> 303247: 7.532417 8.221833 5.425    4
#> 303248: 7.562298 8.187133 5.451    4
#>
#> Creating an artificial forest stand of 15 x 15 with 4 trees
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |======================================================================| 100%
#> $Stand
#>    n.trees stand_area covered_area total_crown_area n_points
#> 1:       4        225     101.9986         101.9986   303248
#> 
#> $Trees
#>    Tree                                                              file
#> 1:    1 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 2:    2 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 3:    3 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#> 4:    4 /tmp/RtmpJRljPt/temp_libpath3c8f32891143/rTLS/extdata/pc_tree.txt
#>    Xcoordinate Ycoordinate       CA  Hmax
#> 1:           5           5 28.54901 6.036
#> 2:          10           5 28.54901 6.036
#> 3:          10          10 28.54901 6.036
#> 4:           5          10 28.54901 6.036
#> 
#> $Cloud
#>                X        Y     Z Tree
#>      1: 5.075139 4.892331 0.001    1
#>      2: 5.131044 4.940784 0.000    1
#>      3: 5.041859 4.883592 0.039    1
#>      4: 5.071554 4.892712 0.086    1
#>      5: 5.064148 4.872859 0.132    1
#>     ---                             
#> 303244: 7.519325 8.120474 5.420    4
#> 303245: 7.512075 8.089938 5.464    4
#> 303246: 7.579839 8.178809 5.398    4
#> 303247: 7.532417 8.221833 5.425    4
#> 303248: 7.562298 8.187133 5.451    4
#>