OGS
SensorData.h
Go to the documentation of this file.
1 
15 #pragma once
16 
17 #include <cstddef>
18 #include <string>
19 #include <vector>
20 
27 enum class SensorDataType
28 {
29  OTHER = 0,
33  // please expand if necessary
34 };
35 
42 enum class TimeStepType
43 {
44  NONE = 0,
45  SECONDS,
46  MINUTES,
47  DAYS,
48  WEEKS,
49  MONTHS,
50  YEARS,
51  DATE, // time series is given as a vector of dates
52  DATETIME // time series is given as a vector of date + time
53 };
54 
61 class SensorData final
62 {
63 public:
65  explicit SensorData(const std::string& file_name);
66 
68  explicit SensorData(std::vector<std::size_t> time_steps);
69 
70  ~SensorData();
71 
75  void addTimeSeries( const std::string &data_name, std::vector<float> *data, const std::string &data_unit_string = "" );
76 
79  void addTimeSeries( SensorDataType data_name, std::vector<float> *data, const std::string &data_unit_string = "" );
80 
82  const std::vector<float>* getTimeSeries(SensorDataType time_series_name) const;
83 
85  const std::vector<SensorDataType>& getTimeSeriesNames() const { return _vec_names; }
86 
88  const std::vector<std::size_t>& getTimeSteps() const { return _time_steps; }
89 
91  std::size_t getStartTime() const { return _start; }
92 
94  std::size_t getEndTime() const { return _end; }
95 
97  std::size_t getStepSize() const { return _step_size; }
98 
101 
103  TimeStepType getTimeUnit() const { return _time_unit; }
104 
106  static std::string convertSensorDataType2String(SensorDataType t);
107 
109  static SensorDataType convertString2SensorDataType(const std::string &s);
110 
111 private:
113  int readDataFromFile(const std::string &file_name);
114 
115  std::size_t _start;
116  std::size_t _end;
117  std::size_t _step_size;
119  std::vector<std::string> _data_unit_string;
120  std::vector<std::size_t> _time_steps;
121  std::vector<SensorDataType> _vec_names;
122  std::vector< std::vector<float>* > _data_vecs;
123 
124 };
TimeStepType
Definition: SensorData.h:43
SensorDataType
Definition: SensorData.h:28
A container for sensor data at an observation site. The class stores a number of time series and has ...
Definition: SensorData.h:62
const std::vector< SensorDataType > & getTimeSeriesNames() const
Returns all time series names contained in this container.
Definition: SensorData.h:85
std::size_t getEndTime() const
Returns the last time step.
Definition: SensorData.h:94
const std::vector< float > * getTimeSeries(SensorDataType time_series_name) const
Returns the time series with the given name.
Definition: SensorData.cpp:91
std::size_t _end
Definition: SensorData.h:116
std::size_t getStartTime() const
Returns the first time step.
Definition: SensorData.h:91
std::vector< SensorDataType > _vec_names
Definition: SensorData.h:121
std::vector< std::vector< float > * > _data_vecs
Definition: SensorData.h:122
TimeStepType _time_unit
Definition: SensorData.h:118
SensorData(const std::string &file_name)
Constructor using file name (automatically reads the file and fills all data structures)
Definition: SensorData.cpp:24
std::size_t getStepSize() const
Returns the interval between time steps (Returns "0" if a vector is given!)
Definition: SensorData.h:97
std::size_t _start
Definition: SensorData.h:115
std::vector< std::string > _data_unit_string
Definition: SensorData.h:119
std::vector< std::size_t > _time_steps
Definition: SensorData.h:120
void addTimeSeries(const std::string &data_name, std::vector< float > *data, const std::string &data_unit_string="")
Definition: SensorData.cpp:52
std::size_t _step_size
Definition: SensorData.h:117
int readDataFromFile(const std::string &file_name)
Reads a CSV-file with time series data and fills the container.
Definition: SensorData.cpp:106
TimeStepType getTimeUnit() const
Returns the unit the time steps.
Definition: SensorData.h:103
const std::vector< std::size_t > & getTimeSteps() const
Returns the time step vector (if it exists)
Definition: SensorData.h:88
static SensorDataType convertString2SensorDataType(const std::string &s)
Converts Strings to Sensor Data Types.
Definition: SensorData.cpp:189
static std::string convertSensorDataType2String(SensorDataType t)
Converts Sensor Data Types to Strings.
Definition: SensorData.cpp:171
void setTimeUnit(TimeStepType t)
Allows to set a unit for the time steps.
Definition: SensorData.h:100