WSL/SLF GitLab Repository

Commit ce7942b1 authored by Mathias Bavay's avatar Mathias Bavay
Browse files

The documentation has been extended by adding a workflow diagram and more...

The documentation has been extended by adding a workflow diagram and more details for writing plugins.
parent 629ee2eb
#FIG 3.2 Produced by xfig version 3.2.5
Portrait
Landscape
Center
Metric
A4
57.00
59.70
Single
-2
1200 2
......
No preview for this file type
This diff is collapsed.
This diff is collapsed.
......@@ -64,17 +64,18 @@ void IOHandler::registerPlugins()
#else
const std::string popc_extra = "";
#endif
//mapPlugins[io.ini KEY]= IOPlugin(library file name, class name, NULL, NULL);
mapPlugins["A3D"] = IOPlugin("", "A3DIO", &fileio, NULL);
mapPlugins["BORMA"] = IOPlugin("libbormaio"+popc_extra+libsuffix, "BormaIO", NULL, NULL);
mapPlugins["IMIS"] = IOPlugin("libimisio"+popc_extra+libsuffix, "ImisIO", NULL, NULL);
mapPlugins["GEOTOP"] = IOPlugin("libgeotopio"+popc_extra+libsuffix, "GeotopIO", NULL, NULL);
mapPlugins["SNOWPACK"] = IOPlugin("libsnio"+popc_extra+libsuffix, "SNIO", NULL, NULL);
mapPlugins["GSN"] = IOPlugin("libgsnio"+popc_extra+libsuffix, "GSNIO", NULL, NULL);
mapPlugins["ARC"] = IOPlugin("libarcio"+popc_extra+libsuffix, "ARCIO", NULL, NULL);
mapPlugins["GRASS"] = IOPlugin("libgrassio"+popc_extra+libsuffix, "GrassIO", NULL, NULL);
mapPlugins["ARPS"] = IOPlugin("libarpsio"+popc_extra+libsuffix, "ARPSIO", NULL, NULL);
mapPlugins["PGM"] = IOPlugin("libpgmio"+popc_extra+libsuffix, "PGMIO", NULL, NULL);
mapPlugins["SMET"] = IOPlugin("libsmetio"+popc_extra+libsuffix, "SMETIO", NULL, NULL);
mapPlugins["GSN"] = IOPlugin("libgsnio"+popc_extra+libsuffix, "GSNIO", NULL, NULL);
mapPlugins["ARC"] = IOPlugin("libarcio"+popc_extra+libsuffix, "ARCIO", NULL, NULL);
mapPlugins["GRASS"] = IOPlugin("libgrassio"+popc_extra+libsuffix, "GrassIO", NULL, NULL);
mapPlugins["ARPS"] = IOPlugin("libarpsio"+popc_extra+libsuffix, "ARPSIO", NULL, NULL);
mapPlugins["PGM"] = IOPlugin("libpgmio"+popc_extra+libsuffix, "PGMIO", NULL, NULL);
mapPlugins["SMET"] = IOPlugin("libsmetio"+popc_extra+libsuffix, "SMETIO", NULL, NULL);
}
#ifdef _POPC_
......@@ -214,7 +215,7 @@ void IOHandler::readLanduse(Grid2DObject& landuse_out)
plugin->readLanduse(landuse_out);
}
void IOHandler::readStationData(const Date& date, std::vector<StationData>& vecStation)
void IOHandler::readStationData(const Date& date, STATION_DATASET& vecStation)
{
IOInterface *plugin = getPlugin("METEO", "Input");
plugin->readStationData(date, vecStation);
......
......@@ -51,7 +51,7 @@ namespace mio {
* A template for writing a plugin class is available in the plugin directory under the name template.cc and template.h. Simply copy these two files under a new name and fill the methods that you want to implement. Some easy example implementation can be found in ARCIO or A3DIO.
*
* @section plugins_registration Plugins registration
* Once a plugin has been written, it must be "registered" so that it is known by the rest of the library. This is done in IOHandler::registerPlugins by adding a plugin key (that will be used by the user in the configuration file when he wants to use the said plugin), the name of the dynamic library that the plugin is bunddled in, the name of its implementation class, a pointer to the implementation class (use NULL and it will be properly initialized), and a pointer to the dynamicl library (again, set as NULL and the proper initialization will take place). For more information, see the IOPlugin class.
* Once a plugin has been written, it must be "registered" so that it is known by the rest of the library. This is done in IOHandler::registerPlugins by adding a plugin key (that will be used by the user in the configuration file when he wants to use the said plugin), the name of the dynamic library that the plugin is bunddled in (knowing that CMake adds "lib" to prefix all library names, which means that you should expect a file name to look like "libmyplugin"), the name of its implementation class, a pointer to the implementation class (use NULL and it will be properly initialized), and a pointer to the dynamicl library (again, set as NULL and the proper initialization will take place). For more information, see the IOPlugin class.
*
* Finally, the build system has to be updated so that it offers the plugin to be build: a local file (<a href="../../meteoio/plugins/CMakeLists.txt">meteoio/plugins/CMakeLists.txt</a>) has to be edited so that the plugin is really built, then the toplevel file has to be modified so the user can choose to build the plugin if he wishes (<a href="../../CMakeLists.txt">CMakeLists.txt</a>). Please keep in mind that all plugins should be optional (ie: they should not prevent the build of MeteoIO without them) and please call your plugin compilation flag similarly as the other plugins (ie: PLUGIN_MYNAME).
*
......
......@@ -42,6 +42,7 @@ namespace mio {
* -# \subpage resampling "Available temporal interpolations" and usage
* -# \subpage interpol2d "Available spatial interpolations" and usage
* -# Programing using MeteoIO
* -# \subpage workflow "Example Workflow"
* -# \subpage quick_overview "Quick overview" of the functionnality provided by MeteoIO
* -# \subpage examples "Usage examples"
* -# Expanding MeteoIO
......@@ -122,6 +123,13 @@ namespace mio {
* As can be seen from the previous example, each plugin, each filter or each interpolation algorithm might have its own parameters. Therefore, this is the documentation of each specific plugin/filter/algorithm that has to be used in order to figure out what can be configured when it (see the next sections in the welcome page).
*/
/**
* @page workflow Workflow
* Here is a workflow example showing how meteorological data is requested by the user's application and delivered. This is a simplified view, in order to show the general structure. Requesting grids (2D grids, DEM, etc) is very similar but does not perfom filtering or resampling.
* \image html workflow_meteoreading.png "simplified meteo reading workflow"
* \image latex workflow_meteoreading.eps "simplified meteo reading workflow" width=0.9\textwidth
*/
/**
* @page quick_overview Quick overview
* This library contains various classes that have been designed to deal with various sets of problems. This page shows the different sets of problems and what kind of functionnality the library offers to tackle them.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment