I have almost a year's worth of GPS track logs. I'd like to be able to automatically split them by trip type (walking, biking, car) and filter out some of the noise that gets generated when leaving the GPS on while stationary.
Over the past several months I've been using my GPS to track where I go. The raw track logs I get are generally pretty accurate, but often while I'm out I'll switch back and forth between walking, biking, and the car/bus/train. My GPS unit (Garmin 60CSx) doesn't generally split tracks when I change modes of transportation. Also, sometimes I forget to turn the GPS off when I'm inside or standing still; because the GPS isn't 100% accurate, this creates a noisy track that looks like random wandering around the same point.
Given a list of tracks in GPX or some other standard format that's supported by
gpsbabel, I'd like to be able to take each track and break it at each point where my average speed changes by a certain configurable threshold. I'd also like to be able to detect when I've stopped somewhere and remove all points that were generated while I was stopped.
I've hacked together something in Python that works on a rudimentary level (the
geolocator library has been especially helpful), but it's not perfect. I also haven't implemented anything that gets rid of the random wandering. I could probably figure out how to do this, but it occurred to me that this is probably a solved problem and that I could save time by not re-inventing the wheel.
Does anyone know of any software with intelligent track splitting and noise removal? Previous questions have mentioned
GPS TrackMaker, but it doesn't seem to meet these requirements. Failing that, algorithms or pseudocode would be helpful as well.
To get rid of the random junk, I would try measuring distance travelled vs. total movement. If, in a set of 10 readings, you move a total of 100 m (1 to 2, 2 to 3, etc.), but the actual distance between reading 1 and reading 10 is only 3 m, it's probably random inaccuracy.
posted by pocams at 5:39 AM on March 18