Create cubes of a given distance in a point cloud though their voxelization. It use a modify version of the code used in Greaves et al. 2015.
voxels(cloud, edge_length, threads = 1L, obj.voxels = TRUE)
A data.table
with *XYZ* coordinates in the first three columns.
A positive numeric
vector with the voxel-edge length for the x, y, and z coordinates. It use the same dimensional scale of the point cloud.
An integer
specifying the number of threads to use for parallel processing. Experiment to see what works best for your data on your hardware.
Logical. If obj.voxel = TRUE
, it returns an object of class "voxels"
, If obj.voxel = FALSE
, it returns a data.table
with the coordinates of the voxels created and the number of points in each voxel. TRUE
as default.
If obj.voxels == TRUE
, it return an object of class "voxels"
which contain a list with the points used to create the voxels, the parameter edge_length
, and the voxels
created. If FALSE
, it returns a data.table
with the coordinates of the voxels created and the number of points in each voxel.
Voxels are created from the negative to the positive *XYZ* coordinates.
Greaves, H. E., Vierling, L. A., Eitel, J. U., Boelman, N. T., Magney, T. S., Prager, C. M., & Griffin, K. L. (2015). Estimating aboveground biomass and leaf area of low-stature Arctic shrubs with terrestrial LiDAR. Remote Sensing of Environment, 164, 26-35.
data("pc_tree")
###Create cube of a size of 0.5.
voxels(pc_tree, edge_length = c(0.5, 0.5, 0.5))
#> $cloud
#> X Y Z
#> 1: 9.14850 -1.11025 0.00099992
#> 2: 9.22250 -1.12225 0.00000000
#> 3: 9.12125 -1.09025 0.03899991
#> 4: 9.14725 -1.15775 0.10199999
#> 5: 9.14675 -1.10650 0.08574998
#> ---
#> 75844: 11.43875 1.20600 5.42024994
#> 75845: 11.46825 1.19425 5.46449995
#> 75846: 11.39125 1.27450 5.39824963
#> 75847: 11.34125 1.23475 5.42525005
#> 75848: 11.38000 1.25925 5.45124960
#>
#> $parameter
#> X.size Y.size Z.size
#> 0.5 0.5 0.5
#>
#> $voxels
#> X Y Z N
#> 1: 9.38575 -1.2837501 0.25 37
#> 2: 8.88575 -1.2837501 0.25 12
#> 3: 8.88575 -0.7837501 0.25 36
#> 4: 9.38575 -1.2837501 0.75 47
#> 5: 8.88575 -1.2837501 0.75 8
#> ---
#> 675: 10.38575 2.2162499 5.25 3
#> 676: 10.88575 1.7162499 5.25 95
#> 677: 11.38575 1.7162499 5.25 2
#> 678: 10.88575 2.2162499 5.25 17
#> 679: 10.88575 2.7162499 4.75 8
#>
#> attr(,"class")
#> [1] "voxels"