As the amount of available technology increases so does the amount of available data. Of this newly available data, much of it is concerned with two major questions:
The ability to associate data throughout time and space has allowed the development of applications that can make informed decisions based on someone’s position at a particular time. These machine-made suggestions can be as commonplace as what route to take home during rush hour from applications such as Waze or Google Maps, or as seemingly complex as deciding where to get brunch by typing something ridiculous like “open breakfast diners with really big omelets near me” into a search engine on your smartphone. Machine made decisions like this are made possible by the growing amount of geospatial data, i.e., information that is related to a specific location. The problem that we face now is not where to get the data or even how to store it necessarily, but rather how to visually represent this large amount of data in a meaningful way. This is where clustering comes into play.
Clustering geospatial data is not a new concept. It has been used in GIS related fields for centuries for reasons such as Dr. John Snow’s method to track cholera outbreaks in the mid 1800’s to modern day classification algorithms used in image analysis. However, as developers, one of the challenges we face is when and how to actually cluster the data we have. Plenty of libraries and modules exist that will take your data into a black box and spit out some clustered objects, and these work phenomenally under certain conditions. For example, if you don’t have a terrible amount of data, say just a few thousand objects, or if you don’t mind handing your data over to a third party via a webservice then these are great options. On the other hand, if you’re dealing with millions of objects or points you probably won’t be able to, and won’t want to, do heavy processing with them on the client. This is where LightCluster comes in.