knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.height = 6, fig.width = 6 )
This vignette gives a quick example of a simple workflow to produce discrete lidar point clouds from TROLL simulation and corresponding height canopy models.
We will use rcontroll
with a previous simulation (TROLLv3_output
) as a starting point for new simulations.
suppressMessages(library(rcontroll)) data("TROLLv3_output")
The troll
function include a lidar
input to specify the details of the lidar simulation that can be easily generated using the generate_lidar
function.
Parameters for the lidar simulation includes mean and standard deviation of pulse density, the laser attenuation factor, the transmittance of laser after hit, and the iteration for point cloud generation (see ?generate_lidar
).
sim <- troll( name = "test", global = update_parameters(TROLLv3_output, nbiter = 12 * 1), species = TROLLv3_output@inputs$species, climate = TROLLv3_output@inputs$climate, daily = TROLLv3_output@inputs$daily, forest = get_forest(TROLLv3_output), lidar = generate_lidar(mean_beam_pc = 10, iter_pointcloud_generation = 11), verbose = FALSE )
Printing the output rcontroll
inform the lidar simulation status:
sim
The point cloud can be accessed in a list in the attribute @las
:
sim@las
lidR::plot(sim@las[[1]])
lidR
include aplot
method for las objects with a nice 3D interactive plot.
rcontroll
includes a get_chm
method to extract the canopy height model from the point cloud as a raster:
get_chm(sim)
rcontroll
includes in the autoplot
method an automatic plot of the canopy height model when choosing what = "lidar"
(if the lidar simulations as been activated obviously):
rcontroll::autoplot(sim, what = "lidar")
Prefer to use
rcontroll::autoplot
instead ofautoplot
alone to avoid namespace conflict withggplot2
.
Similarly, the stack
function include a lidar
input to specify the details of the lidar simulation that can be easily generated using the generate_lidar
function.
Here we test the difference between a simulation with mean pulse density of 10 (10pc
) and 20 (20pc
):
sim_stack <- stack( name = "teststack", simulations = c("10pc", "20pc"), global = update_parameters(TROLLv3_output, nbiter = 12 * 1), species = TROLLv3_output@inputs$species, climate = TROLLv3_output@inputs$climate, daily = TROLLv3_output@inputs$daily, forest = get_forest(TROLLv3_output), lidar = list( "10pc" = generate_lidar( mean_beam_pc = 10, iter_pointcloud_generation = 11 ), "20pc" = generate_lidar( mean_beam_pc = 10, iter_pointcloud_generation = 11 ) ) %>% dplyr::bind_rows(.id = "simulation"), verbose = FALSE, cores = 2, thin = c(1, 5, 10) )
Printing the output rcontroll
inform the lidar simulation status:
sim_stack
The point clouds can be accessed in a list in the attribute @las
:
sim_stack@las
lidR::plot(sim_stack@las[[2]])
rcontroll
includes a get_chm
method to extract the canopy height model from the point clouds as a raster:
get_chm(sim_stack)
rcontroll
includes in the autoplot
method an automatic plot of the canopy height model when choosing what = "lidar"
(if the lidar simulations as been activated obviously):
rcontroll::autoplot(sim_stack, what = "lidar")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.