PluginArchitecture

Sandro Santilli edited this page Mar 23, 2016 · 19 revisions
Clone this wiki locally

Overview

Mapnik supports a Plugin architecture read access to a variety of formats.

Some plugins have been written in C++ and require no external dependencies, while others require access to a supporting C or C++ library (like libpq for postgis/postgresql and libgdal for gdal/org support).

Interested in developing a new plugin see: DevelopingPlugins

All current plugins are either located in plugins/input in the source tree, or in the mapnik/non-core-plugins repository.

Name Availability Status Build by Default Notes
postgis 0.2.0 Stable yes support for accessing geospatial data through PostGIS, the spatial database extension for PostgreSQL
raster 0.2.0 Stable yes stripped or tiled raster TIFF image dataset support
shape 0.2.0 Stable yes vector SHP (ESRI Shapefile) parsing
gdal 0.5.0 Beta no support for GDAL datasets
ogr 0.6.0 Beta no support for OGR datasets
osm 0.6.0 Beta no support for reading OpenStreetMap (OSM) xml datasets
sqlite 0.6.0 Beta no support for SQLite / Spatialite sql vector format
occi 0.6.0 Beta no support for oracle spatial 10g/11g (versions 10.2.0.x and 11.2.0.x) (Oracle Spatial) sql vector format
kismet 2.1? Alpha no support for Kismet GPS; shows little WLAN nodes on the map
rasterlite 2.1? Experimental no support for Rasterlite sqlite raster with wavelet compression
geos 2.1? Experimental no support for inline WKT geometries using GEOS library
[python](Python Plugin) 2.1 Experimental yes support for generating features dynamically using the Python programming language
[geojson](GeoJSON Plugin) 2.1 Experimental no support for reading features from GeoJSON data
[csv](CSV Plugin) 2.1 unknown no support for reading lon/lat, GeoJSON, or WKT from CSV data
pgraster 3.0 Stable yes support for loading raster data from PostGIS
[topojson](TopoJSON Plugin) 3.0 unknown no support for loading features from TopoJSON data

Note: When compiling Mapnik from source only the PostGIS, Raster, and Shape plugins will be compiled by default.

To request additional plugins to be compiled and installed make sure you have the required dependencies and then specify the list of plugins for SCons to build:

    # attempt to build all plugins possible
    $ python scons/scons.py INPUT_PLUGINS='all'
    # build just the postgis plugin:
    $ python scons/scons.py INPUT_PLUGINS='postgis'
    # to compile the plugins statically with mapnik library (https://github.com/mapnik/mapnik/tree/static-plugins)
    $ python scons/scons.py INPUT_PLUGINS='all' PLUGIN_LINKING='static' 

Querying plugins

If you compiled Mapnik with DEBUG=True, then the list of plugins registered by the python bindings will during initial import:

    Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17) 
    >>> import mapnik
    registered datasource : gdal
    registered datasource : raster
    registered datasource : shape

Otherwise, get a listing of available plugins with this command:

    $ python -c "from mapnik import DatasourceCache as c; print ','.join(c.plugin_names())"
    These are the registered datasource plugins that Mapnik's python binding currently knows about.