Skip to content

Rowlando13/mappymatch

 
 

Repository files navigation

mappymatch

Mappymatch is a pure-python package developed by the National Renewable Energy Laboratory for matching GPS traces (GPS points captured while transiting) to the route they represent on a maps. The same thing Google maps does when you are using it. Supported matching algorithms LCSS and ____. Supported map formats are OSM and ____.

Installation

Check out the docs for install instructions.

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)

Example Notebooks

Example JupyterLab notebooks making use of mappymatch can be found in the mappymatch examples repository.

About

Pure-python package for map matching

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.2%
  • PowerShell 0.8%