Dracones is a MapServer-based web mapping framework, written in Python, PHP and JavaScript, and DraconesPH is a public health surveillance application that was built using it. Both are being developed at the McGill Surveillance Lab, and are available as open source.

DraconesPH: a Surveillance Tool for Public Health

DraconesPH is a surveillance web application, built using the Dracones framework, and currently in use at the Direction de santé publique de Montréal (Montreal Public Health). You can learn more about it here.

Dracones: a Web Mapping Framework

While creating a web mapping and GIS application for public health, we spent a good deal of thinking about the design and implementation of certain core components:

The main idea behind Dracones is to provide a set of higher-level MapServer abstractions and services, with which it becomes easier to build complex, interactive mapping applications. The goal is not however to hide or replace MapServer in any way, as its full feature set is easily accessed via the underlying mapfile or Python/PHP MapScript interfaces. Thus Dracones can be seen as a thin layer above MapServer, organizing and simplifying some of its usage patterns.

Dracones works by encapsulating map and layer objects, from which follows a seamless API to interact with them, as well as an extension mechanism to implement custom behaviors or extend existing ones. In a MS mapfile, a layer object can be many things: a database record with a geometry field filtered by a query, a shapefile polygonal region selected (highlighted) with an expression, a shape drawn programmatically on a layer, etc. Dracones provides a simplified interface to all of these, allowing to work on certain attributes (selection, visibility, etc.) in an easy way.

Dracones on the client side

...and on the server side

To learn more, here are some examples and tutorials, to give you an idea of how it works.