Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

A mappyfile plugin to convert GeoJSON to inline Mapfile features

Project description

Version Build Status

A mappyfile plugin to convert GeoJSON to inline Mapfile features. Useful for adding dynamically created features (from web services, user created features, and other external data sources) to a map, or to quickly visualise a geometry.

Note - to display entire GeoJSON files MapServer can be configured to read GeoJSON as an input OGR source using the GeoJSON driver.

import geojson
import mappyfile
# import directly
import mappyfile_geojson
# can also be imported as plugin using
from mappyfile.plugins import mappyfile_geojson

gj = geojson.load(fn)
l = mappyfile_geojson.convert(gj)


  "type": "Feature",
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [ 102.0, 0.0 ],
      [ 103.0, 1.0 ],
      [ 104.0, 0.0 ],
      [ 105.0, 1.0 ]
  "properties": {
    "prop0": "value0",
    "prop1": 0.0


    EXTENT 102.0 0.0 105.0 1.0
    PROCESSING "ITEMS=prop0,prop1"
        ITEMS "value0;0.0"
            102.0 0.0
            103.0 1.0
            104.0 0.0
            105.0 1.0


An example of using the plugin with mappyfile can be found in along with an

A further example, creating images for each of the test cases using mapscript is available at

The sample output images are in the images folder.


  • Python 2.7 or Python 3.x
  • mappyfile (the plugin can be used on its own but will create a dictionary object structured to use within mappyfile). Installing mappyfile should be done separately.


Note installing the mappyfile-geojson plugin will automatically install the required dependency geoson.

pip install mappyfile
pip install mappyfile-geojson


  • Can calculate extent of input features, with an optional buffer (by passing an extent_buffer to the convert function)

  • Multipart features are supported

  • Coordinate sequences with Z values are supported, but Z values are ignored as they are not supported in Mapserver inline features.

  • As a MapServer LAYER only supports a single geometry type, all features in the GeoJSON file should also be of the same type (however a mix of multipart and non-multipart features is supported e.g. LineString and MultiLineString)

  • Nested JSON properties are not supported:

    "properties": {
        "prop0": "value0",
        "prop1": { "this": "that" }

    Will become:

    ITEMS "value0;{u'this': u'that'}"


0.3 (29/08/2018)

  • Add support for MultiPoint, MultiLineString, and MultiPolygon
  • Allow coordinates with Z values (previously these would crash the script)
  • Updated README

0.2 (15/02/2018)

  • Unicode support

0.1 (06/02/2018)

  • Initial release


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
mappyfile_geojson-0.3.0-py2.py3-none-any.whl (5.5 kB) Copy SHA256 hash SHA256 Wheel py2.py3
mappyfile-geojson-0.3.0.tar.gz (6.7 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page