Index: src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java =================================================================== --- src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java (revision 4900) +++ src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java (working copy) @@ -709,6 +709,8 @@ void processPartition(Partition partition) { + if (partition.innerEqualsOuter) + return; if (partition.outerPolygons.isEmpty()) { renderingFailed = true; log.error("Internal error: Failed to render " + this); @@ -1513,6 +1515,8 @@ * */ protected class Partition { + public boolean innerEqualsOuter; + /** list of polygons with a fixed order */ final List polygons; @@ -1545,6 +1549,18 @@ nestedOuterPolygons = new BitSet(list.size()); nestedInnerPolygons = new BitSet(list.size()); outmostInnerPolygons = new BitSet(list.size()); + + // handle special case produced by partitioning + // we may see two identical rectangles for inner and outer + if (polygons.size() == 2 && polygons.get(0).getPoints().size() == 5 && polygons.get(1).getPoints().size() == 5 ) { + JoinedWay p0 = polygons.get(0); + JoinedWay p1 = polygons.get(1); + int x = IsInUtil.isLineInShape(p0.getPoints(), p1.getPoints(), p0.getArea()); + if (x == IsInUtil.ON) { + innerEqualsOuter = true; + } + } + } public void markFinished(PolygonStatus currentPolygon) {