Return to SE Firemap
return
return to main site

Skip to content. | Skip to navigation

Sections
Personal tools
You are here: Home Tools & Resources Extensions and Other Tools Open Source Web Mapping Tools

Open Source Web Mapping Tools

Introduction

In the last few years, we have witnessed a significant shift in approaches to creating geospatial applications. Organizations are moving away from monolithic, desktop-only applications based on proprietary software and embracing modular applications, based on open source software, which aim to support a wider set of devices and operating systems. This document provides an overview of some of the popular options for these architectures and describes the functionality and relative strengths of each. We have divided this document into two sections, one for component products, and another for “stack” products which provide pre-configured integrations of these tools with some of the heavy lifting done for us.

Visit our Open Source GIS Portal Conservation Design

 


Component Products

This following products are generally intended to be used as modules, and combined together with other tools in various combinations to create custom applications.

 

MapServer
MapServer is an open source platform for publishing spatial data and creating interactive mapping applications to the web. It has been in existence since the mid 90’s and is recognized as mature and stable, with ongoing active development. Its primary focus is producing maps from multiple layers including base imagery and spatial data sets. It also provides intelligent labeling with advanced typography and layout including collision-detection. It can read and serve spatial data in a variety of formats including Shapefiles, WMS, GDAL, PostGIS, and GeoTIFF. It is often used to produce map tiles along with its MapCache extensions. It has libraries that enable application development in a variety of languages including Python, Perl, Ruby, Java, and PHP.

 

PostGIS
PostGIS is an extension for the PostgreSQL database, which enables spatial queries. PostgreSQL is both a relational and object database, and is widely recognized as the most advanced open source database available, on par with Oracle and MS-SQL. PostGIS supports a variety of spatial queries including proximity, radius, bounding box, collision/overlap detection and more. It is highly useful tool that is frequently used in web GIS projects.

 

OpenLayers
OpenLayers is a front-end UI library for creating web-based spatial apps using javascript. It supports a variety of layer sources and backends. For example, map tiles can be pulled from GoogleMaps or from a custom tile source. The advantage this brings is that it enables developers to reuse elements such as tile sources, and focus instead on the more unique aspects of their application such as the “business logic”. Default components such as tile sources can easily be swapped out at a later time. It supports bitmap and vector layers, including points, lines and polygons. One of its most widely used features is the ability to overlay data layers on top of base maps.

 

GDAL (Geospatial Data Abstraction Library)
GDAL is a translation library for geospatial data formats. It enables import and export of a very large variety of file and encoding types. It can be used to transform spatial data between different projection systems. Raster data formats are handled by GDAL, and vector data formats are handled by OGR, which is now included with GDAL. It can also be used to create mosaics from multiple image file sources. GDAL is a valuable tool for taking data from disparate sources and converting them to work together.

 

TileMill
TileMill is a desktop application that is used to generate map tile images which are then hosted as static files for use as base layers. TileMill can be used to create base layers which are visually stunning. It has a strong emphasis on aesthetics including many well-thought-out presets which enable people without a background in design to produce very attractive and professional map layers. TileMill’s development is lead by a company called MapBox. They offer several attractive paid services including tile hosting and an excellent collection of curated and highly-tuned base layers.

 

Leaflet
Leaflet is a Javascript library with a strong emphasis on front-end UI. It supports an diverse mix of base layers and geometry types. It covers somewhat similar territory to OpenLayers, but with a slightly reduced feature set. It’s advantage relative to OpenLayers is its outstanding support for mobile devices, great production values, clean minimalist design, and a strong emphasis on performance.

 


Stack Products

The following products are distributed as “stacks” or “bundles”. They are pre-configured combinations of modular products. Some can be used as-is (after adding configuration and base layers) and all of them can be further extended to create custom applications.

 

GeoServer
GeoServer is primarily based on the Java language. It provides basic functionality for creating and editing geospatial data and making maps available in a service-oriented architecture. It uses the OpenLayers module and provides and implementation of the Web Map Service (WMS) standard. It also makes use of the GeoTools framework, which covers a slightly smaller subset of MapServer’s functionality. Like GeoServer itself, is written in Java. It will appeal largely to developers already working with Java- based tools and platforms.

 

MapGuide
MapGuide is a full-featured web-based GIS application, primarily written in PHP and Javascript. It includes an AJAX-based application UI for viewing and creating maps and data layers. It supports an impressive range of layer formats including ESRI SHP, SDF, ESRI ArcSDE, PostGIS, SQL Server Spatial, Raster file formats (via GDA), OGC, WMS and WFS. It also makes use of the OpenLayers toolkit and supports custom application development in PHP and Java. It will appeal primarily based on its support for various input formats, out-of-the-box editing tools, as well as to developers already working with PHP.

 

GeoMoose
GeoMoose combines several popular open source libraries to create a powerful and flexible mapping platform, with emphasis on Javascript/AJAX on the front-end. It uses MapServer as a back-end and OpenLayers and Dojo (both Javascript-based) for its user interface. It provides a robust set of tools for viewing, editing, and querying data from the browser. Its development community seems to be very active and have a good forward trajectory. Its appeal comes from its feature set and its modern, approachable UI. Its well-documented Javascript APIs will make it approachable for both Javascript developers and other web builders, as most web developers have at least some exposure to Javascript.

 

GeoDjango
GeoDjango is a set of spatial extensions for the Django application framework. Django is written primarily in Python and is one of the most popular general-purpose frameworks for building web apps with Python. Unlike GeoMoose or MapGuide, it does not provide an application out of the box, and is rather a set of very nicely crafted building blocks for building custom applications. Unlike some of the other stack products described above, it makes less assumptions about which other geospatial tools will be used in the stack, and provides integration points through a series of clearly-designed, well-documented APIs. It will likely appeal to developers who want more choice and control in the building of their applications as well as those who prefer the Python language.

 

MapFish MapFish is another stack product from the Python community. It is based on the (Python-based) Pylons framework, as well as (Javascript-based) OpenLayers and ExtJs frameworks. Unlike GeoDjango, it provides a simple application out-of-the-box, which can be customized and extended. It also supports development in Rails and PHP via plugins. Its appeal is based on the fact that it provides a clean, compact starting point, that can be easily extended in a variety of languages. Its trade-off relative to GeoDjango is that it makes more choices for the developer, so makes getting started a bit faster. It will likely appeal to developers who have Python or Javascript experience, as well as Rails/PHP developers who value its clean, compact design.