Applies a min/max filter if a second parameter matches a comparison.
This is a min/max filter that only takes action if a different parameter holds true to a condition. The synopsis is the same as for the MIN_MAX
filter, but you can (have to) provide a second parameter with the PARAMETER
keyword, the comparison operation with OPERATOR
and the value to compare against with COMPARE
.
Arguments:
PARAMETER
: The parameter that has to hold true to a comparisonOPERATOR
: Comparison operator (LT
, LE
, GT
, GE
, EQ
, NE
)COMPARE
: Value to compare againstSOFT
: If true, values are not filtered to nodata but to the filter limits or the reset valuesMIN
: Minimum value for the min/max filterMAX
: Maximum value for the min/max filterMIN_RESET
: Vales lower than MIN
are not filtered to MIN
but to thisMAX_RESET
: Values greater than MAX
are not filtered to MAX
but to thisRESET
: Values filtered if neither MIN
nor MAX
are supplied are not filtered to nodata, but to thisIGNORE_MISSING
: Skip over access errors if PARAMETER
is an extra parameter and not presentThe OPERATOR
can be LT
(less than), LE
(less than or equal), GT
(greater than), GE
(greater equal), EQ
(equal) or NE
(not equal).
For example, to filter snow surface temperatures above zero to zero if there is enough snow (30cm) you could write:
If neither OPERATOR
nor COMPARE
are supplied, it defaults to EQ
and nodata
. Furthermore, if neither a MIN
nor a MAX
value are provided, it is always filtered to nodata
(or the RESET
value). Thus, to filter all wind directions if no wind speed is available it's enough to write:
#include <FilterMinMaxConditional.h>
Public Member Functions | |
FilterMinMaxConditional (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg) | |
virtual void | process (const unsigned int ¶m, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec) |
Public Member Functions inherited from mio::ProcessingBlock | |
virtual | ~ProcessingBlock () |
virtual void | process (const unsigned int ¶m, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0 |
virtual void | process (Date &dateStart, Date &dateEnd) |
std::string | getName () const |
const ProcessingProperties & | getProperties () const |
const std::string | toString () const |
bool | skipStation (const std::string &station_id) const |
Should the provided station be skipped in the processing? More... | |
bool | noStationsRestrictions () const |
const std::vector< DateRange > | getTimeRestrictions () const |
bool | skipHeight (const double &height) const |
Should the provided height be skipped in the processing? More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from mio::ProcessingBlock | |
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y) |
Read a data file structured as X Y value on each lines. More... | |
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2) |
Read a data file structured as X Y1 Y2 value on each lines. More... | |
static std::vector< double > | readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init) |
Read a correction file applicable to repeating time period. More... | |
static std::vector< offset_spec > | readCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2) |
Read a correction file, ie a file structured as timestamps followed by values on each lines. More... | |
static std::map< std::string, std::vector< DateRange > > | readDates (const std::string &filter, const std::string &filename, const double &TZ) |
Read a list of date ranges by stationIDs from a file. More... | |
Static Public Attributes inherited from mio::ProcessingBlock | |
static const double | default_height |
Protected Member Functions inherited from mio::ProcessingBlock | |
ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg) | |
protected constructor only to be called by children More... | |
Static Protected Member Functions inherited from mio::ProcessingBlock | |
static void | extract_dbl_vector (const unsigned int ¶m, const std::vector< MeteoData > &ivec, std::vector< double > &ovec) |
static void | extract_dbl_vector (const unsigned int ¶m, const std::vector< const MeteoData * > &ivec, std::vector< double > &ovec) |
Protected Attributes inherited from mio::ProcessingBlock | |
const std::set< std::string > | excluded_stations |
const std::set< std::string > | kept_stations |
const std::vector< DateRange > | time_restrictions |
std::set< double > | included_heights |
std::set< double > | excluded_heights |
bool | all_heights |
ProcessingProperties | properties |
const std::string | block_name |
Static Protected Attributes inherited from mio::ProcessingBlock | |
static const double | soil_albedo = .23 |
static const double | snow_albedo = .85 |
static const double | snow_thresh = .1 |
parametrize the albedo from HS More... | |
mio::FilterMinMaxConditional::FilterMinMaxConditional | ( | const std::vector< std::pair< std::string, std::string > > & | vecArgs, |
const std::string & | name, | ||
const Config & | cfg | ||
) |
|
virtual |
Implements mio::ProcessingBlock.