Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Map-Matching Algorithm

Gitter GitHub stars GitHub contributors GNU GPL v3 Build Status

Im rewriting this in the Rust programming language: check the progress here:

My implementation of the map matching algorithm from this article (Althought with some modifications). The goal is to get the streets from a gps track.

This is how it looks like:

Output of the example run

The gray line is the gps trace and the colored lines describe the map-matched most-likely route in the streets for the vehicle.

For reference read the resulting article.


You'll need python 3.5+ and a redis server running. The usage of a virtual environment is recommended.

Install from pypi:

$ pip install mapmatching

Or install from source:

$ cd mapmatching
$ python install


Download data from OpenStreetMaps:

$ mapmatching download -h
$ mapmatching download -96.99107360839844 19.441181182861328 -96.846435546875 19.59616470336914 -o streets.json

And load it to redis, by default it loads it to database 1 instead of redis default of 0.

$ mapmatching load streets.json

The two previous commands can be chained:

$ mapmatching download -96.99107360839844 19.441181182861328 -96.846435546875 19.59616470336914 | mapmatching load

Then run the match task with a geojson file with a single gps track. A sample track that works with the sample bounding box is contained in the data/ directory of the repository.

$ mapmatching match -h
$ mapmatching match data/route.geojson -o output.json

Optionally visualize it in the browser:

$ pip install geojsonio
$ geojsonio output.json


Algorithms to find the streets that a vehicle should have traveled to generate a given GPS track




You can’t perform that action at this time.