Interface class for the temporal resampling algorithms.
These models generate data points that are missing based on neighbouring points in a time series.
#include <ResamplingAlgorithms.h>
Public Types | |
enum | ResamplingPosition { exact_match , before , after , begin , end } |
Public Member Functions | |
ResamplingAlgorithms (const std::string &i_algoname, const std::string &i_parname, const double &dflt_window_size, const std::vector< std::pair< std::string, std::string > > &) | |
virtual | ~ResamplingAlgorithms () |
const std::string | getAlgo () const |
virtual void | resample (const std::string &stationHash, const size_t &index, const ResamplingPosition &position, const size_t ¶mindex, const std::vector< MeteoData > &vecM, MeteoData &md)=0 |
void | resetResampling () |
virtual std::string | toString () const =0 |
Static Public Member Functions | |
static size_t | searchBackward (gap_info &last_gap, const size_t &pos, const size_t ¶mindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &i_window_size) |
static size_t | searchForward (gap_info &last_gap, const size_t &pos, const size_t ¶mindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &i_window_size, const size_t &indexP1) |
static gap_info | findGap (const size_t &pos, const size_t ¶mindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &i_window_size) |
Protected Member Functions | |
void | getNearestValidPts (const std::string &stationHash, const size_t &pos, const size_t ¶mindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &i_window_size, size_t &indexP1, size_t &indexP2) |
This function returns the last and next valid points around a given position. More... | |
Static Protected Member Functions | |
static double | partialAccumulateAtLeft (const std::vector< MeteoData > &vecM, const size_t ¶mindex, const size_t &pos, const Date &curr_date) |
static double | partialAccumulateAtRight (const std::vector< MeteoData > &vecM, const size_t ¶mindex, const size_t &pos, const Date &curr_date) |
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. More... | |
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! (as is necessary for daily averages, sums, etc that can be provided at midnight for the day before) More... | |
static size_t | getDailyValue (const std::vector< MeteoData > &vecM, const size_t ¶mindex, 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, daily sum, etc. More... | |
Protected Attributes | |
const std::string | algo |
const std::string | parname |
double | window_size |
Static Protected Attributes | |
static const double | soil_albedo = .23 |
grass albedo More... | |
static const double | snow_albedo = .85 |
snow albedo More... | |
static const double | snow_thresh = .1 |
These thresholds are used to handle solar radiation. More... | |
|
inline |
|
inlinevirtual |
|
static |
|
inline |
For a given date, find the start of the day, considering that for midnight we return the day before! (as is necessary for daily averages, sums, etc that can be provided at midnight for the day before)
resampling_date | current date |
|
staticprotected |
Find a unique value in a given time interval. This is useful for retrieving a unique daily average, daily sum, etc.
vecM | meteo data time series for the station |
paramindex | index of the meteo parameter to process |
pos | index of the current time step |
intervalStart | start of the interval within which we will look for a valid value (often, start of the day) |
intervalEnd | end of the interval within which we will look for a valid value (often, end of the day) |
|
protected |
This function returns the last and next valid points around a given position.
stationHash | hash used to uniquely identify timeseries (so we can cache some data per timeseries) |
pos | current position (index) |
paramindex | meteo parameter to use |
vecM | vector of MeteoData |
resampling_date | date to resample |
i_window_size | size of the search window |
indexP1 | index of point before the current position (IOUtils::npos if none could be found) |
indexP2 | index of point after the current position (IOUtils::npos if none could be found) |
|
staticprotected |
This function solves the equation y = ax + b for two given points and returns y for a given x.
x1 | x-coordinate of first point |
y1 | y-coordinate of first point |
x2 | x-coordinate of second point |
y2 | y-coordinate of second point |
x | x-coordinate of desired point |
|
staticprotected |
|
staticprotected |
|
pure virtual |
|
inline |
|
static |
|
static |
|
pure virtual |
|
protected |
|
protected |
|
staticprotected |
snow albedo
|
staticprotected |
These thresholds are used to handle solar radiation.
if snow height greater than this threshold -> snow albedo
|
staticprotected |
grass albedo
|
protected |