Rendering

From OpenStreetMap Wiki
(Redirected from Renderer)
Jump to navigation Jump to search
Rendering a map from raw geodata, gives us the flexibility to style it in many different ways. OpenStreetMap's free and open geodata offers tremendous power, and a range of tools are available for rendering with OpenStreetMap

Rendering of a map is the process of making a visual image on the basis of raw geospatial data and tags. The word often applies more specifically to the production of a raster image, or a set of raster tiles, but it can refer to output in a vector-based format. "3D rendering" is also possible taking map data as an input. The ability to render maps in new and interesting styles, or highlighting features of special interest, is one of the most exciting aspects having open access to geodata. Developers in and around the OpenStreetMap community have created a wide variety of software for rendering OpenStreetMap data. The data can also be converted to other data formats for use with existing rendering software.

Rendering on OpenStreetMap servers

The most obvious examples of rendering OpenStreetMap data, are those found on the openstreetmap.org homepage. Click the layer picker button on the right to switch between layers showing different rendering styles. There are several layers created using Mapnik software including the default 'Standard' layer. To understand more about the infrastructure involved in rendering and serving these tiles' map styles, see Component overview and Mapnik Rendering.

There are limitless dimensions of flexibility involved in rendering. Most rendering software supports some kind of stylesheet for controlling things like colour, line widths, text orientation, icons for points of interest, and many very subtle visual factors.

Server and command line tools

Name Target platforms Target languages License Notes
Carto JavaScript N/A Apache v2 convert CartoCSS style sheets into Mapnik's own XML styling language
Mapnik Windows, macOS, Linux C++, JavaScript, Python, Ruby, Java LGPL The most popular server-side 2D map renderer. Requires PostgreSQL and various C++ libraries. Designed to be fast and is suitable for tile generation on high-end servers but it isn't particularly easy to set up.
MapOSMatic Cross-platform Python AGPLv3 Can render maps with a grid and street index. Written in Python/Django + mapnik.
Smrender Cross-platform C GPLv3 a rules-based rendering engine written in C
TileServer GL Cross-platform BSD Tile server for raster and vector tiles.
Map Machine Cross-platform Python MIT A simple renderer for OpenStreetMap with custom icons intended to display as many tags as possible.

Client-side GUI applications

Name Target platforms License Notes
Kosmtik Node.js WTFPL CartoCSS style development tool (style preview) based on Mapnik.
Maperitive Windows, macOS, Linux Proprietary local file (.osm, .osm.bz2 and GPX) desktop rendering application, with rendering rules defined in a text file. Generates BMP, PNG and SVG output. Not designed for high performance rendering or huge volumes of data, but easy to set up and flexible, and a good option for one-off rendering (e.g. a map of your city). It also has a tile generator, hillshading, elevation colouring and lots of other features.
OSM2World Java SE LGPL Tool that creates 3D realistic models from OSM data files
OSMBuildings JavaSript (WebGL) ... Tool that creates 3D models from OSM data files
OSM go JavaScript GPL Tool that creates 3D simple models with selectable OSM-Objects from OSM data files
Phototiler Linux, macOS, Windows Proprietary A tool to create high quality maps using photo-realistic shading and vector tile data.
TileMill Windows, macOS, Linux 3-clause BSD development environment for CartoCSS styles

Client-side libraries

Main article: Frameworks
Name Target platforms Target languages License Notes
CartoType Windows, iOS, Android, macOS, Unix, Web Assembly C++, C#, Java, Swift, Objective C Proprietary Rendering and routing library. Uses OpenGL ES hardware acceleration. Customizable style sheets and route profiles. Supports perspective and 3D buildings.
GLMap iOS, Android Objective-C, Swift, Java Proprietary Offline or online vector map rendered on device using OpenGL ES
libosmscout Linux, macOS, iOS, Windows, Android, Qt C++, Java LGPL Offers simple, high-level interfaces to offline rendering and routing functionalities based on OpenStreetMap data.
Mapbox Maps SDK Android, iOS, Web Kotlin, JavaScript, Swift Proprietary Displays Mapbox-hosted and offline Mapbox Vector Tiles using OpenGL ES and WebGL
Mapbox Unity SDK Cross-platform C# Apache/BSD Provides data for generating custom 3D scenes in Unity
MapLibre GL JS Web JavaScript BSD Community led fork derived from Mapbox GL JS v1.13 prior to their switch to a non-OSS license
MapLibre GL Native Android, iOS Java, Objective-C, Swift, Interface Builder BSD Community led fork derived from Mapbox GL Native 1.6.0 prior to their switch to a non-OSS license
Mapsforge Android, Java ME Java LGPLv3 free and open toolbox that enables the community to easily create new OpenStreetMap-based applications. Provided tools and APIs include solutions for map rendering, route planning and navigation, POI indexing and search, map overlays and more.
MapTiler JavaScript Maps SDK Web JavaScript BSD Fork of MapLibre GL JS
Prettymaps Cross-platform Python GNU AGPLv3 2D raster and vector graphics rendering using Python. Based on osmnx, matplotlib and shapely libraries.

Historical

The following renderers are no longer maintained but are of historical interest:

  • AlaCarte - A tile rendering engine for Windows and Linux. No project progress since 2016. AGPL
  • Hardware accelerated real-time rendering, .NET, proprietary, using graphics card to render images in real-time, instead of displaying prerendered tiles
  • Kartograph – AGPL licensed Python framework to create SVG maps, officially dead since 2016
  • Kartograph, LGPL, JavaScript library to display vector generated maps in any browser
  • Kendzi3d – plugin for JOSM, allows viewing of edited data in 3D
  • Kothic JS – JavaScript, BSD, full-featured JavaScript map rendering engine using HTML5 Canvas. It was initially developed as a JavaScript port of Kothic.
  • Kothic – GPLv3 licensed, Python, a MapCSS/0.2 python rendering engine (project is dead, last activity in 2015)
  • LunaRender, Windows, Lua, MIT license, XML2SVG renderer
  • Mapbox GL – Originally BSD-licensed and available for Android, iOS, macOS, QT, and the Web. Superseded by MapLibre (open-source) and Mapbox Maps SDK (proprietary).
  • Mapweaver - Successor of mapgen.pl Perl rendering, OSM to SVG and with Inkscape to PNG or PDF, automatic map key. Supports street and POI lists, grids and coordinate overlays. Automatic extraction of desired place out of OSM file. Not running under Windows.
  • MapSurfer.NET - proprietary, .NET, framework for map styling and publishing (rendering, caching) geospatial data to the web
  • Memphis – a map-rendering application and a library for OpenStreetMap written in C using eXpat, Cairo and GLib. It's licensed under the terms of the GNU Lesser General Public License.
  • Osmarender - XSLTs which does OSM XML to SVG transformation. tiles@home was a project which uses Osmarender to create a tile set for serving a map layer alongside Mapnik's, but Osmarender can also be a good option for doing one-off renderings. SVG format allows you to do post-processing tidy up tweaks (see other options below). It was withdrawn from the main map at osm.org on 1th March 2012.
  • osmbrowser – can load large areas of OSM data and render them in vector graphics.
  • osmrender.pl - simple maps easily drawn with a Perl program. Uses *.osm as input.
  • XNavigator, Java SE, GPLv2, 3D renderer, last release in 2012 according to OSM wiki page
  • Osm2pov - Tool for creating isometric maps from OSM data
  • Pyrender – a collection of ideas, and some code in Python for various rendering server steps
  • Tangram – 2D and 3D map renderer using WebGL by Mapzen
  • Tangram ES – 2D and 3D map renderer using OpenGL ES by Mapzen
  • TileSweep – a tile server for Mapnik
  • VTM – cross-platform vector tile renderer developed by the OpenScienceMap project

See also

Notes and references