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:
- A lightweight map widget, with a smooth navigation interface
- Map layers with interactive behaviors, like mouse selection or tooltip (mouseover) information
- Flexible query/extension mechanism
- Handy other services like map image export, and history navigation (undo/redo)
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
- A lightweight interactive map widget (Google Maps style), with its API
- Works great with the latest version of at least three web browsers: Firefox, Google Chrome and Internet Explorer
...and on the server side
- A set of classes that encapsulate higher-level map constructs
- Written in OS agnostic, 100% Python, running through WSGI and MapServer/MapScript
- New in version 1.1: a PHP alternative, sharing the same interface