About Mapnik

Welcome

This LiveDVD includes Mapnik 0.5.1, the packaged release for Ubuntu Jaunty, along with a demo web application using OpenLayers and Tilelite. If you like what you see, we recommend running the Mapnik 0.6.x series which is available in the latest Ubuntu release known as "Karmic". Intrepid users may want to try running through the excellent Mapnik, Nik2img, and Cascadenik tutorial as part of the Amazon Image from http://mapsfromscratch.com/.

What is Mapnik?

Mapnik is an Open Source Toolkit for developing mapping applications. Above all Mapnik is about making beautiful maps. It is easily extensible and suitable for both desktop and web development.

Mapnik is written in C++ and there are Python bindings to facilitate fast-paced agile development within web frameworks such as Django, Pylons, or Turbogears.

One of its many users is the OpenStreetMap project (OSM) which uses it in combination with an Apache Web Server module (mod_tile) to render tiles that make up the main OSM 'Slippy Map' Layer. An XML file can be used to define a collection of mapping objects that determine the appearance of a map, or objects can be constructed programatically in C++ or Python. Artem Pavlenko, the original developer of Mapnik, set out with the explicit goal of creating beautiful maps by employing the subpixel anti-aliasing of the Anti-Grain Geometry (AGG) library. Artem's work has attracted a large array of active contributers that currently work on all aspects of Mapnik development. Mapnik now also has a powerful Cairo Graphics rendering backend for vector output, a solid set of datasource plugins, and a wealth of parameters to customize labeling output. When it comes to handling common software tasks such as memory management, filesystem access, regular expressions, and XML parsing, Mapnik utilizes the Boost C++ Libraries.

Features of this LiveDVD

Mapnik and its python bindings are installed and ready to be used for scripting on this machine.

In addition a basic demo application that hints at the rich features and rendering capabilities of Mapnik is pre-installed. To run the demo, which shows serving tiles into OpenLayers through Mapnik in the OSM/Google tile scheme, just follow these steps:

Other things to do include:

The Mapnik team hopes that these will spark your interest to delve deeper into using the Mapnik library. If you are looking for a one-stop solution for serving your various formats of geodata via the web, look to MapServer or Geoserver. But, if you have the highest expectations for cartographic quality, enjoy working with OpenStreetMap data, or wish to develop an application in C++ or Python then Mapnik may be worth a closer look.

How does it compare to GeoServer and MapServer?

As a rendering engine it has very similiar core functionality to MapServer and GeoServer. With enough effort you should be able to get nearly the same output out of each renderer as far as crisp antialiased lines, good text labeling, and speedy access to large datasets.

Like GeoServer, Mapnik uses an XML format to store styles which is akin to the OGC Symbology Encoding spec, but Mapnik departs from the SE spec in some places using a more concise format and extends the spec by supporting inline XML layer definitions. Unlike Geoserver, Mapnik focuses purely on rendering and is most powerful when used programmatically (in C++ or Python) and does not provide a graphical administration panel for loading layers or styles.

Like MapServer, Mapnik has fully-featured python language bindings that expose a large set of GIS features such as coordinate reprojection, data introspection, zooming and panning ability, and the loading of an array of datasources. Unlike MapServer, Mapnik does not feature a standard WMS CGI application like 'mapserv' cgi but is more commonly used to generate tile sets using either Mod_tile, TileCache, or TileLite, or as a graphics engine in a standalone application written in python or C++ (Mapnik users are frequently seen rolling cross platform desktop and web applications using either QT, WXPython, or Django).

Further Resources