Accumulation over a user given period.
The input data is accumulated over a given time interval (given as filter argument, in seconds). This is for example needed for converting rain gauges measurements read every 10 minutes to hourly precipitation measurements. It takes the following arguments:
- PERIOD: the accumulation period in seconds (mandatory);
- STRICT: if setting the argument "strict" to "true", nodatas will propagate (ie. a single nodata in the input will force the re-accumulated value to be nodata). By default, all valid values are aggregated and only pure nodata intervals produce a nodata in the output.
PSUM::resample = accumulate
PSUM::accumulate::period = 3600
|
| | Accumulate (const std::string &i_algoname, const std::string &i_parname, const double &dflt_max_gap_size, const std::vector< std::pair< std::string, std::string > > &vecArgs, const Config &cfg) |
| |
| bool | resample (const std::string &stationHash, const size_t &index, const ResamplingPosition &position, const size_t ¶mindex, const std::vector< MeteoData > &vecM, MeteoData &md, const gap_info &gap, const bool &exactMatch) override |
| |
| std::string | toString () const override |
| |
| | ResamplingAlgorithms (const std::string &i_algoname, const std::string &i_parname, const double &dflt_max_gap_size, const std::vector< std::pair< std::string, std::string > > &) |
| |
| virtual | ~ResamplingAlgorithms () |
| |
| gap_info | findGap (const std::string &stationHash, const size_t &pos, const size_t ¶mindex, const std::vector< MeteoData > &vecM, const Date &resampling_date, const double &i_max_gap_size) |
| | Find a data gap around a given position.
|
| |
| void | resetResampling () |
| |
| const std::string | getAlgo () const |
| |
| double | getMaxGapSize () const |
| |
|
| enum | ResamplingPosition { hasTimestamp
, inGap
, begin
, end
} |
| |
| using | gap_info = GapInfo |
| |
| static double | partialAccumulateAtLeft (const std::vector< MeteoData > &vecM, const size_t ¶mindex, const size_t &pos, const Date &curr_date) |
| |
For algorithms that support extrapolations, this could be set to true in the ini file
|
| |
| 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.
|
| |
| 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)
|
| |
| 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.
|
| |
| bool | allowExtrapolate = false |
| |
| const std::string | algo |
| |
| const std::string | parname |
| |
| double | max_gap_size |
| | Maximum extend of a data gap over which to interpolate.
|
| |