Ticket #17186: 17186.patch

File 17186.patch, 2.5 KB (added by GerdP, 7 years ago)
  • src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java

     
    434434
    435435                // Looking for candidateSegment copies in ways that are referenced by candidateSegment nodes
    436436                List<Way> firstNodeWays = candidateSegment.getFirstNode().referrers(Way.class).collect(Collectors.toList());
    437                 List<Way> secondNodeWays = candidateSegment.getFirstNode().referrers(Way.class).collect(Collectors.toList());
    438437
    439438                Collection<WaySegment> virtualSegments = new LinkedList<>();
    440439                for (Way w : firstNodeWays) {
    441440                    List<Pair<Node, Node>> wpps = w.getNodePairs(true);
    442                     for (Way w2 : secondNodeWays) {
    443                         if (!w.equals(w2)) {
    444                             continue;
     441                    // A way is referenced in both nodes.
     442                    // Checking if there is such segment
     443                    int i = -1;
     444                    for (Pair<Node, Node> wpp : wpps) {
     445                        ++i;
     446                        boolean ab = wpp.a.equals(candidateSegment.getFirstNode())
     447                                && wpp.b.equals(candidateSegment.getSecondNode());
     448                        boolean ba = wpp.b.equals(candidateSegment.getFirstNode())
     449                                && wpp.a.equals(candidateSegment.getSecondNode());
     450                        if (ab || ba) {
     451                            virtualSegments.add(new WaySegment(w, i));
    445452                        }
    446                         // A way is referenced in both nodes.
    447                         // Checking if there is such segment
    448                         int i = -1;
    449                         for (Pair<Node, Node> wpp : wpps) {
    450                             ++i;
    451                             boolean ab = wpp.a.equals(candidateSegment.getFirstNode())
    452                                     && wpp.b.equals(candidateSegment.getSecondNode());
    453                             boolean ba = wpp.b.equals(candidateSegment.getFirstNode())
    454                                     && wpp.a.equals(candidateSegment.getSecondNode());
    455                             if (ab || ba) {
    456                                 virtualSegments.add(new WaySegment(w, i));
    457                             }
    458                         }
    459453                    }
    460454                }
    461455