Friday, May 16, 2008

DemographicMapping

I've been working on a very cool little application at work over the past few days. It is a mapping application leveraging the Yahoo! AS3 mapping API in Flex 3. We needed an application to be able to view a regional snapshot of our account activity over a given time period. We new the following data:

  • account address
  • account value
  • age
  • gender

First had to get the geocodes for all the addresses but found plenty of places to do that. So, here we are with a spreadsheet of almost 5,000 people and couldn't find an easy to use online application to display them.

Enter Flex.

I built the application in Flex 3 using Yahoo!'s api. It was a fairly easy workflow with the Yahoo! classes. Although, I would have liked to have seen the code for the classes from Yahoo! to see how some things were put together that I was extending. The plotting of the points was straightforward but kind of cluttered when you have so many of them in a small area.

Enter filtering.

I created a way to filter by general region of the globe, gender, age, and account value. This helped to narrow down the field of view quite a bit, but there was no way to direct focus on a particular are of the map - no way to see all of the accounts in Chicago for example.

Enter Zones.

At any time you can drop a 'zone' on the map. What the zone does is aggregate the data in a given geographical radius from the center of the zone. This way, you can explore the details of an area and have a summary of what's going on in the area. The zone becomes active after it is dropped and moved or it's size adjusted.

After the completion of the web based app, I decided it would be valuable to create an AIR version. This way, the data could be swapped out for a new data set by simply selecting a new document. I used a tab deliminated text file for the data source but that could easily be swapped out for another format later. I was considering releasing it as a public application at some point and adding customization features like:

  • select a data file and choose what columns to plot data against
  • customize the filtering based on the data
  • customize the zone details based on the date
  • save the 'file settings' as a favorite for recall later or to use with multiple files of the same format
Anyway, fun stuff and very valuable for what we needed!