Map matching Python code for projecting GTFS, GPS tracks, etc. onto an underlying node-link map
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Network Modeling Center
Center for Transportation Research
Cockrell School of Engineering
The University of Texas at Austin


Kenneth Perrine

Copyright (C) 2014, The University of Texas at Austin

The NMC Map Matcher is designed to take a set of georeference points,
such as GTFS, GPS tracks, etc., and project them to an underlying node-
link representation of a transportation network. The algorithm 
maintains multiple candidate paths, which turns out to be very effective
in dealing with a variety of ambiguities in the mapping.

This is currently a first cut, however! The code has been very useful
for research activities at the Network Modeling Center, but a number of
efficiencies and features are needed that are described in the wiki.
I welcome opportunities to collaborate in making this code better. I
also appreciate hearing where this code comes in handy. (Keep in mind
that transportation research need not be the only domain for this map
matcher code. This may be applied to a variety of problems that deal
with error minimizations, etc.)

This code accompanies this paper:
   Perrine, Kenneth A., Alireza Khani, and Natalia Ruiz-Juri. A
   map-matching algorithm for applications in multimodal transportation
   network modeling. Transportation Research Board 94th Annual Meeting,
   Jan. 2015, Washington DC.

This Python project consists of several entry-points that are
documented at the project website on GitHub.

For documentation, please access the wiki on the GitHub site:
This project appears in the TRB Annual Meeting 2015 program as a
"practice-ready" paper. While this project contains functioning code,
be advised that it isn't quite finished and until some further
improvements are made, it may require some programming or database
work to interface for your particular application.  The quickest way to
get the code running on your computer is to do the following:
1. Download and install Python 2 (the latest version as of Jan. 2015 is
   Python 2.7.9)
2. You may need to install the Psycopg library if you want to use the
   current database importer. Otherwise you will need to provide your
   own data importer for your underlying network topology, or wait
   until this is completed and included in this project.
3. If you don't want to deal with Git, you can download this project as
   a ZIP file (available from the GitHub main project page).
4. Follow the examples in the wiki pages on "Theory of Operation" and
   so forth.


This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <>.