MeteoIODoc 20260620.13b5b0a5
Environmental timeseries pre-processing
Loading...
Searching...
No Matches
IOManager.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2/***********************************************************************************/
3/* Copyright 2009 WSL Institute for Snow and Avalanche Research SLF-DAVOS */
4/***********************************************************************************/
5/* This file is part of MeteoIO.
6 MeteoIO is free software: you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 MeteoIO is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with MeteoIO. If not, see <http://www.gnu.org/licenses/>.
18*/
19#ifndef IOMANAGER_H
20#define IOMANAGER_H
21
27
28#include <map>
29#include <set>
30#include <vector>
31#include <string>
32
33namespace mio {
34
35class TimeSeriesManager;
36class GridsManager;
37class Meteo2DInterpolator;
38
39class IOManager {
40 public:
41 IOManager(const std::string& filename_in);
42 IOManager(const Config& i_cfg);
43
44 //Legacy support to support functionality of the IOInterface superclass:
45 void read2DGrid(Grid2DObject& grid_out, const std::string& options="") {gdm1.read2DGrid(grid_out, options);}
46 void read2DGrid(Grid2DObject& grid_out, const MeteoGrids::Parameters& parameter, const Date& date) {gdm1.read2DGrid(grid_out, parameter, date);}
47 void read3DGrid(Grid3DObject& grid_out, const std::string& options="") {gdm1.read3DGrid(grid_out, options);}
48 void read3DGrid(Grid3DObject& grid_out, const MeteoGrids::Parameters& parameter, const Date& date) {gdm1.read3DGrid(grid_out, parameter, date);}
49 void readDEM(DEMObject& dem_out) {gdm1.readDEM(dem_out);}
50 void readAssimilationData(const Date& date_in, Grid2DObject& da_out) {gdm1.readAssimilationData(date_in, da_out);}
51 void readLanduse(Grid2DObject& landuse_out) {gdm1.readLanduse(landuse_out);}
52 void readGlacier(Grid2DObject& glacier_out) {gdm1.readGlacier(glacier_out);}
53 void readPOI(std::vector<Coords>& pts) {iohandler.readPOI(pts);}
54 void write2DGrid(const Grid2DObject& grid_in, const std::string& options="") {gdm1.write2DGrid(grid_in, options);}
55 void write2DGrid(const Grid2DObject& grid_in, const MeteoGrids::Parameters& parameter, const Date& date) {gdm1.write2DGrid(grid_in, parameter, date);}
56 void write3DGrid(const Grid3DObject& grid_in, const std::string& options="") {gdm1.write3DGrid(grid_in, options);}
57 void write3DGrid(const Grid3DObject& grid_in, const MeteoGrids::Parameters& parameter, const Date& date) {gdm1.write3DGrid(grid_in, parameter, date);}
58 bool list2DGrids(const Date& start, const Date& end, std::map<Date, std::set<size_t> > &list){return iohandler.list2DGrids(start,end,list);}
59 void setOfstreamDefault(const Config& i_cfg);
60 //end legacy support
61
62 size_t getStationData(const Date& date, STATIONS_SET& vecStation);
63
87 size_t getMeteoData(const Date& dateStart, const Date& dateEnd, std::vector< METEO_SET >& vecVecMeteo);
88
110 size_t getMeteoData(const Date& i_date, METEO_SET& vecMeteo);
111
123 void push_meteo_data(const IOUtils::ProcessingLevel& level, const Date& date_start, const Date& date_end,
124 const std::vector< METEO_SET >& vecMeteo) {tsm1.push_meteo_data(level, date_start, date_end, vecMeteo);}
125
150 bool getMeteoData(const Date& date, const DEMObject& dem, const MeteoData::Parameters& meteoparam,
151 Grid2DObject& result);
152
153 bool getMeteoData(const Date& date, const DEMObject& dem, const std::string& param_name,
154 Grid2DObject& result);
155
156 bool getMeteoData(const Date& date, const DEMObject& dem, const MeteoData::Parameters& meteoparam,
157 Grid2DObject& result, std::string& info_string);
158
159 bool getMeteoData(const Date& date, const DEMObject& dem, const std::string& param_name,
160 Grid2DObject& result, std::string& info_string);
161
162 void interpolate(const Date& date, const DEMObject& dem, const MeteoData::Parameters& meteoparam,
163 const std::vector<Coords>& in_coords, std::vector<double>& result);
164
165 void interpolate(const Date& date, const DEMObject& dem, const MeteoData::Parameters& meteoparam,
166 const std::vector<Coords>& in_coords, std::vector<double>& result, std::string& info_string);
167
168 void interpolate(const Date& date, const DEMObject& dem, const MeteoData::Parameters& meteoparam,
169 const std::vector<StationData>& in_stations, std::vector<double>& result, std::string& info_string);
170
183 void setProcessingLevel(const unsigned int& i_level);
184
193 void setMinBufferRequirements(const double& buffer_size, const double& buff_before) {tsm1.setBufferProperties(buffer_size, buff_before);}
194
204 double getAvgSamplingRate() const;
205
206 void writeMeteoData(const std::vector< METEO_SET >& vecMeteo, const std::string& option="") {tsm1.writeMeteoData(vecMeteo, option);}
207
212 const Config& getConfig() const {return cfg;}
213
214 const std::string toString() const;
215
224 void add_to_points_cache(const Date& i_date, const METEO_SET& vecMeteo);
225
229 void clear_cache();
230
231
232 private:
238 static IOUtils::OperationMode getIOManagerTSMode(const Config& i_cfg);
239
245 static IOUtils::OperationMode getIOManagerGridMode(const Config& i_cfg);
246
247 void initVirtualStations();
248 std::vector<METEO_SET> getVirtualStationsData(const DEMObject& dem, const Date& dateStart, const Date& dateEnd);
249 void initIOManager();
250
251 const Config cfg;
252 const IOUtils::OperationMode ts_mode;
253 IOHandler iohandler;
254 TimeSeriesManager tsm1, tsm2;
255 GridsManager gdm1;
256 Meteo2DInterpolator interpolator;
257 DEMObject source_dem;
258 std::vector<size_t> v_params, grids_params;
259 std::vector<StationData> v_stations, v_gridstations;
260 unsigned int vstations_refresh_rate, vstations_refresh_offset;
261 bool write_resampled_grids = false;
262};
263} //end namespace
264#endif
A class that reads a key/value file. These files (typically named *.ini) follow the INI file format s...
Definition Config.h:79
A class to represent DEMs and automatically compute some properties. This class stores elevation grid...
Definition DEMObject.h:40
A class to handle timestamps. This class handles conversion between different time display formats (I...
Definition Date.h:87
A class to represent 2D Grids. Typical application as DEM or Landuse Model.
Definition Grid2DObject.h:42
A class to represent 3D Grids. Typical application: wind field.
Definition Grid3DObject.h:39
Definition GridsManager.h:36
void readAssimilationData(const Date &date_in, Grid2DObject &da_out)
Definition GridsManager.cc:140
void read3DGrid(Grid3DObject &grid_out, const std::string &i_filename="")
Definition GridsManager.h:45
void read2DGrid(Grid2DObject &grid_out, const std::string &option="")
Read the requested grid, according to the configured processing level.
Definition GridsManager.cc:71
void readGlacier(Grid2DObject &landuse_out)
Definition GridsManager.cc:127
void write3DGrid(const Grid3DObject &grid_out, const std::string &options="")
Definition GridsManager.h:55
void write2DGrid(const Grid2DObject &grid_in, const std::string &options="")
Definition GridsManager.h:53
void readDEM(DEMObject &dem_out)
Definition GridsManager.cc:97
void readLanduse(Grid2DObject &landuse_out)
Definition GridsManager.cc:114
This class is the class to use for raw I/O operations. It is responsible for transparently loading th...
Definition IOHandler.h:39
virtual void readPOI(std::vector< Coords > &pts) override
Read a list of points by their grid coordinates This allows for example to get a list of points where...
Definition IOHandler.cc:537
virtual bool list2DGrids(const Date &start, const Date &end, std::map< Date, std::set< size_t > > &list) override
Return the list of grids within a given time period that could be read by the plugin,...
Definition IOHandler.cc:424
Definition IOManager.h:39
void write3DGrid(const Grid3DObject &grid_in, const std::string &options="")
Definition IOManager.h:56
void write3DGrid(const Grid3DObject &grid_in, const MeteoGrids::Parameters &parameter, const Date &date)
Definition IOManager.h:57
double getAvgSamplingRate() const
Returns the average sampling rate in the data. This computes the average sampling rate of the data th...
Definition IOManager.cc:606
void interpolate(const Date &date, const DEMObject &dem, const MeteoData::Parameters &meteoparam, const std::vector< Coords > &in_coords, std::vector< double > &result)
Definition IOManager.cc:586
bool list2DGrids(const Date &start, const Date &end, std::map< Date, std::set< size_t > > &list)
Definition IOManager.h:58
void add_to_points_cache(const Date &i_date, const METEO_SET &vecMeteo)
Add a METEO_SET for a specific instance to the point cache. This is a way to manipulate MeteoData var...
Definition IOManager.cc:611
void setProcessingLevel(const unsigned int &i_level)
Set the desired ProcessingLevel of the IOManager instance The processing level affects the way meteo ...
Definition IOManager.cc:303
void read2DGrid(Grid2DObject &grid_out, const MeteoGrids::Parameters &parameter, const Date &date)
Definition IOManager.h:46
void read2DGrid(Grid2DObject &grid_out, const std::string &options="")
Definition IOManager.h:45
void readDEM(DEMObject &dem_out)
Definition IOManager.h:49
void readLanduse(Grid2DObject &landuse_out)
Definition IOManager.h:51
void setOfstreamDefault(const Config &i_cfg)
Definition IOManager.cc:316
void readAssimilationData(const Date &date_in, Grid2DObject &da_out)
Definition IOManager.h:50
void write2DGrid(const Grid2DObject &grid_in, const MeteoGrids::Parameters &parameter, const Date &date)
Definition IOManager.h:55
size_t getStationData(const Date &date, STATIONS_SET &vecStation)
Definition IOManager.cc:322
void readPOI(std::vector< Coords > &pts)
Definition IOManager.h:53
void clear_cache()
Clear the all cache. All raw, filtered and resampled values are dismissed, will need to be re-read an...
Definition IOManager.cc:309
const std::string toString() const
Definition IOManager.cc:659
const Config & getConfig() const
Returns the internal Config object.
Definition IOManager.h:212
size_t getMeteoData(const Date &dateStart, const Date &dateEnd, std::vector< METEO_SET > &vecVecMeteo)
Fill vecMeteo with a time series of objects corresponding to the interval indicated by dateStart and ...
Definition IOManager.cc:385
void setMinBufferRequirements(const double &buffer_size, const double &buff_before)
Set buffer window properties requirements as known to the application itself. This will compare these...
Definition IOManager.h:193
void write2DGrid(const Grid2DObject &grid_in, const std::string &options="")
Definition IOManager.h:54
void writeMeteoData(const std::vector< METEO_SET > &vecMeteo, const std::string &option="")
Definition IOManager.h:206
void read3DGrid(Grid3DObject &grid_out, const std::string &options="")
Definition IOManager.h:47
void read3DGrid(Grid3DObject &grid_out, const MeteoGrids::Parameters &parameter, const Date &date)
Definition IOManager.h:48
void push_meteo_data(const IOUtils::ProcessingLevel &level, const Date &date_start, const Date &date_end, const std::vector< METEO_SET > &vecMeteo)
Push a vector of time series of MeteoData objects into the IOManager. This overwrites any internal bu...
Definition IOManager.h:123
void readGlacier(Grid2DObject &glacier_out)
Definition IOManager.h:52
A class to spatially interpolate meteo parameters. For more, see Spatial interpolations.
Definition Meteo2DInterpolator.h:100
Parameters
this enum provides indexed access to meteorological fields
Definition MeteoData.h:145
Parameters
this enum provides names for possible meteogrids (from an ARPS file, etc)
Definition MeteoData.h:46
Definition TimeSeriesManager.h:36
void setBufferProperties(const double &buffer_size, const double &buff_before)
Set buffer window properties requirements as known to the application itself.
Definition TimeSeriesManager.cc:76
void writeMeteoData(const std::vector< METEO_SET > &vecMeteo, const std::string &name="")
Definition TimeSeriesManager.cc:344
void push_meteo_data(const IOUtils::ProcessingLevel &level, const Date &date_start, const Date &date_end, const std::vector< MeteoData > &vecMeteo, const bool &invalidate_cache=true)
Push a vector of time series of MeteoData objects into the TimeSeriesManager. This overwrites any int...
Definition TimeSeriesManager.cc:197
Definition getopt.h:65
OperationMode
Keywords for mode of operation. Please keep all the GRID_xxx last!
Definition IOUtils.h:63
ProcessingLevel
Definition IOUtils.h:54
Definition Config.cc:34
std::vector< MeteoData > METEO_SET
Definition MeteoData.h:32
std::vector< StationData > STATIONS_SET
Definition StationData.h:144