Somebody’s Watching Me

Video not displaying? Click here:

Project Description


This project is a visualization of the 2001 - 2013 crime data in Chicago and includes 5,000,000+ entries. The ground plane uses images from OSG, Google, and Yahoo maps to see an overview of the city of Chicago. On top of the image maps are extruded polygons that represent the community areas of Chicago. These community areas contain crimes that are within their boundaries and their geometric representation’s height and color is a function of the number of crimes they contain. In addition, the CTA L lines and stations are displayed geometrically in the appropriate location relative to the ground plane maps. The community areas, crimes, and CTA data was downloaded from and were modified to be used in the program. Explanations of how the data was modified is in the Data Explanation section.

Overview Image


This project was built using omegalib and so inherits the ability to navigate space either with CAVE2’s tracked wand or the mouse if run on a computer. The omegalib menu was extended to include functions specific to this project:


CAVE2 has no problem loading all 5,000,000+ crime data entries. The Source Code is written to load all entries.


My laptop has a difficult time running the project with all 5,000,000+ entries loaded (requires about 2GB). For the purpose of testing / running on a computer, I placed a simple code comment at line 122. Uncommenting this allows a subset of the data to be used based on a simple conditional statement such as if YEAR >= 2011.

Data Explanation

Community Areas

The data for the community areas can be found here. I manually parsed the data to create a CSV and removed the interior geometry of one community area (it was the only entry that had interior geometry). The only information I retained from the file is the name and a set of latitudes / longitudes that describe the boundaries of each community area. This information was used to represent community areas as extruded polygons and triangularize surface geometry.

Crime Data

The data for the 2001 - 2013 crimes can be found here. This file is a CSV containing 5,000,000+ entries (1.15GB) so all modifications I made were done programmatically through a series of transformations:


This uses two files one for the CTA L Stations and the other for the Lines Connecting Stations. Both were manually parsed to create CSV files for displaying as geometry.


Source Code

All files needed to run the project

Open the Terminal, navigate to the downloaded directory, and type orun -s Being able to run this command requires omegalib to be installed and orun to be configured. As explained in Computer, there is a commented code section to use a subset of crime data if your computer has difficulty with 2GB memory usage.


This project makes use of omegalib and its modules to navigate and display geometry. It also makes use of a UTM module to convert latitude / longitude to meters.

Interesting Findings

The community area Austin has a lot of crime. When calculating the heights / colors of the communities based on the number of crimes I originally found the maximum number of crimes (under crime type and time index restraints) and calculated percent as:

percent = community[i].crimeCount/maxCrimes

Where percent was the normalized crime amount of a community. Austin so overshadowed the other communities that the other communities were almost completely white and had no height. I modified percent to use the square root of the community crime and maximum crime count as:

percent = math.sqrt(community[i].crimeCount)/math.sqrt(maxCrimes)

This significantly helped make crime comparisons among other neighborhoods possible however Austin still clearly has the most crime under almost all restraints.