Compute the hull of each tree.
Compute the hull of each segmented tree. The hull can be convex, concave or a bounding box (see details and references).
delineate_crowns(
las,
type = c("convex", "concave", "bbox"),
concavity = 3,
length_threshold = 0,
func = NULL,
attribute = "treeID"
)las |
An object of class LAS or LAScatalog. |
type |
character. Hull type. Can be 'convex', 'concave' or 'bbox'. |
concavity |
numeric. If |
length_threshold |
numeric. If |
func |
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. |
attribute |
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.
A SpatialPolygonsDataFrame. If a tree has less than 4 points it is not considered.
LAScatalog
This section appears in each function that supports a LAScatalog as input.
In 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 LAScatalogs. Each
lidR function should come with a section that documents the supported engine options.
The LAScatalog engine supports .lax files that significantly improve the computation
speed of spatial queries using a spatial index. Users should really take advantage a .lax files,
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 {XLEFT}, {XRIGHT},
{YBOTTOM}, {YTOP}, {XCENTER}, {YCENTER} {ID} and,
if chunk size is equal to 0 (processing by file), {ORIGINALFILENAME}.
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.
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)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.