tiagodc / TreeLS

R functions for processing individual tree TLS point clouds
GNU General Public License v3.0
82 stars 27 forks source link

crown base height #16

Open stefanoch90 opened 4 years ago

stefanoch90 commented 4 years ago

Hi, thank you so much for this very useful library. I wanted to ask if it's possible to also extract "crown base height"(or called also "height at canopy base") for each tree. If not, could you recommend a workflow?

prata-gabriel commented 3 years ago

Hi!

There are few workflows, starting from a single tree point cloud and assuming that a first branch point of a tree is the division between the crown and the trunk. By slicing the tree and obtaining the horizontal projection area of each slice, the horizontal projection area above the first branch point should be larger than the area below it.

Suggested literature:

Lin, W.; Meng, Y.; Qiu, Z.; Zhang, S.; Wu, J. Measurement and calculation of crown projection area and crown volume of individual

Zhen, Z.; Quackenbush, L.; Zhang, L. Trends in Automatic Individual Tree Crown Detection and Delineation—Evolution of LiDAR Data. Remote Sens. 2016, 8, 333. [CrossRef]

Stovall, A.E.L.; Vorster, A.G.; Anderson, R.S.; Evangelista, P.H.; Shugart, H.H. Non-destructive aboveground biomass estimation of coniferous trees using terrestrial LiDAR. Remote Sens. Environ. 2017, 200, 31–42.

Yan, Z et al. 2019 - A Concave Hull Methodology for Calculating the Crown Volume of Individual Trees Based on Vehicle-Borne LiDAR Data. Remote Sensing. 2019,11,623;doi:10.3390/rs11060623

tiagodc commented 3 years ago

Thanks @prata-gabriel , great references. If you can share your code here it will be very useful also.

And @stefanoch90 , there is no solution already built in TreeLS, but it should be fairly straightforward to use its functionalities to implement the methods referenced by @prata-gabriel.

A simple workflow would be to use treeMap and treePoints just to identify the trees, then split each tree into slices (e.g. as.integer(cut(las$Z, seq(min(las$Z), max(las$Z)+0.5, by=0.5)))) and extract the convex hull of each slice using chull. From there you can calculate some useful indices like area, perimeter, the ratios between layers etc.

Cheers

stefanoch90 commented 3 years ago

Thank you very much for your answer. If you could be sharing an example, i would be grateful.