RaySplit is a versatile tool for splitting ray clouds using various geometric, temporal, and attribute-based criteria. It generates multiple output files based on the specified splitting method.
raysplit <raycloud_file> <split_method> <parameters>
<raycloud_file>: Input ray cloud file to split (.ply)<split_method>: Method used for splitting<parameters>: Method-specific parameters
Split around a plane at specified coordinates:
raysplit raycloud.ply plane 10,0,0
Splits around a plane at 10m along the X-axis.
Split around an axis-aligned bounding box:
raysplit raycloud.ply box 5,5,5 2,3,4
Box centered at (5,5,5) with radii (2,3,4) meters.
Split within/outside a capsule shape:
raysplit raycloud.ply capsule 1,2,3 10,11,12 5
Capsule from point (1,2,3) to (10,11,12) with radius 5.
Split at specified distance from mesh or tree file:
raysplit raycloud.ply mesh.ply distance 0.2
Splits at 0.2m distance from the mesh surface.
raysplit raycloud.ply trees.txt distance 0.5
Splits at 0.5m distance from tree structures.
Split by color attributes:
raysplit raycloud.ply colour
Creates one cloud per unique color.
raysplit raycloud.ply colour 0.5,0,0
Splits around half-red color component.
raysplit raycloud.ply single_colour 255,0,0
Extracts only red-colored points (0-255 scale).
raysplit raycloud.ply seg_colour
Splits segmented clouds, converting colors to indexed files.
Split by alpha channel (intensity):
raysplit raycloud.ply alpha 0.0
Separates unbounded rays (zero intensity).
Split at specific timestamps:
raysplit raycloud.ply time 1000
Split at timestamp 1000.
raysplit raycloud.ply time 3 %
Split at 3% through the time sequence.
Split based on ray direction:
raysplit raycloud.ply raydir 0,0,0.8
Splits around nearly vertical rays.
Split by ray length:
raysplit raycloud.ply range 10
Separates rays longer than 10 meters.
Split by connectivity gaps:
raysplit raycloud.ply gap 0.1
Separates largest connected component (gap < 0.1m) from remainder.
Split into spatial grid cells:
raysplit raycloud.ply grid 100,100,0
Grid with 100m cells in X,Y (no Z splitting).
raysplit raycloud.ply grid 50,50,10 1
Grid with 1m overlap between cells.
Include time dimension:
raysplit raycloud.ply grid 100,100,0,60
Grid with 60-second time periods.
Most methods create two files:
<input>_inside.ply: Points inside the criterion<input>_outside.ply: Points outside the criterion
Some methods create multiple files:
- Color splitting: One file per unique color
- Grid splitting: One file per grid cell
- Segmented color: Numbered files by segment index
Extract building interior from exterior:
raysplit building_scan.ply box 0,0,0 20,15,8
Separate vegetation from ground by height:
raysplit forest_scan.ply plane 0,0,2
Split scan by time periods:
raysplit temporal_scan.ply time 50 %
Create spatial tiles for processing:
raysplit large_scan.ply grid 200,200,0
Extract high-intensity returns:
raysplit lidar_scan.ply alpha 0.5
Separate by scanning direction:
raysplit mobile_scan.ply raydir 0,0,1
- Split large datasets into manageable chunks
- Create spatial tiles for distributed processing
- Separate different scan regions or time periods
- Isolate specific geometric features
- Extract objects by color or intensity
- Separate vegetation from ground returns
- Extract problematic data regions
- Separate by scanning quality metrics
- Isolate temporal artifacts
- Grid splitting uses coordinate origin (0,0,0) as reference
- Color splitting preserves original color information
- Gap-based splitting uses connectivity analysis
- For more detailed information on splitting algorithms, refer to the
RaySplitsource code atraycloudtools/raysplit/raysplit.cpp.