LeuvenMapMatching icon indicating copy to clipboard operation
LeuvenMapMatching copied to clipboard

Is it possible to get the subgraph that was matched to the subtrajectory?

Open Erfanh1995 opened this issue 4 years ago • 3 comments

Looking through the code it seems like it returns the subtrajectory that matches the graph. Is there any way to get the matched part from the graph instead?

Erfanh1995 avatar Jan 12 '21 15:01 Erfanh1995

It returns the ids of the nodes that are matched, which is the matched part of the graph. But maybe I don't understand the question correctly?

wannesm avatar Jan 12 '21 16:01 wannesm

In the non-emitting example, for instance, you get two outputs, nodes and states. The nodes are the nodes from the graph and the states are from the trajectory? What I'm trying to get is the light blue edges that are matched in this picture

Erfanh1995 avatar Jan 12 '21 17:01 Erfanh1995

For that, you can look at the matcher.lattice_best property. This is a list of all the matches. This is not only nodes because, as shown in the graph, it also matches on the segment in between two nodes. Each lattice entry is a matcher object that has an edge_m and edge_o object (resp the matched nodes and observed points). And each of these objects are of the Segment type and have a pi property that is the interpolated point (if it is interpolated, otherwise it is the start or end point of the segment and thus a node in the graph).

You can also look at that part in the visualisation code to see it in action: https://github.com/wannesm/LeuvenMapMatching/blob/b15d92146bb5a26948332ed06835b4714b75ebdc/leuvenmapmatching/visualization.py#L244

wannesm avatar Jan 14 '21 09:01 wannesm