Compute the hull of each segmented tree. The hull can be convex, concave or a bounding box (see details and references).
1 2 3 4 5 6 7 8
An object of class LAS or LAScatalog.
character. Hull type. Can be 'convex', 'concave' or 'bbox'.
formula. An expression to be applied to each tree. It works like in grid_metrics voxel_metrics or tree_metrics and computes, in addition to the hulls a set of metrics for each tree.
character. The attribute where the ID of each tree is stored. In lidR, the default is "treeID".
The concave hull method under the hood is described in Park & Oh (2012). The function relies on the concaveman function.
SpatialPolygonsDataFrame. If a tree has less than 4 points it is not considered.
This section appears in each function that supports a LAScatalog as input.
lidR when the input of a function is a LAScatalog the
function uses the LAScatalog processing engine. The user can modify the engine options using
the available options. A careful reading of the
engine documentation is recommended before processing
lidR function should come with a section that documents the supported engine options.
LAScatalog engine supports
.lax files that significantly improve the computation
speed of spatial queries using a spatial index. Users should really take advantage a
but this is not mandatory.
Supported processing options for a
LAScatalog (in bold). For more details see the
LAScatalog engine documentation:
chunk size: How much data is loaded at once.
chunk buffer*: Mandatory to get a continuous output without edge effects. The buffer is always removed once processed and will never be returned either in R or in files.
chunk alignment: Align the processed chunks.
progress: Displays a progression estimation.
output files: Supported templates are
if chunk size is equal to 0 (processing by file),
select: Load only attributes of interest.
filter: Read only points of interest.
Park, J. S., & Oh, S. J. (2012). A new concave hull algorithm and concaveness measure for n-dimensional datasets. Journal of Information science and engineering, 28(3), 587-600.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
LASfile <- system.file("extdata", "MixedConifer.laz", package="lidR") poi = "-drop_z_below 0 -inside 481280 3812940 481320 3812980" las = readLAS(LASfile, select = "xyz0", filter = poi) # NOTE: This dataset is already segmented #plot(las, color = "treeID", colorPalette = pastel.colors(200)) # Only the hulls convex_hulls = delineate_crowns(las) plot(convex_hulls) # The hulls + some user-defined metrics convex_hulls = delineate_crowns(las, func = ~list(Zmean = mean(Z))) convex_hulls # The bounding box bbox_hulls = delineate_crowns(las, "bbox") plot(bbox_hulls) ## Not run: # With concave hull (longer to compute) concave_hulls = delineate_crowns(las, "concave") plot(concave_hulls) spplot(convex_hulls, "ZTOP") spplot(convex_hulls, "Zmean") ## End(Not run)
Loading required package: raster Loading required package: sp class : SpatialPolygonsDataFrame features : 58 extent : 481280, 481320, 3812940, 3812980 (xmin, xmax, ymin, ymax) crs : +proj=utm +zone=12 +datum=NAD83 +units=m +no_defs variables : 5 names : treeID, XTOP, YTOP, ZTOP, Zmean min values : 17, 481280.12, 3812940.02, 2.76, 0.99 max values : 187, 481319.97, 3812979.91, 28.92, 21.0892972972973 There were 50 or more warnings (use warnings() to see the first 50) There were 50 or more warnings (use warnings() to see the first 50)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.