Helios++
Helios software for LiDAR simulations
VectorialMeasurementWriter.h
1 #pragma once
2 
3 #include <util/HeliosException.h>
4 #include <filems/write/core/BaseMeasurementWriter.h>
5 #include <filems/factory/SyncFileMeasurementWriterFactory.h>
6 
7 #include <string>
8 #include <memory>
9 
10 namespace helios { namespace filems{
11 
12 using std::string;
13 using std::shared_ptr;
14 using std::vector;
15 
22  public BaseMeasurementWriter<vector<Measurement> const&, glm::dvec3 const&>
23 {
24 protected:
25  // *** USING *** //
26  // *************** //
28  vector<Measurement> const&, glm::dvec3 const&
29  >::scanner;
31  vector<Measurement> const&, glm::dvec3 const&
32  >::shift;
34  vector<Measurement> const&, glm::dvec3 const&
35  >::writers;
36 
37 public:
38  // *** CONSTRUCTION / DESTRUCTION *** //
39  // ************************************ //
44  BaseMeasurementWriter<vector<Measurement> const&, glm::dvec3 const&>()
45  {}
46  virtual ~VectorialMeasurementWriter() = default;
47 
48  // *** M E T H O D S *** //
49  // ************************* //
54  void writeMeasurements(vector<Measurement> const &measurements);
61  vector<Measurement> const &measurements
62  ) const{sfw->write(measurements, shift);}
67  shared_ptr<
68  SyncFileWriter<vector<Measurement> const &, glm::dvec3 const &>
70  WriterType const &type,
71  string const &path,
72  bool const zipOutput,
73  double const lasScale,
74  glm::dvec3 shift,
75  double const minIntensity,
76  double const deltaIntensity
77  ) const override{
79  type, // Writer type
80  path, // Output path
81  zipOutput, // Zip flag
82  lasScale, // Scale factor
83  shift, // Offset
84  0.0, // Min intensity
85  1000000.0 // Delta intensity
86  );
87  }
88 };
89 
90 }}
Class representing a measurement.
Definition: Measurement.h:13
Class to handle writing of measurements to generate HELIOS++ output virtual point clouds....
Definition: BaseMeasurementWriter.h:31
glm::dvec3 shift
The pointer to the shift vector to be applied to measurements.
Definition: BaseMeasurementWriter.h:54
shared_ptr< Scanner > scanner
The scanner that generates the measurements to be written.
Definition: BaseMeasurementWriter.h:49
unordered_map< string, shared_ptr< SyncFileWriter< WriteArgs ... > > > writers
Map of writers. This map allows to reuse writers for legs grouped in the same strip.
Definition: BaseMeasurementWriter.h:60
shared_ptr< SyncFileWriter< WriteArgs ... > > sfw
Synchronous file writer.
Definition: HeliosWriter.h:33
double lasScale
Scale factor specification to be used when LAS output format specified.
Definition: HeliosWriter.h:56
bool zipOutput
Flag specifying if detector output must be zipped (true) or not (false)
Definition: HeliosWriter.h:50
static shared_ptr< SyncFileWriter< vector< Measurement > const &, glm::dvec3 const & >> makeVectorialWriter(WriterType const type, const string &path, bool const compress=false, double const scaleFactor=0.0001, glm::dvec3 const offset=glm::dvec3(0, 0, 0), double const minIntensity=0.0, double const deltaIntensity=1000000.0)
Synchronous vectorial file writer factory.
Definition: SyncFileMeasurementWriterFactory.h:138
Abstract class defining common behavior for all synchronous file writers.
Definition: SyncFileWriter.h:18
Common implementation for any vectorial measurement writer.
Definition: VectorialMeasurementWriter.h:23
void writeMeasurementsUnsafe(vector< Measurement > const &measurements) const
Like filems::VectorialMeasurementWriter::writeMeasurements but faster because there is no validation.
Definition: VectorialMeasurementWriter.h:60
VectorialMeasurementWriter()
Default constructor for vectorial measurement writer.
Definition: VectorialMeasurementWriter.h:43
void writeMeasurements(vector< Measurement > const &measurements)
Write a vector of measurements.
Definition: VectorialMeasurementWriter.cpp:12
shared_ptr< SyncFileWriter< vector< Measurement > const &, glm::dvec3 const & > > makeWriter(WriterType const &type, string const &path, bool const zipOutput, double const lasScale, glm::dvec3 shift, double const minIntensity, double const deltaIntensity) const override
Make a vectorial measurement SyncFileWriter.
Definition: VectorialMeasurementWriter.h:69