Linux / macOS | Windows | Wiki | Docs |
---|---|---|---|
FMM is an open source map matching framework integrating hidden Markov models and precomputation. It solves the problem of matching noisy GPS data to a road network. By maximizing performance and functionality, FMM allows for map matching algorithms that are both efrficient and scalable to large volumes of data.
FMM provides Python and C++ APIs and can be used in the command line, in Jupyter notebooks, or in web app.
We encourage contribution with feature request, bug report or developping new map matching algorithms using the framework.
Map match to OSM road network by drawing
Explore the factor of candidate size k, search radius and GPS error
Explore detailed map matching information
Explore with dual map
Map match to hexagon by drawing
Explore the factor of hexagon level and interpolate
Source code of these screenshots are available at https://github.com/cyang-kth/fmm-examples.
These instructions are for the Ubuntu platform. For installation on Windows and Mac, refer to the installation instructions here.
Install Requirements
Update the ppa to install the required version (>=2.2) of GDAL.
sudo add-apt-repository ppa:ubuntugis/ppa
sudo apt-get -q update
Then, install all the requirements with
sudo apt-get install libboost-dev libboost-serialization-dev \
gdal-bin libgdal-dev make cmake libbz2-dev libexpat1-dev swig python-dev
Install C++ program and Python bindings
Build and install the program with cmake.
# Under the project folder
mkdir build
cd build
cmake ..
make -j4
sudo make install
This will build executable files under the build
folder, which are installed to /usr/local/bin
:
ubodt_gen
: the Upper bounded origin destination table (UBODT) generator (precomputation) programfmm
: the program implementing the fast map matching algorithmstmatch
: the program implementing the STMATCH algorithm, no precomputation neededIt will also create a folder python
under the build path, which contains fmm bindings(fmm.py
and _fmm.so
) that are installed into the Python site-packages location (e.g., /usr/lib/python2.7/dist-packages
).
Verification of Installation
Run command line map matching
Open a new terminal and type fmm
. You should see the following output:
------------ Fast map matching (FMM) ------------
------------ Author: Can Yang ------------
------------ Version: 2020.01.31 ------------
------------ Applicaton: fmm ------------
A configuration file is given in the example folder
Run `fmm config.xml` or with arguments
fmm argument lists:
--ubodt (required) <string>: Ubodt file name
--network (required) <string>: Network file name
--gps (required) <string>: GPS file name
--output (required) <string>: Output file name
--network_id (optional) <string>: Network id name (id)
--source (optional) <string>: Network source name (source)
--target (optional) <string>: Network target name (target)
--gps_id (optional) <string>: GPS id name (id)
--gps_geom (optional) <string>: GPS geometry name (geom)
--candidates (optional) <int>: number of candidates (8)
--radius (optional) <double>: search radius (300)
--error (optional) <double>: GPS error (50)
--pf (optional) <double>: penalty factor (0)
--log_level (optional) <int>: log level (2)
--output_fields (optional) <string>: Output fields
opath,cpath,tpath,ogeom,mgeom,pgeom,
offset,error,spdist,tp,ep,all
For xml configuration, check example folder
------------ Program finished ------------
Run python script To verify that the Python bindings are working:
# Change to the parent folder which contains fmm_test.py
cd ../example/python
python fmm_test.py
Refer to the Q&A for any installation errors.
Check https://cyang-kth.github.io/fmm/
Can Yang, Ph.D. student at KTH, Royal Institute of Technology in Sweden
Email: cyang(at)kth.se
Homepage: https://people.kth.se/~cyang/
FMM originates from an implementation of this paper Fast map matching, an algorithm integrating hidden Markov model with precomputation. A post-print version of the paper can be downloaded at link. Substaintial new features have been added compared with the original paper.
Please cite fmm in your publications if it helps your research:
Can Yang & Gyozo Gidofalvi (2018) Fast map matching, an algorithm
integrating hidden Markov model with precomputation, International Journal of Geographical Information Science, 32:3, 547-570, DOI: 10.1080/13658816.2017.1400548
Bibtex file
@article{Yang2018FastMM,
title={Fast map matching, an algorithm integrating hidden Markov model with precomputation},
author={Can Yang and Gyozo Gidofalvi},
journal={International Journal of Geographical Information Science},
year={2018},
volume={32},
number={3},
pages={547 - 570}
}