I am using ArcGIS Pro 2.3, and need to create a point layer that is the location of trees. I have LiDAR that is classified as ground and not ground, and so from that I was able to create a DEM, DSM, and NDSM. When looking at the NDSM you can clearly see the clusters of high elevations (aka the top of trees) in red. But these trees are very large (west coast location) so the cluster of red/orange/yellow is likely one tree. I can't seem to figure out how to create the point layer of tree locations based off of any of the layers/LiDAR that I have.
1 Answer
Finding the treetop locations from your point cloud data is typically just one part of the larger process known as individual tree detection & segmentation. To accomplish this, you can use a moving window operation to find the local maxima from a canopy height model raster (your Normalized DSM). This will be less computationally intensive and based on my experience similarly accurate to operations that infer the treetop locations directly from the point cloud, though you may want to test this for yourself.
One example of how you can implement this method is using the Focal Statistics tool from the spatial analyst toolbox in ArcMap or ArcGIS Pro. Here are some other SE links you may find useful:
Finding local maxima with variable window search using ArcGIS Desktop?
Identifying individual trees and segmenting crowns from LiDAR CHM data?
Aside: Personally I like to use R, specifically the package lidR to perform these kind of operations. There are several algorithms you can use for every part of the pipeline, from removing noise from the initial cloud, decimating the points to speed up processing, detecting ground points, normalization, tree segmentation, crown delineation, and more. The creator of the package, @JRR is also quite active on this site in case you decide to go this route and need some support.