MeteoIODoc 20241221.207bde49
mio::FilterMinMaxConditional Class Reference

Detailed Description

Applies a min/max filter if a second parameter matches a comparison.

Author
Michael Reisecker
Date
2019-04-03

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 comparison
  • OPERATOR: Comparison operator (LT, LE, GT, GE, EQ, NE)
  • COMPARE: Value to compare against
  • SOFT: If true, values are not filtered to nodata but to the filter limits or the reset values
  • MIN: Minimum value for the min/max filter
  • MAX: Maximum value for the min/max filter
  • MIN_RESET: Vales lower than MIN are not filtered to MIN but to this
  • MAX_RESET: Values greater than MAX are not filtered to MAX but to this
  • RESET: Values filtered if neither MIN nor MAX are supplied are not filtered to nodata, but to this
  • IGNORE_MISSING: Skip over access errors if PARAMETER is an extra parameter and not present

The 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:

TSS::FILTER1 = MIN_MAX_CONDITIONAL
TSS::ARG1::PARAMETER = HS
TSS::ARG1::OPERATOR = GT
TSS::ARG1::COMPARE = 0.3
TSS::ARG1::MAX = 273.15
TSS::ARG1::SOFT = TRUE

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:

DW::FILTER1 = MIN_MAX_CONDITIONAL
DW::FILTER1::PARAMETER = VW

#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 &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)
 
- Public Member Functions inherited from mio::ProcessingBlock
virtual ~ProcessingBlock ()
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0
 
virtual void process (Date &dateStart, Date &dateEnd)
 
std::string getName () const
 
const ProcessingPropertiesgetProperties () 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< DateRangegetTimeRestrictions () 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_specreadCorrections (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 &param, const std::vector< MeteoData > &ivec, std::vector< double > &ovec)
 
static void extract_dbl_vector (const unsigned int &param, 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< DateRangetime_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...
 

Constructor & Destructor Documentation

◆ FilterMinMaxConditional()

mio::FilterMinMaxConditional::FilterMinMaxConditional ( const std::vector< std::pair< std::string, std::string > > &  vecArgs,
const std::string &  name,
const Config cfg 
)

Member Function Documentation

◆ process()

void mio::FilterMinMaxConditional::process ( const unsigned int &  param,
const std::vector< MeteoData > &  ivec,
std::vector< MeteoData > &  ovec 
)
virtual

Implements mio::ProcessingBlock.


The documentation for this class was generated from the following files: