Yes, it is! I have a workspace using a LIDAR LAS pointcloud, where I (very simplified) have done the following:
1. Use a PointCloudExpressionEvaluator to round the XY coordinates to whole meters (which effectively creates "stacks" of points in a 1x1 m grid). Since
you are starting with a raster data already, you might skip this step (and maybe a few of the following too).
2. Use a PointCloudSorter to sort the stacks in descending order and then extract only the highest point in each stack.
3. Use a PointCloudCoercer to transform the point cloud into individual point data instead, making it possible to store the z-value as an attribute.
4. Buffer the points with at least the amount of your raster spacing.
5. Use a SpatialRelator to create a list for each point, containing the z-value attributes of all neighbouring points (that are within the buffer).
6. Use a ListRangeExtractor to get the highest z-value from the list (the point itself and all its neighbours).
7. Use a Tester to find if the point's z-value is the highest. If so, it is a local z-max, and thus a potential treetop.
I am sure someone else might have a much better approach, but this might give you some ideas.
Yes, it is! I have a workspace using a LIDAR LAS pointcloud, where I (very simplified) have done the following:
1. Use a PointCloudExpressionEvaluator to round the XY coordinates to whole meters (which effectively creates "stacks" of points in a 1x1 m grid). Since
you are starting with a raster data already, you might skip this step (and maybe a few of the following too).
2. Use a PointCloudSorter to sort the stacks in descending order and then extract only the highest point in each stack.
3. Use a PointCloudCoercer to transform the point cloud into individual point data instead, making it possible to store the z-value as an attribute.
4. Buffer the points with at least the amount of your raster spacing.
5. Use a SpatialRelator to create a list for each point, containing the z-value attributes of all neighbouring points (that are within the buffer).
6. Use a ListRangeExtractor to get the highest z-value from the list (the point itself and all its neighbours).
7. Use a Tester to find if the point's z-value is the highest. If so, it is a local z-max, and thus a potential treetop.
I am sure someone else might have a much better approach, but this might give you some ideas.
Thank You @itay and @jonas_nelson, your information was invaluable in arriving at a solution.
I also used information fromt the following post - https://knowledge.safe.com/questions/46491/hi-i-hope-you-can-help-me-i-have-lidar-and-nir-dat.html
Ben