Hi Nop,

can you please test attatched patch?
Ways without any nodes should be handled by the multipolygon handling so I moved the fix in the multipolygon code.

How did you create such a file that contains ways without any nodes?

WanMil

I have been debugging a crash of mkgamp where it fails with the exception

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(Unknown Source)
         at java.util.ArrayList.get(Unknown Source)
         at
uk.me.parabola.mkgmap.reader.osm.MultiPolygonRelation$JoinedWay.<init
(MultiPolygonRelation.java:2199)
         at
uk.me.parabola.mkgmap.reader.osm.MultiPolygonRelation.joinWays(MultiP
olygonRelation.java:245)
         at
uk.me.parabola.mkgmap.reader.osm.MultiPolygonRelation.processElements
(MultiPolygonRelation.java:763)
         at
uk.me.parabola.mkgmap.reader.osm.ElementSaver.addRelation(ElementSave
r.java:166)
         at
uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler$SaxHandler.endEle
ment(Osm5XmlHandler.java:182)

The reason seems to be inconsistent data: a way without the nodes it
references. As mkgmap siletntly drops missing ways, but crashes on missing
nodes I assume this is a bug.

This can be fixed by changing Osm5XmlHandler, line 263 to

                        if ("way".equals(type)){
                                el = saver.getWay(id);
                                // remove ways without points
                                if( el != null && 
((Way)el).getPoints().isEmpty() )
                                        el = null;
                          }

Maybe someone would like to apply this fix to make mkgmap more robust.

bye
                 Nop


--
View this message in context: 
http://gis.19327.n5.nabble.com/mkgmap-crashes-if-nodes-are-missing-tp5711811.html
Sent from the Mkgmap Development mailing list archive at Nabble.com.
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev



Index: src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java	(revision 2309)
+++ src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java	(working copy)
@@ -711,7 +711,11 @@
 
 		for (Map.Entry<String, Element> r_e : getElements()) {
 			if (r_e.getValue() instanceof Way) {
-				allWays.add((Way) r_e.getValue());
+				if (((Way)r_e.getValue()).getPoints().isEmpty()) {
+					log.warn("Way",r_e.getValue(),"has no points and cannot be used for the multipolygon",toBrowseURL());
+				} else {
+					allWays.add((Way) r_e.getValue());
+				}
 			} else {
 				log.warn("Non way member in role", r_e.getKey(), r_e.getValue().toBrowseURL(),
 						"in multipolygon", toBrowseURL(), toTagString());
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

Reply via email to