random#
Warning
As of PDAL v2.6.0, the random
command is marked as DEPRECATED. It will
be removed from the default install in PDAL v2.7 and removed completely in
PDAL v2.8.
A simply Python script that creates uniformly distributed data and writes the output using PDAL is given below.
import numpy as np
import pdal
def generate_points_uniform(num_points, x_min, x_max, y_min, y_max, z_min, z_max):
x_coords = np.random.uniform(x_min, x_max, num_points)
y_coords = np.random.uniform(y_min, y_max, num_points)
z_coords = np.random.uniform(z_min, z_max, num_points)
dtype = [('X', '<f8'), ('Y', '<f8'), ('Z', '<f8')]
points = np.zeros(num_points, dtype=dtype)
points['X'] = x_coords
points['Y'] = y_coords
points['Z'] = z_coords
return points
# Configuration for uniform distribution
num_points_uniform = 100
x_min, x_max = 0, 10
y_min, y_max = 0, 10
z_min, z_max = 0, 10
# Generate points using uniform distribution
points_uniform = generate_points_uniform(num_points_uniform, x_min, x_max, y_min, y_max, z_min, z_max)
pipeline = pdal.Writer("output_uniform.laz").pipeline(points_uniform)
pipeline.execute()
A similar Python script that creates normally distributed data and writes the output using PDAL is given below.
import numpy
import pdal
def generate_points_normal(num_points, x_mean, x_std, y_mean, y_std, z_mean, z_std):
x_coords = np.random.normal(x_mean, x_std, num_points)
y_coords = np.random.normal(y_mean, y_std, num_points)
z_coords = np.random.normal(z_mean, z_std, num_points)
dtype = [('X', '<f8'), ('Y', '<f8'), ('Z', '<f8')]
points = np.zeros(num_points, dtype=dtype)
points['X'] = x_coords
points['Y'] = y_coords
points['Z'] = z_coords
return points
# Configuration for normal distribution
num_points_normal = 100
x_mean, x_std = 5, 1
y_mean, y_std = 5, 1
z_mean, z_std = 5, 1
# Generate points using normal distribution
points_normal = generate_points_normal(num_points_normal, x_mean, x_std, y_mean, y_std, z_mean, z_std)
pipeline = pdal.Writer("output_normal.laz").pipeline(points_normal)
pipeline.execute()
The random
command is used to create a random point cloud. It uses
readers.faux to create a point cloud containing count
points
drawn randomly from either a uniform or normal distribution. For the uniform
distribution, the bounds can be specified (they default to a unit cube). For
the normal distribution, the mean and standard deviation can both be set for
each of the x, y, and z dimensions.
$ pdal random <output>
--output, -o Output file name
--compress, -z Compress output data (if supported by output format)
--count How many points should we write?
--bounds Extent (in XYZ to clip output to)
--mean A comma-separated or quoted, space-separated list of means
(normal mode): --mean 0.0,0.0,0.0 --mean "0.0 0.0 0.0"
--stdev A comma-separated or quoted, space-separated list of
standard deviations (normal mode): --stdev 0.0,0.0,0.0 --stdev "0.0 0.0 0.0"
--distribution Distribution (uniform / normal)