19#ifndef DATAEDITINGALGS_H
20#define DATAEDITINGALGS_H
36 EditingBlock(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
46 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo) {(void)vecMeteo;}
60 virtual std::set<std::string>
requiredIDs()
const {
return std::set<std::string>();}
66 virtual std::set<std::string>
providedIDs()
const {
return std::set<std::string>();}
78 static std::set<std::string>
initStationSet(
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& keyword);
79 bool skipStation(
const std::vector<MeteoData>& vecMeteo)
const;
104 EditingSwap(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
106 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
109 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
110 std::string dest_param, src_param;
140 EditingRename(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
142 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
145 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
146 std::set< std::string > src_params;
147 std::string dest_param;
171 EditingExclude(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
173 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
176 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
177 void processStation(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx,
const std::set< std::string >& params)
const;
178 std::set< std::string > exclude_params;
202 EditingKeep(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
204 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
205 static void processStation(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx,
const std::set< std::string >& params);
208 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
209 std::set< std::string > keep_params;
264 EditingCombine(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
266 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
268 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
269 void processFIRST(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx)
const;
270 void processMIN(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx)
const;
271 void processAVG(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx)
const;
272 void processMAX(
METEO_SET& vecMeteo,
const size_t& startIdx,
const size_t& endIdx)
const;
273 std::vector< std::string > merged_params;
274 std::string dest_param;
330 EditingMerge(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
332 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
335 std::set<std::string>
requiredIDs()
const override;
337 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
338 std::vector< std::string > merged_stations;
339 std::set< std::string > merged_params;
341 MeteoData::MERGE_CONFLICTS merge_conflicts;
363 EditingAutoMerge(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
365 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
369 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
370 static void mergeStations(
const size_t& toStationIdx,
STATIONS_SET& vecStation);
371 void mergeMeteo(
const size_t& toStationIdx, std::vector<METEO_SET>& vecMeteo)
const;
373 MeteoData::MERGE_CONFLICTS merge_conflicts;
396 EditingCopy(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
398 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
401 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
402 std::string dest_param, src_param;
437 EditingCreate(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
439 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
442 static const std::vector< std::pair<std::string, std::string> > cleanGeneratorArgs(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
443 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
446 const std::vector< std::pair<std::string, std::string> > vecArgs_copy;
447 std::string algorithm, dest_param;
490 EditingMetadata(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
492 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
495 std::set<std::string>
providedIDs()
const override;
498 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
499 void mergeMigratedData(std::vector<METEO_SET>& vecMeteo,
const std::vector<METEO_SET>& vecTmp)
const;
501 std::string new_name, new_id;
502 double lat, lon, alt, slope, azi;
551 EditingRegFill(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
553 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
556 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
558 std::vector< std::string > source_stations;
559 std::set< std::string > params_to_merge;
561 bool print_regression_info;
596 EditingMove(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
598 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
601 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
602 std::set<std::string> dest_stations;
603 std::set< std::string > params_to_move;
605 std::vector<MeteoData> createFullTimeSeries(
const std::vector<MeteoData>& source,
const std::vector<MeteoData>& dest)
const;
606 bool isDestination(
const std::string&
stationID)
const;
609 bool station_wildcard;
645 EditingSplit(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
647 virtual void editTimeSeries(std::vector<METEO_SET>& vecMeteo)
override;
650 void parse_args(
const std::vector< std::pair<std::string, std::string> >& vecArgs);
651 std::string dest_station_id;
652 std::set< std::string > params_to_move;
654 std::vector<MeteoData> splitTimeSeries(std::vector<MeteoData>& source);
659 static EditingBlock*
getBlock(
const std::string& i_stationID,
const std::vector< std::pair<std::string, std::string> >& vecArgs,
const std::string& name,
const Config &cfg);
A class that reads a key/value file. These files (typically named *.ini) follow the INI file format s...
Definition Config.h:79
AUTOMERGE input editing command.
Definition DataEditingAlgorithms.h:361
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:488
Definition DataEditingAlgorithms.h:657
static EditingBlock * getBlock(const std::string &i_stationID, const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg)
Definition DataEditingAlgorithms.cc:136
Base class for DataEditing algorithms.
Definition DataEditingAlgorithms.h:34
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo)
Apply this editing block.
Definition DataEditingAlgorithms.h:46
std::string getName() const
Definition DataEditingAlgorithms.h:77
virtual ~EditingBlock()
Definition DataEditingAlgorithms.h:38
const std::vector< DateRange > time_restrictions
Definition DataEditingAlgorithms.h:83
virtual std::set< std::string > requiredIDs() const
Get the station IDs this editing block depends on for this station.
Definition DataEditingAlgorithms.h:60
const std::set< std::string > kept_stations
Definition DataEditingAlgorithms.h:82
const std::string toString() const
Definition DataEditingAlgorithms.cc:129
METEO_SET timeFilterFromStation(const METEO_SET &vecMeteo) const
Prepare a station that will be merged in case of time restrictions.
Definition DataEditingAlgorithms.cc:179
const std::string stationID
Definition DataEditingAlgorithms.h:84
bool skipStation(const std::vector< MeteoData > &vecMeteo) const
Return true if this station ID should be skipped.
Definition DataEditingAlgorithms.cc:117
const std::string block_name
Definition DataEditingAlgorithms.h:84
virtual void editTimeSeries(STATIONS_SET &vecStation)
Apply this editing block to the StationData.
Definition DataEditingAlgorithms.h:54
static std::set< std::string > initStationSet(const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &keyword)
Definition DataEditingAlgorithms.cc:92
const std::set< std::string > excluded_stations
Definition DataEditingAlgorithms.h:82
virtual std::set< std::string > purgeIDs() const
Get the station IDs to purge after using them for this station ID.
Definition DataEditingAlgorithms.h:72
virtual std::set< std::string > providedIDs() const
Get the station IDs this editing block provides based on this station.
Definition DataEditingAlgorithms.h:66
COMBINE input editing command.
Definition DataEditingAlgorithms.h:255
CombineType
Definition DataEditingAlgorithms.h:257
@ AVG
take the average of all valid data
Definition DataEditingAlgorithms.h:260
@ FIRST
take the first valid data
Definition DataEditingAlgorithms.h:258
@ MAX
take the MAX of all valid data
Definition DataEditingAlgorithms.h:261
@ MIN
take the MIN of all valid data
Definition DataEditingAlgorithms.h:259
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:658
COPY input editing command.
Definition DataEditingAlgorithms.h:394
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:816
CREATE input editing command.
Definition DataEditingAlgorithms.h:435
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:873
EXCLUDE input editing command.
Definition DataEditingAlgorithms.h:169
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:339
KEEP input editing command.
Definition DataEditingAlgorithms.h:200
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:395
static void processStation(METEO_SET &vecMeteo, const size_t &startIdx, const size_t &endIdx, const std::set< std::string > ¶ms)
Definition DataEditingAlgorithms.cc:377
MERGE input editing command.
Definition DataEditingAlgorithms.h:328
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:740
std::set< std::string > requiredIDs() const override
Get the station IDs this editing block depends on for this station.
Definition DataEditingAlgorithms.cc:781
MOVE input editing command.
Definition DataEditingAlgorithms.h:592
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:1355
RegFill input editing command.
Definition DataEditingAlgorithms.h:542
RegressionType
Definition DataEditingAlgorithms.h:544
@ QUADRATIC
Definition DataEditingAlgorithms.h:546
@ CUBIC
Definition DataEditingAlgorithms.h:547
@ LINEAR
Definition DataEditingAlgorithms.h:545
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:1092
RENAME input editing command.
Definition DataEditingAlgorithms.h:138
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:274
Split input editing command.
Definition DataEditingAlgorithms.h:641
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:1497
SWAP input editing command.
Definition DataEditingAlgorithms.h:102
virtual void editTimeSeries(std::vector< METEO_SET > &vecMeteo) override
Apply this editing block.
Definition DataEditingAlgorithms.cc:223
Merge_Type
Available MeteoData merging strategies. When the two stations both have data at a given time step,...
Definition MeteoData.h:126
std::vector< MeteoData > METEO_SET
Definition MeteoData.h:32
std::vector< StationData > STATIONS_SET
Definition StationData.h:144