Helios++
Helios software for LiDAR simulations
LasSyncFileWriter Class Reference

SyncFileWriter implementation for LAS format. More...

#include <LasSyncFileWriter.h>

Inheritance diagram for LasSyncFileWriter:
Collaboration diagram for LasSyncFileWriter:

Public Member Functions

 LasSyncFileWriter (const std::string &path, bool compress=false, double scaleFactor=0.0001, glm::dvec3 offset=glm::dvec3(0, 0, 0), double minIntensity=0.0, double deltaIntensity=1000000.0)
 Synchronous LAS file writer constructor. More...
 
void _write (Measurement const &m, glm::dvec3 const &shift) override
 Write measurement to LAS file. More...
 
void _write (std::vector< double > const &fullwave, int fullwaveIndex, double minTime, double maxTime, glm::dvec3 const &beamOrigin, glm::dvec3 const &beamDir, long gpsTime) override
 Write fullwave to LAS file. More...
 
void _write (Trajectory const &t) override
 Write trajectory to compressed file. More...
 
void finish () override
 LasSyncFileWriter updates header and guarantees writings have been done only after the finish method has been invoked. If it has not been manually invoked, then it will when destroying the instance. Once the finish method has been invoked, the LasSyncFileWriter should not be used again.
 
- Public Member Functions inherited from SyncFileWriter
 SyncFileWriter (const std::string &path)
 Instantiate a SyncFileWriter which writes to file at given path. More...
 
void write (Measurement const &m, glm::dvec3 const shift=glm::dvec3(0, 0, 0))
 Synchronously write Measurement to file. More...
 
void write (Trajectory const &t)
 Synchronously write trajectory to file. More...
 
void write (std::vector< double > const &fullwave, int fullwaveIndex, double minTime, double maxTime, glm::dvec3 const &beamOrigin, glm::dvec3 const &beamDir, long gpsTime)
 Synchronously write Fullwave to file. More...
 
std::string getPath ()
 Obtain the path to the file. More...
 

Static Public Attributes

static const U8 CLASSIFICATION_MASK = 31
 Classification mask constant for LAS format.
 

Protected Attributes

LASwriteOpener lwOpener
 LASwriter opener. Used to instantiate LASwriter lw.
 
std::shared_ptr< LASwriter > lw
 LASwriter. Used to write to LAS file.
 
LASheader lwHeader
 Header definition for the LAS file.
 
LASpoint lp
 LASpoint used to build different points which shall be written to LAS output file.
 
double scaleFactor
 Scale factor for coordinates. More...
 
double scaleFactorInverse
 Inverse of the scale factor. More...
 
glm::dvec3 offset
 Offset for coordinates. More...
 
double minIntensity
 Minimum value for intensity. Values less than this will be clipped to minIntensity.
 
double maxIntensity
 Maximum value for intensity. Values greater than this will be clipped to maxIntensity.
 
double deltaIntensity
 The difference between max and min intensity. More...
 
bool finished
 Flag used to control the sync writer status.
 
double intensityCoefficient
 Precomputed intensity coefficient. More...
 
I32 ewAttrIdx
 Index of echo width attribute in LAS header definition.
 
I32 fwiAttrIdx
 Index of full wave index attribute in LAS header definition.
 
I32 hoiAttrIdx
 Index of hit object ID attribute in LAS header definition.
 
I32 ewAttrStart
 Echo width attribute start (LAS extra bytes format)
 
I32 fwiAttrStart
 Full wave index attribute start (LAS extra bytes format)
 
I32 hoiAttrStart
 Hit object ID attribute start (LAS extra bytes format)
 

Detailed Description

SyncFileWriter implementation for LAS format.

Author
Alberto M. Esmoris Pena
Version
1.0

Constructor & Destructor Documentation

◆ LasSyncFileWriter()

LasSyncFileWriter::LasSyncFileWriter ( const std::string &  path,
bool  compress = false,
double  scaleFactor = 0.0001,
glm::dvec3  offset = glm::dvec3(0, 0, 0),
double  minIntensity = 0.0,
double  deltaIntensity = 1000000.0 
)
inlineexplicit

Synchronous LAS file writer constructor.

See also
SyncFileWriter::path
Parameters
compressSpecify is use compressed LAS format (LAZ) or not (pure LAS)
See also
LasSyncFileWriter::scaleFactor
LasSyncFileWriter::offset
LasSyncFileWriter::minIntensity
LasSyncFileWriter::deltaIntensity

Member Function Documentation

◆ _write() [1/3]

void LasSyncFileWriter::_write ( Measurement const &  m,
glm::dvec3 const &  shift 
)
inlineoverridevirtual

Write measurement to LAS file.

See also
SyncFileWriter::_write(Measurement const &, glm::dvec3 const &)

Implements SyncFileWriter.

◆ _write() [2/3]

void LasSyncFileWriter::_write ( std::vector< double > const &  fullwave,
int  fullwaveIndex,
double  minTime,
double  maxTime,
glm::dvec3 const &  beamOrigin,
glm::dvec3 const &  beamDir,
long  gpsTime 
)
inlineoverridevirtual

Write fullwave to LAS file.

See also
SyncFileWriter::_write(std::vector

Implements SyncFileWriter.

◆ _write() [3/3]

void LasSyncFileWriter::_write ( Trajectory const &  t)
inlineoverridevirtual

Write trajectory to compressed file.

See also
SimpleSyncFileWriter::_write( long, double, double, double, double, double, double )

Implements SyncFileWriter.

Member Data Documentation

◆ deltaIntensity

double LasSyncFileWriter::deltaIntensity
protected

The difference between max and min intensity.

\[ \Delta_{I} = I_{max} - I_{min} \]

◆ intensityCoefficient

double LasSyncFileWriter::intensityCoefficient
protected

Precomputed intensity coefficient.

\[ I_{c} = \frac{65535}{\Delta_{I}} \]

\(65535\) comes from \(2^{16} - 1\) as LAS standard defines 16 bits to store intensity

◆ offset

glm::dvec3 LasSyncFileWriter::offset
protected

Offset for coordinates.

\[ X_{coord} = \left( {X_{record} \cdot X_{scale}} \right) + X_{offset} \]

◆ scaleFactor

double LasSyncFileWriter::scaleFactor
protected

Scale factor for coordinates.

\[ X_{coord} = \left( {X_{record} \cdot X_{scale}} \right) + X_{offset} \]

◆ scaleFactorInverse

double LasSyncFileWriter::scaleFactorInverse
protected

Inverse of the scale factor.

\[ \frac{1}{\textrm{scaleFactor}} \]


The documentation for this class was generated from the following file: