OGS
SensorData.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <cstddef>
7#include <string>
8#include <vector>
9
17{
18 OTHER = 0,
22 // please expand if necessary
23};
24
31enum class TimeStepType
32{
33 NONE = 0,
40 DATE, // time series is given as a vector of dates
41 DATETIME // time series is given as a vector of date + time
42};
43
51class SensorData final
52{
53public:
56 explicit SensorData(const std::string& file_name);
57
60 explicit SensorData(std::vector<std::size_t> time_steps);
61
63
67 void addTimeSeries(const std::string& data_name, std::vector<float>* data,
68 const std::string& data_unit_string = "");
69
73 void addTimeSeries(SensorDataType data_name, std::vector<float>* data,
74 const std::string& data_unit_string = "");
75
77 const std::vector<float>* getTimeSeries(
78 SensorDataType time_series_name) const;
79
81 const std::vector<SensorDataType>& getTimeSeriesNames() const
82 {
83 return _vec_names;
84 }
85
87 const std::vector<std::size_t>& getTimeSteps() const { return _time_steps; }
88
90 std::size_t getStartTime() const { return _start; }
91
93 std::size_t getEndTime() const { return _end; }
94
97 std::size_t getStepSize() const { return _step_size; }
98
101
104
106 static std::string convertSensorDataType2String(SensorDataType t);
107
109 static SensorDataType convertString2SensorDataType(const std::string& s);
110
111private:
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};
TimeStepType
Definition SensorData.h:32
SensorDataType
Definition SensorData.h:17
std::size_t getEndTime() const
Returns the last time step.
Definition SensorData.h:93
const std::vector< float > * getTimeSeries(SensorDataType time_series_name) const
Returns the time series with the given name.
const std::vector< std::size_t > & getTimeSteps() const
Returns the time step vector (if it exists)
Definition SensorData.h:87
std::size_t _end
Definition SensorData.h:116
std::size_t getStartTime() const
Returns the first time step.
Definition SensorData.h:90
const std::vector< SensorDataType > & getTimeSeriesNames() const
Returns all time series names contained in this container.
Definition SensorData.h:81
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)
std::size_t getStepSize() const
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="")
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.
TimeStepType getTimeUnit() const
Returns the unit the time steps.
Definition SensorData.h:103
static SensorDataType convertString2SensorDataType(const std::string &s)
Converts Strings to Sensor Data Types.
static std::string convertSensorDataType2String(SensorDataType t)
Converts Sensor Data Types to Strings.
void setTimeUnit(TimeStepType t)
Allows to set a unit for the time steps.
Definition SensorData.h:100