Difference: DuckyInfoVisProjectProposal (7 vs. 8)

Revision 82005-11-04 - DuckySherwood

Line: 1 to 1
 
META TOPICPARENT name="DuckyInfoVisProject"

Ducky's InfoVis Project Proposal

Added:
>
>

Participants

Kaitlin Duck Sherwood, ducky@csDELETEthisTEXT.ubc.ca
 
Changed:
<
<

Participants

Only me, Kaitlin Duck Sherwood, ducky@csDELETEthisTEXT.ubc.ca

Description

I plan to show U.S. population density with a zooming/panning interactive display. I would use data derived from the 2000 U.S. Census.

I might need to restrict the dataset to some subset of the United States because of resource limitations. I am not Google, and cannot store as much data as I suspect would be necessary to provide optimal performance.

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

  • I believe that once I am able to display total population density, then it is relatively easy to extend the code to allow displaying one of many different flavors of demographic data, e.g. the non-white population. I would like to do that, think I can probably do it, but hesitate to promise it.
  • Allowing the user to select information from one of several different censuses is also clearly within the realm of imagination. I believe that this is slighly more ambitious (in part due to disk space limitations), and probably not within the scope of the class.

Personal expertise:

>
>

Experience

 
  • I did a project integrating maps, floorplans, and a virtual walkthrough about ten years ago at UIUC.
Changed:
<
<
  • I have investigated several maps/census schemes in the past 10 years, but never gotten past the exploratory stages.
>
>
  • I have been very interested in a related visualization of census data for 20 years. I haven't ever gotten past the exploratory stages, but this means I am highly motivated to learn how to unravel US Census Bureau datasets.
 
  • I have never written anything in Javascript before, nor any dynamic client-side code of any kind, but would like to learn.
  • I am not a graphics whiz. I am not sure what algorithms to use to select what data is likely to be visible. OTOH, I have Google and a copy of Foley and Van Dam within easy reach.
Changed:
<
<
  • This could be a really cool project.
>
>
  • Roughly eighteen years of industrial experience makes me anticipate and plan for unanticipated problems.
 
Changed:
<
<

Proposed solution

I plan to show U.S. population by rendering (on the fly, presumably) semi-translucent PNG images from the Census Bureau information that I would then overlay on Google Maps.

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 some caching and prefetching of data will be required.

>
>

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 zomming/panning controls and the context of a familiar map.
 

Scenario

Changed:
<
<
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 a what looks like a standard Google map of Palo Alto, CA. Palo Alto not being Rancho Cowabunga, he zooms out until he finds Rancho Cowabunga, then zooms back in.
>
>
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 a what looks like a standard Google map of Palo Alto, CA. Palo Alto not being Rancho Cowabunga, he zooms out until he finds Rancho Cowabunga, then zooms back in.
  Once he has zoomed in to the area he's interested in, he clicks the "Show population" checkbox. The map changes to have a translucent overlay over it. Areas with more people have more of a yellow tinge; areas with fewer people have a bluer tinge.

Billy uses the standard Google controls to move around, and the population overlay moves with the map. Billy is able to click-to-recenter, pan by dragging, pan by clicking on the directional controls, and zoom by clicking on the zoom controls. At every stage, the overlay pans and/or resizes to match the map.

Illustration

Changed:
<
<
The following is a fast and dirty mockup of what the result will look like:
>
>
The following is a fast and dirty mockup of what the UI will look like:
 
Changed:
<
<
Note that the labels on the bar will need to be adjusted once I figure out what reasonable values are. Also note that there will be areas with no people (e.g. big parks, the Stanford Industrial Park, commercial districts, the Bay, etc).
>
>
Note that the labels on the bar will need to be adjusted once I figure out what reasonable values are.

Also note that there will be areas with no people (e.g. big parks, the Stanford Industrial Park, commercial districts, the Bay, etc). I have left those clear.

 
Added:
>
>

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.

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.

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 optimal 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.

Line: 56 to 58
 
Deleted:
<
<

Milestones

 
Changed:
<
<
  • 4 November: Proposal
  • 16 December: Update due
>
>

Milestones

  • 4 November: Proposal finished
  • 13 November: One PNG file generated with one polygon extracted from dataset, requiring:
    • extracting polygons with the Shapefile C library
    • extracting the appropriate demographic data from the dataset with the Shapefile C library and the data files
    • associating polygon <->demographic data
    • understanding the gd library well enough to generate a PNG with a transparent polygon
  • 20 November: Functional panning, perhaps limited to one US state and perhaps slow, requiring:
    • determining which polygons will be visible given lat/long bounds
    • iterating through visible polygons, drawing each
    • plugging overlays into the Google Maps API
  • 4 December: Functional zooming
    • determining which polygons will be visible given lat/long bounds and zoom level
    • aggregating lower-level data (note that I do not think this is trivial)
  • 11 December: Performance tuning and bug fixes done, possibly requiring:
    • pre-processing census bureau data into a form that is easier to extract quickly
    • prefetching of neighboring overlays
    • caching previously-used overlays
  • 16 December: Status update due
 
  • 19 December: Final due date
Changed:
<
<
  • Explore different color bars in hope of finding something better
  • Find good shapefiles
  • Develop a simple test suite for PNG manipulation
  • Write code to create PNG from one known polygon extracted from shapefile; overlay on Google Maps
  • Write code to create PNG from several known polygons extracted from shapefile; overlay on Google Maps
  • Write code to create PNG from several known polygons, shaded with data from dBASE file; overlay on Google Maps

  • Given zoom level and map lat/long boundaries, figure out how to tell which polygons are visible
  • Write code to retrieve a polygon based on lat/long.
  • Write code to create PNG from lat/long boundaries at default zoom level
  • Figure out how to aggregate data from multiple polygons
  • Write code to aggregate data
  • Modify code to create PNG from lat/long/zoom data
  • Overlay images dynamically on Google Maps

  • (aggressive) Add sliders to allow changing the parameters of the image (e.g transparency, hue)
  • (aggressive) Add radio buttons to change data sets
  • (aggressive) Allow user to choose from several different years of data
>
>

Future work

There are all kinds of interesting and useful things that could be done on top of the base project.
  • I believe that once I am able to display total population density, then it is relatively easy to extend the code to allow displaying one of many different flavors of demographic data, e.g. the non-white population. I would like to do that, think I can probably do it, but hesitate to promise it.
  • Allowing the user to select information from one of several different censuses is also clearly within the realm of imagination. I believe that this is slightly too ambitious (in part due to disk space limitations) for the scope of the class.
 
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback