MeteoIODoc  MeteoIODoc-2.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ResamplingAlgorithms.h
Go to the documentation of this file.
1 /***********************************************************************************/
2 /* Copyright 2009 WSL Institute for Snow and Avalanche Research SLF-DAVOS */
3 /***********************************************************************************/
4 /* This file is part of MeteoIO.
5  MeteoIO is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  MeteoIO is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with MeteoIO. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef RESAMPLINGALGORITHMS_H
19 #define RESAMPLINGALGORITHMS_H
20 
22 
23 #include <string>
24 #include <vector>
25 
26 #ifdef _MSC_VER
27  #pragma warning(disable:4512) //we don't need any = operator!
28 #endif
29 
30 namespace mio {
89 
90  public:
97  };
98 
99  ResamplingAlgorithms(const std::string& i_algoname, const std::string& i_parname, const double& dflt_window_size, const std::vector<std::string>& /*vecArgs*/)
100  : algo(i_algoname), parname(i_parname), window_size(dflt_window_size) {}
101 
103 
104  const std::string getAlgo() const {return algo;}
105 
106  virtual void resample(const size_t& index, const ResamplingPosition& position, const size_t& paramindex,
107  const std::vector<MeteoData>& vecM, MeteoData& md) = 0;
108 
109  virtual std::string toString() const = 0;
110 
111  protected:
112  static double partialAccumulateAtLeft(const std::vector<MeteoData>& vecM, const size_t& paramindex,
113  const size_t& pos, const Date& curr_date);
114  static double partialAccumulateAtRight(const std::vector<MeteoData>& vecM, const size_t& paramindex,
115  const size_t& pos, const Date& curr_date);
116  static void getNearestValidPts(const size_t& pos, const size_t& paramindex, const std::vector<MeteoData>& vecM, const Date& resampling_date,
117  const double& window_size, size_t& indexP1, size_t& indexP2);
118  static double linearInterpolation(const double& x1, const double& y1,
119  const double& x2, const double& y2, const double& x3);
120  static Date getDailyStart(const Date& resampling_date);
121  static size_t getDailyValue(const std::vector<MeteoData>& vecM, const size_t& paramindex, size_t pos, const Date& intervalStart, const Date& intervalEnd);
122 
123  const std::string algo, parname;
124  double window_size;
125  static const double soil_albedo, snow_albedo, snow_thresh;
126 };
127 
129  public:
130  static ResamplingAlgorithms* getAlgorithm(const std::string& i_algoname, const std::string& parname, const double& window_size, const std::vector<std::string>& vecArgs);
131 };
132 
133 } //end namespace
134 #endif
Definition: ResamplingAlgorithms.h:93
Definition: ResamplingAlgorithms.h:96
virtual std::string toString() const =0
static double partialAccumulateAtRight(const std::vector< MeteoData > &vecM, const size_t &paramindex, const size_t &pos, const Date &curr_date)
Definition: ResamplingAlgorithms.cc:77
static double linearInterpolation(const double &x1, const double &y1, const double &x2, const double &y2, const double &x3)
This function solves the equation y = ax + b for two given points and returns y for a given x...
Definition: ResamplingAlgorithms.cc:141
static const double snow_thresh
These thresholds are used to handle solar radiation.
Definition: ResamplingAlgorithms.h:125
double window_size
Definition: ResamplingAlgorithms.h:124
static Date getDailyStart(const Date &resampling_date)
For a given date, find the start of the day, considering that for midnight we return the day before! ...
Definition: ResamplingAlgorithms.cc:158
Definition: ResamplingAlgorithms.h:128
virtual ~ResamplingAlgorithms()
Definition: ResamplingAlgorithms.h:102
static size_t getDailyValue(const std::vector< MeteoData > &vecM, const size_t &paramindex, size_t pos, const Date &intervalStart, const Date &intervalEnd)
Find a unique value in a given time interval. This is useful for retrieving a unique daily average...
Definition: ResamplingAlgorithms.cc:178
static ResamplingAlgorithms * getAlgorithm(const std::string &i_algoname, const std::string &parname, const double &window_size, const std::vector< std::string > &vecArgs)
Definition: ResamplingAlgorithms.cc:30
static const double soil_albedo
grass albedo
Definition: ResamplingAlgorithms.h:125
Definition: ResamplingAlgorithms.h:92
const std::string parname
Definition: ResamplingAlgorithms.h:123
Definition: ResamplingAlgorithms.h:95
virtual void resample(const size_t &index, const ResamplingPosition &position, const size_t &paramindex, const std::vector< MeteoData > &vecM, MeteoData &md)=0
Interface class for the temporal resampling algorithms These models generate data points that are mis...
Definition: ResamplingAlgorithms.h:88
Definition: ResamplingAlgorithms.h:94
A class to handle timestamps. This class handles conversion between different time display formats (I...
Definition: Date.h:79
ResamplingPosition
Definition: ResamplingAlgorithms.h:91
static void getNearestValidPts(const size_t &pos, const size_t &paramindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &window_size, size_t &indexP1, size_t &indexP2)
This function returns the last and next valid points around a given position.
Definition: ResamplingAlgorithms.cc:106
static double partialAccumulateAtLeft(const std::vector< MeteoData > &vecM, const size_t &paramindex, const size_t &pos, const Date &curr_date)
Definition: ResamplingAlgorithms.cc:58
A class to represent a singular measurement received from one station at a certain time (represented ...
Definition: MeteoData.h:101
static const double snow_albedo
snow albedo
Definition: ResamplingAlgorithms.h:125
const std::string algo
Definition: ResamplingAlgorithms.h:123
ResamplingAlgorithms(const std::string &i_algoname, const std::string &i_parname, const double &dflt_window_size, const std::vector< std::string > &)
Definition: ResamplingAlgorithms.h:99
const std::string getAlgo() const
Definition: ResamplingAlgorithms.h:104