MeteoIO is an Open Source library for working (primarily) with meteorological data. Since real world, measured data are often far from perfect and suffer from various issues (missing data, invalid data, measurement errors or innaccuracies), it is necessary to correct the data before using it into a numerical model. This is where MeteoIO steps in by offering a tool that can take in the raw data and make it suitable to be used by a model. It has been designed to be model-independent, robust, easy to integrate and easy to use.
Whom is it for?
MeteoIO is aimed at researchers working with meteorological data and numerical models developers.
How to obtain MeteoIO
MeteoIO is available free of charge as Open Source under the LPGL version 3 licence [https://www.gnu.org/licenses/lgpl.html]. Once or twice per year, there is a new release. More information is given at meteoio.slf.ch.
Detailed software description
A large number of the problems encountered by users of numerical models working on large meteorological data sets can be traced back to the Input/Output functionality. This comes from the focus of the model developers on the core modeling issues at the expanse of the I/O routines that are costly to properly implement. Therefore the I/O routines often lack flexibility and robustness. When using numerical models in operational applications, this becomes a major drawback and a regular source of problems.
The MeteoIO library has been designed to address this issue. It is an additional layer between the data and the numerical model, handling the retrieval of data from various data sources as well as the data pre-processing.
MeteoIO has been designed to accomodate both the needs of carefully crafted simulations for a specific purpose/study and for the needs of operational simulations that run automatically and unattended. A typical setup for such operational applications consists of a data acquisition system (made of various sensors, usually mounted on a common mast, thus seen as belonging to a station and some system to bring the data back to some sort of data repository), a data storage system that usually has some way of also distributing the data (often a database but sometimes only data files on a disk) and is mostly seen as the data source by the application, some applications using the data and producing results that are published to their end users (either to an automated system that one can connect to or to some visualization tool that one can use to explore the results).
In this setup, MeteoIO is the "glue" between the numerical model at the core of the application and the data sources on one hand and the publication system on the other hand.
General MeteoIO structure
MeteoIO can be seen as a set of modules that is focused on the handling of input/output operations (including data preparation) for numerical simulations in the realm of earth sciences. On the visible side, it offers the following modules, working on a pre-determined set of meteorological parameters or on parameters added by the developer:
- a set of plugins for accessing the data (for example, a plugin might be responsible for fetching the raw data from a given database)
- a set of filters and processing elements for applying transformations to the data (for example, a filter might remove all data that is out of range)
- a set of resampling algorithms to temporally interpolate the data at the required timestamp
- a set of parametrizations to generate data/meteorological parameters when they could not be interpolated
- a set of spatial interpolation algorithms (for example, such an algorithm might perform Inverse Distance Weighting for filling a grid with spatially interpolated data)
Each of these steps can be configured and fine tuned according to the needs of the model and the wishes of the user.
Moreover, a few assumptions are made about the data that you are using: each data point has to be associated with a geographic location (defined by some sort of coordinates) and very often you will also need to provide a Digital Elevation Model. Therefore, you will also notice a few extra modules that come to play on the visible side:
- a module to deal with Digital Elevation Models. Such module will for example interpret a grid of data as a grid of elevations and compute a grid of slopes.
- a module to deal with coordinate systems. Such module will require you to define which coordinate system are your data in and transparently handle potential coordinate conversions in the program that you are using.
- a module to deal with configuration files. The program that you are using might be using this module for other configuration files.