Hi Maning, Even better, don't partition the way as I requested but, instead, please try this patch and see if it makes any difference.
Cheers, Mark
diff --git a/src/uk/me/parabola/mkgmap/general/LineClipper.java b/src/uk/me/parabola/mkgmap/general/LineClipper.java index 55aa51d..9bf224d 100644 --- a/src/uk/me/parabola/mkgmap/general/LineClipper.java +++ b/src/uk/me/parabola/mkgmap/general/LineClipper.java @@ -135,11 +135,18 @@ public class LineClipper { assert t[1] <= 1; double d = 0.5; - if (t[0] > 0) - ends[0] = new Coord((int) (y0 + t[0] * dy + d), (int) (x0 + t[0] * dx + d)); + if (t[0] > 0) { + Coord c = new Coord((int) (y0 + t[0] * dy + d), (int) (x0 + t[0] * dx + d)); + if(!c.equals(ends[0])) + ends[0] = c; + } + + if (t[1] < 1) { + Coord c = new Coord((int)(y0 + t[1] * dy + d), (int) (x0 + t[1] * dx + d)); + if(!c.equals(ends[1])) + ends[1] = c; + } - if (t[1] < 1) - ends[1] = new Coord((int)(y0 + t[1] * dy + d), (int) (x0 + t[1] * dx + d)); return ends; } diff --git a/src/uk/me/parabola/mkgmap/general/RoadNetwork.java b/src/uk/me/parabola/mkgmap/general/RoadNetwork.java index 9bc6b83..5b8d8db 100644 --- a/src/uk/me/parabola/mkgmap/general/RoadNetwork.java +++ b/src/uk/me/parabola/mkgmap/general/RoadNetwork.java @@ -103,6 +103,9 @@ public class RoadNetwork { if(node1 == node2) log.error("Road " + road.getRoadDef().getName() + " (OSM id " + road.getRoadDef().getId() + ") contains consecutive identical nodes - routing will be broken"); + else if(arcLength == 0) { + log.error("Road " + road.getRoadDef().getName() + " (OSM id " + road.getRoadDef().getId() + ") contains zero length arc"); + } // Create forward arc from node1 to node2 Coord bearing = coordList.get(lastIndex + 1);
_______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev