MARPLOT: Building a Desktop GIS for Emergency Response from FOSS Components


MARPLOT ( is a general-purpose GIS designed for emergency responders and planners, and it serves as the mapping component for a suite of software called CAMEO developed jointly by the National Oceanic and Atmospheric Administration and the Environmental Protection Agency. MARPLOT has a sizable user base with over 20 thousand downloads in 2015. The program's core audience presents a challenge, because MARPLOT needs to be able to work offline in an emergency situation where internet may not be available. At the same time, MARPLOT needs to be able to take advantage of modern web technologies and to be designed in such a way that a future version of the program could be deployed as a multi-user web application.

The MARPLOT program was first created in the early 1990s, and it has undergone many revisions in the years since then. This talk will discuss the program's latest incarnation, the MARPLOT 5 series, which entailed a complete rewrite of the code using many FOSS components and a new GUI based on user-centered design principles. Program features include supporting large numbers of objects on each layer, layers with heterogeneous object types, many file types supported for import and export, customizable legends and on-map annotation boxes, flexible per-object graphics settings, a wide variety of data-based and distance-based searches and polygon constructions, support for a large number of raster maps formats, support for WMS layers, intuitive management of downloaded tiles for offline use, full-session undo/redo, and touch-screen operability.

MARPLOT is structured as a client-server application, with both the client and the server running on the user's machine (both Windows and Mac are supported). The client is based on the Chromium Embedded Framework (itself based on Google's Chromium project), which provides a guaranteed compatible and fast embedded browser, instead of relying on whatever browser is installed on the system. The client uses OpenLayers 3, jQuery, and a large number of smaller FOSS JavaScript libraries.

The server is notable in that it is written "from scratch" instead of relying on MapServer or another GIS server engine. It is written in Python and C++, using the CherryPy web server, with various higher level functions in Python and using a C++ Python extension for the many parts of the program that need to be fast even for millions of objects (drawing, searching and sorting, importing and exporting). The C++ code makes use of many FOSS components, including the GDAL library for raster file access, the GEOS library for polygon construction, and the POCO libraries for handling cross-platform files and paths, XML, and JSON. The C++ code also uses the CImg library (with a number of custom modifications) for drawing the user data on tiles.


Session details
Schedule info
Session Time Slot(s):
Tuesday, May 3, 2016 - 17:20 to 17:35


I would go with Kathi and move this under Gov't - but - awesome because FOSS4G needs more emergency centered talks.