This Christmas I decided to attempt to Map Atlanta's Crime using freely available data from the Atlanta Police Department. This was an effort to test the capabilities of our most recent release (Mogadishu), which include:
KML/KMZ Overlays
Statistics
Theming and more
This installation would also be a true test of how much data the Ushahidi platform could really handle. The Atlanta metro area had about 30,000 crimes reported in 2009 alone, and the question was if we could visualize this data using our platform in a useful way. Here are some of the lessons I took away from this particular project:
Mapping: Clusters
Traditionally we've passed the task of clustering the map data on to the users browser via javascript, however this is only useful if you have a thousand or less map points. Even then you can feel the browser groan under the pressure of calculating what point is close to what then placing it on the map. Immediately it is evident that clustering map data points using javascript is not possible and would have to be done on the server using what is known as 'Distance Based Clustering', which is basically grouping reports based on their proximity to each other. There are various methods of doing this which include using the Haversine Formula, the Euclidean distance Formula, or the Manhattan Distance (also known as the Taxicab Geometry). I opted for the latter - which is not very accurate, but creates clusters at the least cost to the server. Since clusters represent a general area, absolute accuracy is not required. I also have to give credit at this point to Mika Tuupola for his good pointers derived from his experience with map clustering.
Mapping: Layers
Adding other layers to the map allows you to combine and visualize multiple data sets at the same time, which can lead to interesting revelations. In this installation, I included the Atlanta PD zones, and Sex Offenders. I'll probably be adding more layers as I gain access to the data. While working on project I came across a Batch Geocoder that is incredibly useful for making datasets mappable.
Grouping Items
One functionality that we may have forgotten to mention regarding the Mogadishu Release, is that it gives you the ability to group related categories as illustrated above - something that was quite handy in this installation to group different types of crime.
Proximity
Finally, I realized it might be important to list reports happening near a specific address and order them by distance from the point.
Please click below to view the work in progress: