RayExtract is designed for extracting natural features from point cloud data. It supports a variety of operations including terrain extraction, individual tree identification, forest structure analysis, and canopy reconstruction.
rayextract <command> <input_file> [options]
<command>: The operation to perform (e.g.,terrain,trunks,forest,trees,leaves,grid).<input_file>: The path to the input point cloud file (.ply).[options]: Command-specific options to adjust the tool's behavior.--verbose: Extra debug output.
rayextract terrain cloud.ply --gradient 1
Extracts the terrain undersurface into a mesh. Consider decimating your point cloud first for better performance.
--gradient <value>: Maximum gradient counted as terrain.--verbose: Extra debug output.
rayextract trunks cloud.ply --exclude_rays
Extracts tree trunk base locations and their radii into a text file.
--exclude_rays: Excludes candidates with rays passing through them.--verbose: Extra debug output.
rayextract forest cloud.ply --ground ground_mesh.ply --trunks cloud_trunks.txt --width 0.25 --smooth 15 --drop_ratio 0.1
Extracts tree locations, radii, and heights into a file.
--ground <file>: Ground mesh file (assumes flat if not provided).--trunks <file>: Known tree trunks file.--width <value>: Grid cell width.--smooth <value>: Canopy smooth iterations (higher values for rough canopies).--drop_ratio <value>: Percentage drop in canopy height classified as separate trees.--verbose: Extra debug output.
rayextract trees cloud.ply ground_mesh.ply --max_diameter 0.9 --crop_length 1.0 --distance_limit 1 --height_min 2 --girth_height_ratio 0.08 --global_taper 0.024 --global_taper_factor 0.3 --gravity_factor 0.3 --branch_segmentation --grid_width
Estimates trees, and saves the results to a text file, a mesh file, and a segmented point cloud (colored per tree).
--max_diameter <value>: Maximum trunk diameter for segmenting trees.--crop_length <value>: Crops small branches to this distance from the end.--distance_limit <value>: Maximum distance between neighbor points in a tree.--height_min <value>: Minimum height counted as a tree.--girth_height_ratio <value>: The height up the tree's trunk to estimate girth.--global_taper <value>: Forces a taper value (diameter per length) for trees under this factor of maximum tree height. Use 0 to estimate from data.--global_taper_factor <value>: 1 estimates the same taper for the whole scan, 0 for per-tree tapering.--gravity_factor <value>: Larger values preference vertical trees.--branch_segmentation: Output (_segmented.ply) is per branch segment.--grid_width <value>: Assumes the cloud has been gridded with the given width. Specify the width to crop results accordingly.--verbose: Extra debug output.
rayextract leaves cloud.ply trees.txt --leaf_mesh mesh.ply --leaf_area 0.002 --leaf_droop 0.1 --stalks --verbose
Reconstructs leaf locations from specified tree structures.
--leaf_mesh <file>: Mesh for each leaf, centered at (0,0,0) along the y-axis.--leaf_area <value>: Area for each leaf.--leaf_droop <value>: Droop per square horizontal distance.--stalks: Include stalks to the closest branch.--verbose: Extra debug output.
rayextract grid cloud.ply --voxel_size --verbose
Analyzes point cloud data using a grid approach.
--voxel_size <value>: Specifies the size of each voxel in the grid.--verbose: Extra debug output.
- For more detailed information on command usage and additional options, refer to the
RayExtractsource code atraycloudtools/rayextract/rayextract.cpp. .