<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi Andrzej,<br><br><div>&gt; <br>&gt; I haven't browse your code for restriction, but I get the feeling, that <br>&gt; it is complicated :)<br><br>yes, the code is complex :-(<br>Besides my own limitations there are several reasons:<br>1) Turn restrictions in OSM give ways and maybe a via node, they are<br>identified by OSM ids.<br>2) In mkgmap we exchange the ids by "pointers" to the way or node<br>objects, and the ids of the nodes are normally not kept.<br>3) A lot of routines are manipulating these objects, e.g. points<br>are added or removed,&nbsp; roads are merged or split, simple node<br>objects are replaced by CoordNode instances.<br>Everywhere we must make sure that we update the restrictions<br>that refer to the objects. This is complex and error-prone.<br>4) After the road network is created, the restrictions are added.<br>This is the first time that mkgmap "knows" all the ways that meet<br>at a via node.<br>Here we have to translate the meaning of the OSM restriction to<br>the Garmin format, which requires a sequence of nodes<br>and arcs between them that describes the forbidden way.<br>While writing this I think that I really should move most of the <br>logic to this place, although it is not needed when the source is <br>polish format.<br>Up to now some checks are performed earlier, the only good reason<br>for that is that we can detect some invalid restriction relations earlier<br>and therefore allow WrongAngleFixer and RoadMerger to ignore the <br>via nodes. I'll think about this again.<br><br>&gt; <br>&gt;  &gt; I'd prefer to change the wiki and say that this case must be avoided.<br>&gt; <br>&gt; It won't be easy to define this case for a common mapper.<br>&gt; <br>&gt; What condition is triggered in your code? A loop? Repeated node? Or <br>&gt; maybe multiple ways fitting as via for restriction?<br>The problem is that the to-way is a loop, both start and end point<br>are connected to the from way. The current code <br>tries to find the next routing node on the to-way, but was is next<br>if you can start at both ends?<br>The wiki should say that the from and to way must either start or end<br>at the via node/way.<br>The current text says only :<br><span class="reference-text">The "from" and "to" members must start/end at the "via" node, otherwise split it!<br><br>Or maybe "</span><span class="reference-text"><span class="reference-text">start/end" </span> already means "either start or end, not both" ?<br><br>Gerd<br></span> </div>                                               </div></body>
</html>