SmartMet Server

April 13, 2026 · View on GitHub

SmartMet Server is a high-performance, high-availability data and product server for MetOcean data, developed and operated by the Finnish Meteorological Institute (FMI). Written in C++, it has been in operational use since 2008 and powers the FMI Open Data Portal since 2013. The server is INSPIRE compliant.

Capabilities

Input formats:

  • GRIB 1 and GRIB 2
  • NetCDF
  • SQL databases
  • QueryData (FMI native format)

Output interfaces and formats:

  • OGC WMS 1.3.0, WFS 2.0
  • OGC API — Environmental Data Retrieval (EDR)
  • JSON, XML, ASCII, HTML
  • GRIB 1, GRIB 2, NetCDF
  • Raster images (PNG, JPEG, SVG)

The server specializes in on-demand extraction and product generation from gridded weather data (GRIB, NetCDF). It is designed for multi-core use, provides LRU caching, and supports frontend/backend load balancing via the Sputnik engine.

Architecture

SmartMet Server Structure

The server daemon loads engines (shared stateful modules) and plugins (HTTP interface handlers) at startup. All components share common libraries.

Components

Libraries

RepositoryDescription
smartmet-library-spineCore server framework: HTTP handling, plugin/engine management, configuration, thread pool
smartmet-library-newbaseCore QueryData format library — the native FMI weather data format with projection and parameter support
smartmet-library-macgyverGeneral utilities: astronomy, caching, datetime parsing, filesystem, charset conversion, CSV, Base64
smartmet-library-gisGIS operations: coordinate projections, geometry clipping, antimeridian handling, DEM/raster data, PostGIS
smartmet-library-gizaColor mapping and SVG rendering: palettes, color trees, color-mapped image generation
smartmet-library-locusGeographic name and location lookup: geocoding queries with multilingual support
smartmet-library-imagine2D graphics rendering: Bezier curves, affine transforms, color blending, image compositing
smartmet-library-imagine2Updated 2D graphics rendering library (successor to imagine)
smartmet-library-calculatorTime series and area calculation tools for QueryData
smartmet-library-delfoiOracle database access layer for meteorological observations and flash data
smartmet-library-grid-contentGrid support: Content Server, Data Server, and Query Server APIs with Redis, cache, CORBA, and HTTP implementations
smartmet-library-grid-filesUnified driver layer for grid file formats: GRIB 1, GRIB 2, NetCDF, QueryData
smartmet-library-regressionRegression testing framework for SmartMet tools and libraries
smartmet-library-smarttoolsScripting tools for the SmartMet editor, also used by qdtools
smartmet-library-textgenAlgorithms for generating weather forecast text from querydata
smartmet-library-timeseriesTime series data structures and operations
smartmet-library-trajectoryTrajectory calculations for massless particles
smartmet-library-traxHigh-performance marching-squares contouring: isobands and isolines from 2D gridded data
smartmet-library-womlWeather Object Model (WOML) file reader, used by the frontier renderer

Engines

Engines are shared stateful modules loaded by the server daemon. They are shared across all plugins.

RepositoryDescription
smartmet-engine-querydataQueryData file management and access, with spatial/temporal interpolation and DEM correction
smartmet-engine-geonamesGeographic name lookup and geocoding via PostGIS/GeoNames database
smartmet-engine-observationWeather station observation data access
smartmet-engine-contourIsoline and isoband contour generation from gridded data
smartmet-engine-gisGIS data and projection support for plugins
smartmet-engine-sputnikFrontend/backend cluster management and UDP-based load balancing
smartmet-engine-gridGrid support engine: access to Content Server, Data Server, and Query Server APIs
smartmet-engine-aviAviation weather data (METAR, TAF, SIGMET) access
smartmet-engine-authenticationAPI key authentication and access control
smartmet-engine-osmOpenStreetMap data access

Plugins

Plugins handle HTTP requests and provide the server's external interfaces.

RepositoryDescription
smartmet-plugin-timeseriesTime series data retrieval — weather parameters at locations over time
smartmet-plugin-wmsOGC Web Map Service 1.3.0 — georeferenced weather map images
smartmet-plugin-wfsOGC Web Feature Service 2.0 — INSPIRE-compliant feature data
smartmet-plugin-edrOGC API — Environmental Data Retrieval
smartmet-plugin-downloadBulk data download in GRIB, NetCDF, and QueryData formats
smartmet-plugin-frontendLoad-balancing frontend that distributes requests to backend servers
smartmet-plugin-backendBackend handler for frontend-routed requests
smartmet-plugin-autocompleteLocation name autocomplete with weather enrichment
smartmet-plugin-metaMetadata about observations (quality codes, observable properties)
smartmet-plugin-adminServer administration: cluster info, cache stats, active requests
smartmet-plugin-grid-adminHTTP interface for grid Content Information Storage administration
smartmet-plugin-grid-guiBrowser-based visualization of grid files and content storage
smartmet-plugin-aviAviation weather data (METAR, TAF, SIGMET) interface
smartmet-plugin-cross_sectionVertical cross-section product generation
smartmet-plugin-trajectoryParticle trajectory calculation interface
smartmet-plugin-textgenWeather forecast text generation interface
smartmet-plugin-q3Lua scripting interface for custom weather data queries

Tools and Applications

RepositoryDescription
smartmet-qdtoolsComprehensive suite of QueryData handling, conversion, and inspection tools
smartmet-qdcontourLegacy QueryData contouring and map rendering tool
smartmet-qdcontour2Updated QueryData contouring and map rendering tool
smartmet-shapetoolsCommand-line tools for ESRI shapefile operations
smartmet-tools-gridGrid support server, client, and file inspection programs
smartmet-pressPostScript and ASCII product generation from QueryData
smartmet-fmitoolsFMI-specific meteorological data manipulation tools
smartmet-textgenappsWeather forecast text generation applications
smartmet-frontierSVG weather chart renderer from WOML input
smartmet-timezonesTimezone data files: Boost.Date_Time database and packed global shapefile
smartmet-fontsWeather symbol fonts used by SmartMet rendering tools
smartmet-roadindexRoad weather index calculations
smartmet-roadmodelRoad weather model
smartmet-utilsGeneral utility scripts

Documentation

License

MIT — see LICENSE

Contributing

Bug reports and pull requests are welcome on GitHub. For larger contributions, open an issue for discussion first. A CLA is required — contact us for details.

Contact