Matching GPS trajectories to street segments – an open source implementation

We would like to inform about a new open source tool that allows matching of GPS trajectories to corresponding street segments. The tool implements a simplified version of the algorithm presented by Zhang et al. (2010). It is a JAVA based implementation and has been put under LGPL license. You can access the source code via our Github account.

The main steps of the algorithm are: (a) Select candidate tracks using a buffer (light green) around a street segment (dark green), (b) create profile lines (blue), (c) select GPS tracks (red) which intersect at least 70% of the profile lines and (d) clip GPS tracks at buffer.

The streets and GPS traces to be matched, need to be stored in a PostgreSQL/PostGIS database. For GPS trajectories collected in OSM project, osmgpxfilter (reported earlier) may be used to fill the database. The result is written into a new table, referencing the unique identifiers of the streets and the GPS trajectories. We have mainly used the tool to match OSM GPS trajectories to the OSM street network (some statistics for the region of Heidelberg have already been reported):

feature class | covered segments | avg. # of tracks
motorway 99% 98
primary 99% 21
secondary 96% 11
cycleway 91% 10
tertiary 95% 9
path 52% 2
residential 58% 2
footway 35% 2

However, the tool should be generic enough to work with any street network / GPS trajectories. Credits go to our student assistent Steffen John for his great work (again)! We welcome any feedback as well as further development of the tool by anyone who has an interest.



, ,