Hi all,
I was wondering how to filter out 'obviously wrong' points from a GPX track 
log, which was recorded in heavy tree coverage. The track log was mostly good, 
but had a few outlying (individual) points, which would have been hard to find 
by hand given 1s data for 1 1/2 hours.

As it took me a while to work out I thought I would document it here, as it 
might be of use to someone else. I did this by using GPSBabel to compute the 
speed for each point and then used awk to filter out (drop) points which 
exceeded a threshold.

$ gpsbabel -t -i gpx -f track.gpx -x track,speed -o unicsv -F temp.unicsv
$ head -n 1 temp.unicsv > new.unicsv
$ head -n -1 temp.unicsv | awk -F ',' '{if ($5<20) print $0;}' >> new.unicsv 
$ gpsbabel -t -i unicsv -f new.unicsv -x transform,trk=wpt -o gpx -F new.gpx

The awk script could be made more complicated (ie. calculate acceleration over 
several samples) to give an even better result.

The difference is clear:
$ ./wherewasi.py track.gpx --summary


                WhereWasI Output
                =================

        Filename=track.gpx
        Number of Track Segments        = 1
        ---------------------------------------------
        Start Segment / Point   = 0/0
        End Segment / Point     = 0/5365
        Start Time              = 07/03/2009 17:35:20
        End Time                = 07/03/2009 19:04:51
        Number of Track Points  = 5366
        ---------------------------------------------
        Total Time              = 01:29
        Total Distance          = 12.03 km
        Total Climb             =  4761 m
        ---------------------------------------------
        Average Speed           =  8.06 km/hr
        Maximum Speed           = 1239.35 km/hr
        ---------------------------------------------


$ ./wherewasi.py new.gpx --summary


                WhereWasI Output
                =================

        Filename=new.gpx
        Number of Track Segments        = 1
        ---------------------------------------------
        Start Segment / Point   = 0/0
        End Segment / Point     = 0/5316
        Start Time              = 07/03/2009 17:35:20
        End Time                = 07/03/2009 19:04:50
        Number of Track Points  = 5317
        ---------------------------------------------
        Total Time              = 01:29
        Total Distance          =  9.86 km
        Total Climb             =  3469 m
        ---------------------------------------------
        Average Speed           =  6.61 km/hr
        Maximum Speed           = 66.82 km/hr
        ---------------------------------------------

Cheers,
Mungewell.

PS. Wherewasi can be found here:
http://code.google.com/p/wherewasi/

_______________________________________________
talk mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk

Reply via email to