MapServer

Project Status Report

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


Stephan Meißl stephan.meissl@eox.at @Schpidi

Thomas Bonfort tbonfort@terriscope.fr @tbonfort


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

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.org

MapServer History

  • 1989-90: Tim Berners-Lee invents the World Wide Web
  • Tim Berners-Lee
  • 1994: Steve Lime implements Web-based Arc/Info AML generator
  • Steve Lime
  • 1995: NASA Fornet project ⇒ imgserv
  • 1994-95?: Frank Warmerdam releases Shapelib
  • Frank Warmerdam
  • 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)
  • Daniel Morissette
  • 2000+: Further contributors start joining quickly
  • Further contributors
  • 2000: v3.1 including MapScript
  • 2001: PostGIS support by Paul Ramsey in v3.6
  • Paul Ramsey
  • 2002: GRASS Users Conference - Trento
  • GRASS Users Conference
  • 2003-05: Yearly MapServer Users Meeting (MUM)
    (Minneapolis, Ottawa, & Minneapolis)


  • 2005: MapServer Book by Tyler Mitchell
  • Tyler Mitchell MapServer Book
  • 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)
  • FOSS4G 2006 FOSS4G 2007 FOSS4G 2008 FOSS4G 2009 FOSS4G 2010 FOSS4G 2011 FOSS4G 2013 FOSS4G 2014
  • 2009+: C Tribe Code Sprints (Toronto, New York, Montreal, Island Wood, Boston, Vienna)
  • C Tribe Code Sprint 2010 C Tribe Code Sprint 2011 C Tribe Code Sprint 2013 C Tribe Code Sprint 2014
  • 2011: v6.0
  • 2012: Addition of TinyOWS & MapCache ⇒ MapServer Suite (v6.2)
  • 2013: v6.4
  • 2014: v7.0
  • 20th anniversary

Statistics

  • ~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

UTFGrids

  • 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

HeatMaps

  • 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
  • 
    LAYER
        ...
        STYLEITEM "javascript:///path/to/my/file.js"
        CLASS # empty class required
        END
    END
                                
    
    //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
      style;
                                

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
    • Complex text layout
    • 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

MapCache

  • 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
MapServer

Project Status Report

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

schpidi.github.io/foss4g-e_2014_mapserver_project_status_report


Stephan Meißl stephan.meissl@eox.at @Schpidi

Thomas Bonfort tbonfort@terriscope.fr @tbonfort

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


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