Changeset 6457 in josm


Ignore:
Timestamp:
2013-12-09T01:52:16+01:00 (10 years ago)
Author:
Don-vip
Message:

fix #9411 - validator: no "crossing ways" warning for indoor ways with different level

File:
1 edited

Legend:

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

    r6381 r6457  
    8383            return;
    8484
     85        String level1 = w.get("level");
    8586        String layer1 = w.get("layer");
    8687        if ("0".equals(layer1)) {
    87             layer1 = null; //0 is default value
     88            layer1 = null; // 0 is default value for layer. Don't assume the same for levels
    8889        }
    8990
     
    9192        for (int i = 0; i < nodesSize - 1; i++) {
    9293            WaySegment ws = new WaySegment(w, i);
    93             ExtendedSegment es1 = new ExtendedSegment(ws, layer1, highway1, railway1, isCoastline1, waterway1);
     94            ExtendedSegment es1 = new ExtendedSegment(ws, layer1, highway1, railway1, isCoastline1, waterway1, level1);
    9495            for (List<ExtendedSegment> segments : getSegments(es1.n1, es1.n2)) {
    9596                for (ExtendedSegment es2 : segments) {
     
    101102                    }
    102103
     104                    String level2 = es2.level;
    103105                    String layer2 = es2.layer;
    104106                    String highway2 = es2.highway;
     
    106108                    boolean isCoastline2 = es2.coastline;
    107109                    if (layer1 == null ? layer2 != null : !layer1.equals(layer2)) {
     110                        continue;
     111                    }
     112                    // Ignore indoor highways on different levels
     113                    if (highway1 != null && highway2 != null && level1 != null && level2 != null && !level1.equals(level2)) {
    108114                        continue;
    109115                    }
     
    212218        private final boolean coastline;
    213219
     220        /** The level, only considered for indoor highways */
     221        private final String level;
     222
    214223        /**
    215224         * Constructor
     
    220229         * @param coastline The coastline flag of the way the segment is in
    221230         * @param waterway The waterway type of the way this segment is in
     231         * @param level The level of the way this segment is in
    222232         */
    223         public ExtendedSegment(WaySegment ws, String layer, String highway, String railway, boolean coastline, String waterway) {
     233        public ExtendedSegment(WaySegment ws, String layer, String highway, String railway, boolean coastline, String waterway, String level) {
    224234            this.ws = ws;
    225235            this.n1 = ws.way.getNodes().get(ws.lowerIndex);
     
    230240            this.coastline = coastline;
    231241            this.waterway = waterway;
     242            this.level = level;
    232243        }
    233244
Note: See TracChangeset for help on using the changeset viewer.