Dirkjan Ochtman: writing

Tracing a path

Published on 2012-11-28 by Dirkjan Ochtman in code

Two weeks ago, I posted a graphic showing a visualization of 2.5 years of my location data to my social media feeds. I wanted to jot down a few notes on how the plan to create this image came together.

A Google Latitude history visualization.

As I remember it, I saw similar locative art from some artist a few years ago. It was like the mapping work from Daniel Belasco Rogers, but I think it was done by a Dutch guy, with very sparse white maps with red lines, who had mapped several European cities (including Amsterdam). I spent a few fruitless hours last week trying to find the "originals" I remember; Mr. Rogers' is the closest analogue to the other guy's work I could find.

There's something about these maps that resonated with me: the patterns of a familiar city combined with the paved cow paths of a person's routine, seen from above, in an entirely different perspective. I soon decided I would like to build one of these from my own paths, but I didn't own a GPS device, and some idea of an "art project" certainly wasn't reason enough to buy one.

Fast forward through time, and we get smartphones with location sensors, Google's Latitude service, adding location history and a limited API (last 30 days of history only) soon after launching. The API was announced in May 2010; it might not be a coincidence that my Latitude history starts on 2010-05-20. Finally, Google's Data Liberation Front posted a short blog post last week announcing the availability of data dumps containing all Latitude data.

So after a few years of gathering data while waiting for devices and software to align, I could get to work. Drawing little dots onto an SVG canvas is actually very easy: the hard part was making up some heuristics to create a sensible bounding box. If the bounding box is too large, you get a large white space with a few clumps of dots in different places; if it's too small, you get a view of your home town with a whole lot of dots in it. I ended up implementing a slightly convoluted algorithm to measure the ratio of required surface versus the amount of points in it and taking a derivative from that line. I ended up with satisfactory results on my own data set, but I have no clue as to how robust the algorithm is.

Implementing an idea that's been kicking around for a few years is an (oddly?) satisfying experience. If you happen to be interested in this kind of thing, my code just needs a Python 2.7 environment. I'm not sure the resulting images would qualify as "art", but I'm happy with how this turned out.