Obama Campaign - Mapping voters with Mapserver, PostGIS and Openlayers
US Presidential Election 08
Some months ago I was lucky enough to secure a couple of small contracts with the Obama for America Campaign to support their general effort and the work of the field organizers by implementing some web mapping capabilities. After some phone discussions with the Obama Technology team it actually was not hard to convince them to go the open source route and setup a server on Amazon EC2. We took an existing Ubuntu-based server image that included most of the Open Source GIS stack already (many thanks to Josh Livni of Umbrella Consulting who created the public image and who also has instructions on his website on how to set this up quickly: http://os.umbrellaconsulting.com/wiki/AmazonEC2).
The EC2 server was running on an Ubuntu operating system, Apache 2 HTTP Server, PHP server side scripting, PostGIS spatial database, OpenLayers as a map viewer, and UMN MapServer in CGI mode as the map rendering engine. The goal was to support the field work of organizers in up to twenty battleground states, and to scale the application vertically in case that was needed. We initially setup an application for the state of Indiana as a template that could be used as a model to build similar applications for other battleground states to follow. A couple of million geocoded voter records were uploaded into PostGIS and could be accessed in the OpenLayers based viewer as a MapServer point layer on top of a selection of commercial background layers (such as Goggle satellite images, street or terrain layers, or Yahoo street layers). A variety of base layers, such as county and precinct boundaries, along with daily changing information on voter related ratings (as a transparent polygon layer on precinct level) were made available and could be draped over the background layers. Performance of this “all on one server setup” was reasonable, given that of approximately two million (color coded) voter points in the PostGIS database, only a portion would be displayed on high zoom levels. This approach worked really well for the campaign and later was rolled out for about a dozen battleground states.
Another small tidbit of work involved setting up a tool for assigning a list of voters to an specific organizer to contact for campaigning purposes. The setup included a tool for digitizing polygons in the OpenLayers viewer (which is standard functionality) and customization of the tool in such a way that it allows the selection of all voters located within the digitized area via a simple spatial SQL query using PostGIS to perform a point-in-polygon query. Subsequently an update of a column in the database with the name of an organizer would be triggered by the tool and a second tool would enable the export of the respective voter lists from the database via PHP to text files for download.
From a technology standpoint the whole project was a pretty simple use of interoperable and readily available OS geospatial software components: it also illustrates how powerful those combined components can be, even with minimal customization and on a low budget - as long as the correct data is available and there is an energetic field organizer team behind it. Last but not least I wanted to mention that if this work contributed its small bit to winning this crucial election I am really more than happy.
Congratulations to the Obama Campaign! I can’t wait to experience some mindful changes to become reality…