LeuvenMapMatching icon indicating copy to clipboard operation
LeuvenMapMatching copied to clipboard

match method returns more points than input coordinates

Open CarreauClement opened this issue 2 years ago • 3 comments

Hello,

Here's the example code

matcher = DistanceMatcher(graph, max_dist=12000, max_lattice_width=2)
coordinates = [[40.756470508651724,  -73.97319052003208]]

matcher.match(coordinates)
nodes = matcher.path_pred_onlynodes
print(len(nodes))

When I run this code I get 2 nodes while I only had one coordinate. The nodes are ['7737876085', '6452768049']

Can you explain this please ?

Thanks a lot

CarreauClement avatar Mar 16 '23 20:03 CarreauClement

The default setting is to match edges. The path_pred_onlynodes shows the nodes, in this case 2 because and edge is between two nodes. You can also try path_pred to see the edges more explicitly.

wannesm avatar Mar 16 '23 21:03 wannesm

Thanks. Is there a way to match only the nearest node from each of my coordinates ?

CarreauClement avatar Mar 16 '23 23:03 CarreauClement

For each match you can ask for the location and where this point is on the edge (this is also used for the plot function). For the first match like in this case you could check:

edge = matcher.lattice_best[0].edge_m
if edge.ti < 0.5:
  print(f"First node is {edge.l1}")
else:
  print(f"First node is {edge.l2}")

Starting from the closest node on the first edge makes sense, so in the master branch the path_pred_onlynodes function has been updated to use this by default.

wannesm avatar Mar 17 '23 22:03 wannesm