Skip to content

fmidev/smartmet-server

Repository files navigation

SmartMet Server

SmartMet Server is a data and product server for MetOcean data. It provides a high capacity and high availability data and product server for MetOcean data. The server is written in C++, since 2008 it has been in operational use by the Finnish Meteorological Institute FMI.

The server can read input data from various sources:

  • GRIB (1 and 2)
  • NetCDF
  • SQL database

The server provides several output interfaces:

  • WMS 1.3.0
  • WFS 2.0
  • EDR 1.0
  • Several custom interface and several output formats:
  • JSON
  • XML
  • ASCII
  • HTML
  • SERIAL
  • GRIB1
  • GRIB2
  • NetCDF
  • Raster images

The server is INSPIRE compliant. It is used for FMI data services and product generation. It's been operative since 2008 and used for FMI Open Data Portal since 2013.

The server is especially good for extracting weather data and generating products based on gridded data (GRIB and NetCDF). The data is extracted and products generating always on-demand.

Server Structure

SmartMet Server consists of following components:

ComponentDescriptionSource Code
qdtools Helper programs to handle underlying data https://github.com/fmidev/smartmet-qdtools
Libraries Libraries required to run programs and the server https://github.com/fmidev/smartmet-library-spine
https://github.com/fmidev/smartmet-library-newbase
https://github.com/fmidev/smartmet-library-macgyver
https://github.com/fmidev/smartmet-library-gis
https://github.com/fmidev/smartmet-library-giza
https://github.com/fmidev/smartmet-library-locus
https://github.com/fmidev/smartmet-library-grid-content
https://github.com/fmidev/smartmet-library-grid-files
https://github.com/fmidev/smartmet-library-calculator
Server The server daemon itself https://github.com/fmidev/smartmet-server
Engines Common modules with a state https://github.com/fmidev/smartmet-engine-geonames
https://github.com/fmidev/smartmet-engine-sputnik
https://github.com/fmidev/smartmet-engine-querydata
https://github.com/fmidev/smartmet-engine-observation
https://github.com/fmidev/smartmet-engine-contour
https://github.com/fmidev/smartmet-engine-gis
https://github.com/fmidev/smartmet-engine-authentication
https://github.com/fmidev/smartmet-engine-geonames
Plugins Plugins providing interfaces to clients https://github.com/fmidev/smartmet-plugin-timeseries
https://github.com/fmidev/smartmet-plugin-meta
https://github.com/fmidev/smartmet-plugin-frontend
https://github.com/fmidev/smartmet-plugin-wfs
https://github.com/fmidev/smartmet-plugin-wms
https://github.com/fmidev/smartmet-plugin-cross_section
https://github.com/fmidev/smartmet-plugin-timeseries
https://github.com/fmidev/smartmet-plugin-edr
https://github.com/fmidev/smartmet-plugin-autocomplete
https://github.com/fmidev/smartmet-plugin-backend
https://github.com/fmidev/smartmet-plugin-download
https://github.com/fmidev/smartmet-plugin-admin
https://github.com/fmidev/smartmet-plugin-grid-admin
https://github.com/fmidev/smartmet-plugin-grid-gui
https://github.com/fmidev/smartmet-plugin-textgen

Licence

The server is published with MIT-license.

How to contribute

Found a bug? Want to implement a new feature? Your contribution is very welcome!

Small changes and bug fixes can be submitted via pull request. In larger contributions, premilinary plan is recommended (in GitHub wiki).

CLA is required in order to contribute. Please contact us for more information!

Communication and Resources

You may contact us from following channels:

Other resources which may be useful:

Docker Configuration