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