Skip to content

grahamwaters/mappymatch

 
 

Repository files navigation

mappymatch

mappymatch is a pure-python package developed by the National Renewable Energy Laboratory that maintains a collection of map matching algorithms and wrappers. The package was designed for ease of use and portabilty across platforms.

Setup

Standard Method

Clone the repo:

git clone https://github.com/NREL/mappymatch.git

Change directory into the mappymatch folder:

cd path/to/mappymatch   # from here, your path to mappymatch is likely .\mappymatch\

Then, use the environment.yml file (which was downloaded when you cloned the repo) to install dependencies:

conda env create -f environment.yml

To activate the mappymatch environment:

conda activate mappymatch

There are a couple of extras available:

  • plot: Needed to plot the result.

At least plot is needed to run the examples.

This can be installed via pip:

pip install ".[plot]"

Example Usage

The current primary workflow is to use osmnx to download a road network and match it using the LCSSMatcher.

The LCSSMatcher implements the map matching algorithm described in this paper:

Zhu, Lei, Jacob R. Holden, and Jeffrey D. Gonder. "Trajectory Segmentation Map-Matching Approach for Large-Scale, High-Resolution GPS Data." Transportation Research Record: Journal of the Transportation Research Board 2645 (2017): 67-75.

usage:

from mappymatch import root
from mappymatch.matchers.lcss.lcss import LCSSMatcher
from mappymatch.utils.geo import geofence_from_trace
from mappymatch.maps.nx.readers.osm_readers import read_osm_nxmap
from mappymatch.constructs.trace import Trace

trace = Trace.from_csv(root() / "resources/traces/sample_trace_1.csv")

# generate a geofence polygon that surrounds the trace; units are in meters;
# this is used to query OSM for a small map that we can match to
geofence = geofence_from_trace(trace, padding=1e3)

# uses osmnx to pull a networkx map from the OSM database
road_map = read_osm_nxmap(geofence)

matcher = LCSSMatcher(road_map)

matches = matcher.match_trace(trace)

About

Pure-python package for map matching

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%