Changeset 6301 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2013-10-06T18:10:24+02:00 (11 years ago)
Author:
Don-vip
Message:

see #4582, see #7236 - Fix validator false positive "overlapping ways" for adjacent multipolygons

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java

    r6300 r6301  
    1414import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1515import org.openstreetmap.josm.data.osm.OsmUtils;
     16import org.openstreetmap.josm.data.osm.Relation;
    1617import org.openstreetmap.josm.data.osm.Way;
    1718import org.openstreetmap.josm.data.osm.WaySegment;
     
    5455    }
    5556
     57    private boolean concernsArea(OsmPrimitive p) {
     58        return p.get("landuse") != null
     59                || "riverbank".equals(p.get("waterway"))
     60                || p.get("natural") != null
     61                || p.get("amenity") != null
     62                || p.get("leisure") != null
     63                || p.get("building") != null;
     64    }
     65   
     66    private boolean parentMultipolygonConcernsArea(OsmPrimitive p) {
     67        for (Relation r : OsmPrimitive.getFilteredList(p.getReferrers(), Relation.class)) {
     68            if (r.isMultipolygon() && concernsArea(r) ) {
     69                return true;
     70            }
     71        }
     72        return false;
     73    }
     74   
    5675    @Override
    5776    public void endTest() {
     
    7998                        area++;
    8099                    }
    81                     if (ws.way.get("landuse") != null
    82                             || "riverbank".equals(ws.way.get("waterway"))
    83                             || ws.way.get("natural") != null
    84                             || ws.way.get("amenity") != null
    85                             || ws.way.get("leisure") != null
    86                             || ws.way.get("building") != null) {
     100                    if (concernsArea(ws.way) || parentMultipolygonConcernsArea(ws.way)) {
    87101                        area++;
    88102                        ways--;
Note: See TracChangeset for help on using the changeset viewer.