[GIS] Is dynamically generating Choropleth maps a solved problem

dynamicopenlayers-2thematic mapweb-mapping

I am trying to work out what mapping tools I would need to use to dynamically create Choropleth maps from our data.

I am working on a project where the back-end is a big database of statistics, and the front end is various dynamically-generated presentations, from graphs to maps.

For example: If we had population statistics, we would want to be able to display them a little like this: http://crschmidt.net/mapping/choropleth.html or this: http://indiemaps.com/blog/2012/04/introducing-openlayers-symbology/ (although the examples for that library aren't working in my browsers).

Those are entirely in-browser: they take a GeoJSON file and adds it as a layer to OpenLayers. But it looks doubtful how responsive that can be: you seem to end up with either a fairly simple map which doesn't withstand zooming to country level well or a very large GeoJSON file. So I wonder if it is necessary to have some kind of server (MapServer?) dynamically generating map views at the requisite level of detail?

The locations in a dataset could be every country in the world, every country in a continent (or club, like OECD), or sub-national administrative areas. Ideally, as a version 2 aim, we want to be able to zoom in and out from world to sub-national level, as the project is all about providing more context for data.

EDIT: the Thematic Mapping API (http://thematicmapping.org/api/choropleth.php) looks like a solution but requires a browser plugin or KML viewer. We are looking for an in-browser solution.

So: Is dynamically generating Choropleth maps a solved problem? Is there a standard approach or library? If not, can you suggest a sensible angle of attack? I'm new to GIS and still reading in.

Best Answer

Is dynamically generating Choropleth maps a solved problem?

No. The in-browser examples you point to use simplified shapes for the world's countries. This fits into most browser's processing and memory constraints. If you were to make a choropleth of, for instance, census blocks, every browser would crash. The geographic data matters.

There's no standard approach; there are many, many tools to do this. Tiles if you need a ton of places, vectors if you need a few and they are simple. The 'joining with data' problem is very unsolved because data equates to a thousand formats and schemas.