Project Status Report – What is MapServer? – MapServer History

Project Status Report – What is MapServer? – MapServer History

0 1


MapServer Project Status Report presentation at FOSS4G-Europe 2014

On Github Schpidi / foss4g-e_2014_mapserver_project_status_report

Project Status Report

FOSS4G-Europe 2014 - Bremen - 2014-07-15

Stephan Meißl @Schpidi

Thomas Bonfort @tbonfort

 This work is licensed under a Creative Commons Attribution 4.0 International License.

Good morning everybody.

For those who don't know me already, my name is Stephan Meissl, I made my first steps with MapServer back in 2002, became committer in 2011, and last year the honor of being elected to the PSC. Co-founder of EOX in Vienna, Austria.

Thomas, probably the currently most active MapServer developer, originally planned to be here but unfortunately couldn't make it.

What is MapServer?

  • Open Source platform for publishing spatial data and interactive mapping applications to the Web
  • MIT-style license
  • Runs on all major platforms (Windows, Linux, Mac OS X)
  • OSGeo project

MapServer History

  • 1989-90: Tim Berners-Lee invents the World Wide Web
  • 1994: Steve Lime implements Web-based Arc/Info AML generator
  • 1995: NASA Fornet project ⇒ imgserv
  • 1994-95?: Frank Warmerdam releases Shapelib
  • 1996: Shapelib + GD ⇒ mapserv
  • 1997: v1.0 (limited sharing)
  • 1998: v2.0 via Fornet website
  • 1999: v3.0 via UMN MapServer website
  • 2000: Daniel Morissette joins development ⇒ Need for distributed collaboration tools (CSV, Bugzilla, Wiki)
  • 2000+: Further contributors start joining quickly
  • 2000: v3.1 including MapScript
  • 2001: PostGIS support by Paul Ramsey in v3.6
  • 2002: GRASS Users Conference - Trento
  • 2003-05: Yearly MapServer Users Meeting (MUM) (Minneapolis, Ottawa, & Minneapolis)

Steve and Daniel meet for the first time after working together for over 3 years

  • 2005: MapServer Book by Tyler Mitchell
  • February 4, 2006: Foundation of OSGeo MapServer is among eight founding projects
  • 2006+: FOSS4G Conferences (Lausanne, Victoria, Cape Town, Sydney, Barcelona, Denver, Nottingham, and Portland)
  • 2009+: C Tribe Code Sprints (Toronto, New York, Montreal, Island Wood, Boston, Vienna)
  • 2011: v6.0
  • 2012: Addition of TinyOWS & MapCache ⇒ MapServer Suite (v6.2)
  • 2013: v6.4
  • 2014: v7.0
  • 20th anniversary


  • ~150k Lines Of Code
  • ~30 committers
  • Mailing lists
    • -users ~1800
    • -dev ~400
  • International PSC
    • 14 members
    • NA: 9 (US: 5, CA: 4)
    • EU: 5 (FR: 2, IT: 1, AT: 1, HU: 1)
  • 110 RFCs

MapServer 7.0

  • Main new features
    • UTFGrids
    • WFS 2.0
    • Heatmaps/Density Maps
    • Javascript/V8 StyleItem/Geomtransform
    • Unification of attribute/geometry filtering
  • Others
    • Text rendering re-factoring
    • GD Removal
    • Removed BITMAP labels
    • Layer Level Encoding
    • WCS 2.0 extensions


  • Specification by MapBox for vector tiles
  • Implemented in a "Google Summer of Code" project
  • Interactivity important (rollover, events)
  • Supported by OpenLayers
  • Not yet supported in MapCache

WFS 2.0

  • Download Services for INSPIRE


  • Vector to raster processing pipeline
  • Interpolation and rendering parameters
    • Automatic scaling
    • Interpolation in color spaces RGB/HSL
    • Weighting per attribute/expression
  • Supports tile mode

Interpolation in HSL color space

Interpolation in HSL color space

Interpolation in RGB color space

Pure density

Setting a fixed scale

Javascript (V8) StyleItem/GeomTransfom

  • Integration of the V8 JavaScript engine
  • Style geometries/features programatically rather than through class expressions
  • "Experimental mode": backward compatibility not guaranteed
    STYLEITEM "javascript:///path/to/my/file.js"
    CLASS # empty class required
//Make symbol size 14 or 7
  var size = shape.attributes.NAME.length > 10 ? 14:7;

  var style = "STYLE SIZE " + size;
  style += " SYMBOL 'circle'";
  style += " COLOR 255 0 0 END";

  //Return style to MapServer

Unification of attribute/geometry filtering

  • Currently filtering done by MapServer
  • PostGIS, Oracle, OGR support native spatial filtering e.g.
where st_intersects(the_geom, st_geomfromtext('wkt...'))
Significant performance gain particularly in WFS queries Simpler to use Currently blocking release of version 7.0

Text rendering re-factoring

  • Before naive implementation duplicated for each back-end
  • Integration of Harfbuzz library
  • Supports complex text layout e.g. for Arabic text
    • Unprocessed characters
    • With bi-directional processing
    • With glyph shaping rendering letters according to context
  • Barely visible to the end user, but
    • Exact label placement (alignment/centering/letter spacing of text)
    • Possibility of using one font per language

Improving performance

Example Malayalam

Example Tibéto-Birman

GD Removal

  • Added back in 1995
  • Too high maintenance costs despite its usefulness in certain niches
  • Automatic fall-back to AGG + 8bit

Removed BITMAP labels

  • Truetype font included by default now
  • Supports many glyphs without external dependencies
  • A few use cases are not supported
  • Automatic fall-back in place

Layer Level Encoding

  • Solves encoding handling problems e.g. data sources in multiple encodings in a single mapfile
  • Data sources internally converted to UTF8
  • The mapfile has to be encoded in UTF8 now
  • All output generated by MapServer in UTF8

WCS 2.0 extensions

  • Officially released beginning of the year
  • Passes all available CITE tests
  • Official OGC WCS 2.0 Reference Implementation

Documentation translation

  • Started to use transifex for simple collaboration
  • Attract further translations


  • REST Back-end
    • Support GET/PUT/DELETE for storing tiles
    • Authentication/authorization plug-ins for S3, Azure, and Google Cloud Storage
    • Costs highly depend on the use case (number of applications, bandwidth)
  • TIME animations
    • Extend existing TIME support
    • Mode "animation"
    • Animated GIFs for now, video formats possible

How to Contribute?

  • Users
    • Beta and release candidate testing
    • Bug reports on Github, including test cases
    • Documentation (wiki, transifex, Github pull requests)
    • Answers on the mapserver-users list and IRC
  • Developers
    • Bug fixes/patches
    • New features
    • Binary builds

Project Status Report

FOSS4G-Europe 2014 - Bremen - 2014-07-15

Stephan Meißl @Schpidi

Thomas Bonfort @tbonfort

Special thanks to Daniel Morissette for his help with the MapServer history slides

 This work is licensed under a Creative Commons Attribution 4.0 International License.

Let's keep up the good work.

MapServer and the OSGeo community have revolutionized the field of GIS...

and you are all part of that revolution.