<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Texte de bulles Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.TextedebullesCar
        {mso-style-name:"Texte de bulles Car";
        mso-style-priority:99;
        mso-style-link:"Texte de bulles";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR-BE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I noticed that routes are computed only between the graph’s nodes, and the route does not go close enough to the actual GPS points.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I also noticed that there is a small mistake when selecting the start/end node when the GPS point falls on an “one way” edge.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The current behavior is to find the closest edge to the lon/lat coordinates and then find the closest node on this edge to the lon/lat.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">When an edge is one way, you don’t have to take the closes node on the edge but the node that will respect the traffic flow.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Mean if your starting point fall on an one way edge, you’ll have to start the routing form the end point of this edge, no matter the starting point may be closer to your GPS coordinates. Indeed, if you go from you gps
 point to the start node, you’ll have to violate the one way restriction.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">(see attachment as example)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In this picture we also see the first thing I mentioned : the geometry lacks of accuracy between nodes and GPS coordinates ; the blue line does not “stop” exactly at the two little flags representing my GPS coordinates.
 (green flag: start, red flag : end)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I started digging into the code in order to solve these two issues and I came up thinking that the whole API needs a bit of rework.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Right now the node resolution returns a node ID but I think it should rather return an EdgeIterator of the matched edge.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">With this edge, it’s possible to find the appropriate start/end node depending on the lon/lat of the point and the fact that edge is one way. It’s also possible “finish” the road and compute the missing/exceeding parts
 of the road.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Am I missing something ?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Do you think that my point of view is correct ?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;color:#1F497D;mso-fareast-language:FR-BE">Nicolas GILLET<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;color:#1F497D;mso-fareast-language:FR-BE"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="color:#1F497D;mso-fareast-language:FR-BE">Market-IP –</span></b><i><span lang="EN-US" style="color:#1F497D;mso-fareast-language:FR-BE">
</span></i><i><span lang="EN-US" style="color:#404040;mso-fareast-language:FR-BE">Creating Mobile Intelligence</span></i><span lang="EN-US" style="color:#1F497D;mso-fareast-language:FR-BE"><o:p></o:p></span></p>
</div>
</body>
</html>