Ducky's InfoVis Project Proposal


Kaitlin Duck Sherwood,


What does this thing do?

Domain, task, and dataset

This project is designed to help people visualize US population data (from the 2000 US Census) by providing them with interactive zooming/panning controls and the context of a familiar map.

This project does not pretend to push the frontiers of research adequately to eject a publication. This project is designed to do something cool and useful.


Billy Rubin, a fifth-grade student at Rancho Cowabunga Middle School, is exploring population density as part of his urban housing presentation. He goes to Webfoot's Information Visualization site and is presented with what looks basically like a standard Google map of Palo Alto, CA. Aside from explanatory text on the page, the only differences are a checkbox labeled "Show Population" and a color scale legend.

He clicks on the "Show population" checkbox below the map. The map changes to show the population: areas with fewer people have more of a yellow tinge; areas with more people have a bluer tinge. Areas with no residents -- industrial parks, water, recreational preserves, etc. -- have no tinge.

What Billy sees is in the left panel of this table:

Welcome to Webfoot Maps

blah blah blah explanatory information

blah blah blah copyright and how-this-was-made information blah blah

(Note that the labels on the color scale legend will need to be adjusted once I figure out what reasonable values are.)

Palo Alto not being Rancho Cowabunga, Billy uses the standard Google controls to zoom out. As he zooms out and individual polygons at one level become too small to see, the polygons get aggregated into larger polygons.

Billy pans to find Rancho Cowabunga using the standard Google controls: click-to-recenter, pan by dragging, and pan by clicking on the directional controls. The map continues to show areas colored by population density.

Once Billy finds Rancho Cowabunga, he zooms in. When the polygons at one zoom level become too large to be interesting, they automatically deaggregate into smaller polygons.

At one point, he gets a little confused about what is on the map and what is part of the population overlay, so he unchecks the "Show population" box. The overlay vanishes, and his confusion is resolved.

How will I make it?

Proposed solution

I will show maps with the hue of polygons on the map representing the number of people living in that polygon as counted by the 2000 US Census. I will provide context to the users by making the polygons translucent, leaving the underlying map data discernible.

I am more interested in providing (and more worried about) snappy performance than I am in broad geographical coverage. There are numerous opportunities for the performance to be inadequate. Determining the right data to display for a given clipping region, retrieving the information, aggregating information (when zoomed out), rendering the PNG image, and serving the image all take time (in addition to the time Google takes, which I won't be able to control).

I expect that I will need to trade disk space for speed, pre-processing information and caching some information on disk. As my last name isn't Google, I expect that I will not have enough disk space to handle all of the United States. I am willing to restrict the geographic range in order to ensure adequate performance. If I need to restrict the area of interest, my final paper will discuss what resources would be needed for the entire US.

Implementation approach

I plan to use Javascript and the Google Maps API to serve maps, capture pan/zoom events, and to overlay area data on top of the Google Maps.

I plan to use the gd library, probably in C or C++, to generate a transparent PNG image to overlay on top of the maps.

I plan to use C or C++ with the Shapefile C library to parse a variant of the TIGER/Line data -- the ESRI shapefile data -- which includes population demographic information.

If I need to use a database, I will use MySQL.


Future work

There are all kinds of interesting and useful things that could be done on top of the base project.