Usually we try to keep the nerd talk to a minimum, but last week we released our first "Map of the Week" with Slate.com, and we got a few questions about the tools we are using to build and present our maps. So what follows is a quick tour of our map stack.
The first thing to point out is that we are using all open source tools. In general, we are fans of using the best tool for the job, and also of pushing open technology whenever possible. In this case, the two worlds overlap very nicely. Second, many of the tools we use are being developed by the amazing people at MapBox. If you are interested in the future of mapping, check them out.
Ok, on to the list...
Our desktop GIS system is Quantum GIS. With QGIS we can perform all our necessary spatial data processing, including table joins, spatial joins, attribute manipulation, classification, and data export. QGIS is capable of the basic spatial analysis you would expect from a desktop GIS, and you can extend this functionality through third-party plugins. New America has taken advantage of ESRI's non-profit discounts to purchase an ARCInfo Bundle as well, but to date QGIS gives us all the GIS capability we've needed to produce custom spatial data.
TileMill is described as a design studio for maps. In TileMill you can layer, style and create interactive spatial data. TileMill is not a full-fledged GIS, rather, TileMill is designed to style and compose interactive maps by using existing spatial data. Usually we do the bulk of our data processing in QGIS then bring it into TileMill. You can input different data formats into TileMill including shapefiles, ZIP files, CSV files, SQLite, and PostGIS databases.
The styling in TileMill is done through use of the Carto styling language. Carto's syntax is similar to CSS which makes it easy for anyone familiar with web design to pickup. Once your maps are styled you can use TileMill to export them in several different formats, including MBTiles. The MBTiles format is essentially tiled map data stored in a SQLite database. Because your data is tiled you can create complex and data-heavy maps that render quickly in web browsers.
To present our tiled maps we use MapBox hosting. MapBox hosting is built on the open source tilestream application and allows you to publish individual sets of tiles which can then be embedded in any web page. You can use either a basic iframe embed or access tilesets through a JSONP url. The latter option is used with a client side mapping library, such as Wax, to present your maps with custom tools and styling. Using the iframe embed is useful for posting maps to blog posts or simple html pages. MapBox hosting also allows you to create composite maps using multiple layers of tiles. You also get statistics on your tilesets so you can evaluate how often your tiles are accessed and since the statistics are tile specific you can see exactly where users interacting with your maps the most.
We use Wax with modest maps for our custom map interfaces. This allows us a lot of flexibility in terms of styling and how we present our content. For example, in our Debt in the Eurozone map we customized Wax to build a microsite around our map. We created a full page template and customized the tooltips to show below the map with an interactive chart. For our work with Slate we are using Wax with custom CSS and a bit of JavaScript to create a custom Wax map interface with a Flot chart.
One of our main charting tools is Flot. Flot allows us to embed interactive and dynamic charts on our map pages. We use Flot in combination with Wax and MapBox to produce charts that interact with our maps, just like the one in our "Map of the Week".
Those are the basics. If you've got questions or comments feel free to drop me a line on Twitter.