MeteoIODoc 20260620.13b5b0a5
Environmental timeseries pre-processing
Loading...
Searching...
No Matches
GridsManager.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 GRIDSMANAGER_H
20#define GRIDSMANAGER_H
21
22#include <meteoio/Config.h>
24#include <meteoio/IOHandler.h>
27
28#include <set>
29#include <map>
30#include <vector>
31#include <utility>
32#include <string>
33
34namespace mio {
35
37 public:
38 GridsManager(IOHandler& in_iohandler, const Config& in_cfg);
39
40 //Legacy support to support functionality of the IOInterface superclass:
41 void read2DGrid(Grid2DObject& grid_out, const std::string& option="");
42 void read2DGrid(Grid2DObject& grid_out, const MeteoGrids::Parameters& parameter, const Date& date, const bool& enable_grid_resampling=true);
43
44 //HACK buffer 3D grids!
45 void read3DGrid(Grid3DObject& grid_out, const std::string& i_filename="") {iohandler.read3DGrid(grid_out, i_filename);}
46 void read3DGrid(Grid3DObject& grid_out, const MeteoGrids::Parameters& parameter, const Date& date) {iohandler.read3DGrid(grid_out, parameter, date);}
47
48 void readDEM(DEMObject& dem_out);
49 void readAssimilationData(const Date& date_in, Grid2DObject& da_out);
50 void readLanduse(Grid2DObject& landuse_out);
51 void readGlacier(Grid2DObject& landuse_out);
52
53 void write2DGrid(const Grid2DObject& grid_in, const std::string& options="") {iohandler.write2DGrid(grid_in, options);}
54 void write2DGrid(const Grid2DObject& grid_in, const MeteoGrids::Parameters& parameter, const Date& date) {iohandler.write2DGrid(grid_in, parameter, date);}
55 void write3DGrid(const Grid3DObject& grid_out, const std::string& options="") {iohandler.write3DGrid(grid_out, options);}
56 void write3DGrid(const Grid3DObject& grid_out, const MeteoGrids::Parameters& parameter, const Date& date) {iohandler.write3DGrid(grid_out, parameter, date);}
57 //end legacy support
58
59 void setProcessingLevel(const unsigned int& i_level);
60 void clear_cache() {buffer.clear();}
61
66 const Config& getConfig() const {return cfg;}
67
72 const IOHandler& getIOHandler() const {return iohandler;}
73
74 std::vector<StationData> initVirtualStationsAtAllGridPoints(const DEMObject& dem) const;
75 std::vector<StationData> initVirtualStations(const DEMObject& dem, const bool& adjust_coordinates, const bool& fourNeighbors) const;
76 METEO_SET getVirtualStationsFromGrid(const DEMObject& dem, const std::vector<size_t>& v_params, const std::vector<StationData>& v_stations, const Date& date, const bool& PtsExtract=false);
77 std::vector<METEO_SET> getVirtualStationsFromGrid(const DEMObject& dem, const std::vector<size_t>& v_params, const std::vector<StationData>& v_stations, const Date& dateStart, const Date& dateEnd, const bool& PtsExtract=false);
78
79 const std::string toString() const;
80
81 private:
82 bool isAvailable(const std::set<size_t>& available_params, const MeteoGrids::Parameters& parameter, const Date& date) const;
83 bool setGrids2d_list(const Date& date);
84 bool setGrids2d_list(const Date& dateStart, const Date& dateEnd);
85 Grid2DObject getRawGrid(const MeteoGrids::Parameters& parameter, const Date& date);
86 Grid2DObject getGrid(const MeteoGrids::Parameters& parameter, const Date& date, const bool& enforce_cartesian=true, const bool& enable_grid_1dresampling=true);
87 std::map<Date, Grid2DObject> getAllGridsForParameter(const MeteoGrids::Parameters& parameter);
88 bool generateGrid(Grid2DObject& grid2D, const std::set<size_t>& available_params, const MeteoGrids::Parameters& parameter, const Date& date);
89 std::vector < double > getPtsfromGrid(const MeteoGrids::Parameters& parameter, const Date& date, const std::vector< std::pair<size_t, size_t> >& Pts);
90 bool getPtsfromgenerateGrid(std::vector<double>& Vec, const std::set<size_t>& available_params, const MeteoGrids::Parameters& parameter, const Date& date, const std::vector< std::pair<size_t, size_t> >& Pts);
91
92 IOHandler& iohandler;
93 const Config& cfg;
94 GridBuffer buffer;
95 GridProcessor gridprocessor;
96 std::map<Date, std::set<size_t> > grids2d_list;
97 Date grids2d_start, grids2d_end;
98
99 double grid2d_list_buffer_size;
100 unsigned int processing_level;
101 bool dem_altimeter;
102};
103} //end namespace
104#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
A class to buffer gridded data. This class buffers Grid2D objects. It implements a proper ring buffer...
Definition Buffer.h:157
void clear()
Definition Buffer.h:162
This class is handled by a GridManager and performs grid filtering and temporal resampling.
Definition GridProcessor.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 MeteoGrids::Parameters &parameter, const Date &date)
Definition GridsManager.h:46
std::vector< StationData > initVirtualStations(const DEMObject &dem, const bool &adjust_coordinates, const bool &fourNeighbors) const
Create a list of virtual stations from the user-provided input.
Definition GridsManager.cc:199
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 write2DGrid(const Grid2DObject &grid_in, const MeteoGrids::Parameters &parameter, const Date &date)
Definition GridsManager.h:54
const Config & getConfig() const
Returns the internal Config object.
Definition GridsManager.h:66
void clear_cache()
Definition GridsManager.h:60
void readGlacier(Grid2DObject &landuse_out)
Definition GridsManager.cc:127
void write3DGrid(const Grid3DObject &grid_out, const std::string &options="")
Definition GridsManager.h:55
const std::string toString() const
Definition GridsManager.cc:985
void write3DGrid(const Grid3DObject &grid_out, const MeteoGrids::Parameters &parameter, const Date &date)
Definition GridsManager.h:56
void setProcessingLevel(const unsigned int &i_level)
Set the desired ProcessingLevel.
Definition GridsManager.cc:52
const IOHandler & getIOHandler() const
Returns the internal IOHandler object.
Definition GridsManager.h:72
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
std::vector< StationData > initVirtualStationsAtAllGridPoints(const DEMObject &dem) const
Create a list of virtual stations from each grid point.
Definition GridsManager.cc:159
METEO_SET getVirtualStationsFromGrid(const DEMObject &dem, const std::vector< size_t > &v_params, const std::vector< StationData > &v_stations, const Date &date, const bool &PtsExtract=false)
Extract time series from grids at the specified points (virtual stations).
Definition GridsManager.cc:288
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 read3DGrid(Grid3DObject &grid_out, const std::string &i_filename="") override
A generic function for parsing 3D grids into a Grid3DObject. The string parameter shall be used for a...
Definition IOHandler.cc:448
virtual void write2DGrid(const Grid2DObject &grid_in, const std::string &name) override
Write a Grid2DObject The filename is specified relative to GRID2DPATH for most plugins.
Definition IOHandler.cc:542
virtual void write3DGrid(const Grid3DObject &grid_out, const std::string &options) override
Write a Grid3DObject The filename is specified relative to GRID3DPATH for most plugins.
Definition IOHandler.cc:554
Parameters
this enum provides names for possible meteogrids (from an ARPS file, etc)
Definition MeteoData.h:46
Definition getopt.h:65
Definition Config.cc:34
std::vector< MeteoData > METEO_SET
Definition MeteoData.h:32