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

Reply via email to