Changeset 32222 in osm for applications


Ignore:
Timestamp:
2016-06-08T00:50:46+02:00 (8 years ago)
Author:
darya
Message:

Fixed bug in RoadTypeTest, changes for forward/backward/etc roles, substituting stop position with stop

Location:
applications/editors/josm
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java

    r32221 r32222  
    4949        public static boolean isPTStop(RelationMember rm) {
    5050
    51                 return !isPTWay(rm);
     51                if (rm.getType().equals(OsmPrimitiveType.NODE)) {
     52                        return true;
     53                }
     54
     55                if (rm.getType().equals(OsmPrimitiveType.RELATION)) {
     56                        if (rm.getRole().equals("stop_area")) {
     57                                return true;
     58                        } else {
     59                                return false;
     60                        }
     61                }
     62
     63                Way w = rm.getWay();
     64
     65                if (w.hasTag("public_transport", "platform") || w.hasTag("highway", "platform")
     66                                || w.hasTag("railway", "platform") || w.hasTag("public_transport", "platform_entry_only")
     67                                || w.hasTag("highway", "platform_entry_only") || w.hasTag("railway", "platform_entry_only")
     68                                || w.hasTag("public_transport", "platform_exit_only") || w.hasTag("highway", "platform_exit_only") || w.hasTag("railway", "platform_exit_only")) {
     69                        return true;
     70                }
     71
     72                return false;
    5273
    5374        }
     
    6586        public static boolean isPTWay(RelationMember rm) {
    6687
    67                 if (rm.hasRole("") && OsmPrimitiveType.WAY.equals(rm.getType())) {
    68                         Way way = rm.getWay();
    69                         if (!way.hasTag("public_transport", "platform") && !way.hasTag("highway", "platform")
    70                                         && !way.hasTag("railway", "platform")) {
    71                                 return true;
    72                         }
    73                 }
    74 
    75                 return false;
     88                return !isPTStop(rm);
    7689        }
    7790
     
    100113        }
    101114
    102 
    103115}
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/GapTest.java

    r32221 r32222  
    7979
    8080        /**
    81          * Checks if there is a gap for a given list of ways
     81         * Checks if there is a gap for a given list of ways. It does not check if
     82         * the way actually stands for a public transport platform - that should be
     83         * checked beforehand.
    8284         *
    8385         * @param waysToCheck
     
    177179                                        final List<RelationMember> ways = new ArrayList<>();
    178180                                        for (RelationMember member : members) {
    179                                                 if (member.hasRole("") && OsmPrimitiveType.WAY.equals(member.getType())) { // FIXME
    180                                                         ways.add(member);
    181                                                 } else { // stops (and if the relation has anything
    182                                                                         // besides ways and stops:
    183                                                         stops.add(member);
     181                                                if (RouteUtils.isPTWay(member)) {
     182                                                        if (member.getRole().equals("")) {
     183                                                                ways.add(member);
     184                                                        } else {
     185                                                                RelationMember modifiedMember = new RelationMember("", member.getWay());
     186                                                                ways.add(modifiedMember);
     187                                                        }
     188
     189                                                } else { // stops:
     190                                                        if (member.getRole().equals("stop_positon")) {
     191                                                                // it is not expected that stop_positions could be relations
     192                                                                if (member.getType().equals(OsmPrimitiveType.NODE)) {
     193                                                                        RelationMember modifiedMember = new RelationMember("stop", member.getNode());
     194                                                                        stops.add(modifiedMember);
     195                                                                } else { // if it is a primitive of type way:
     196                                                                        RelationMember modifiedMember = new RelationMember("stop", member.getWay());
     197                                                                        stops.add(modifiedMember);
     198                                                                }
     199                                                        } else { // if it is not a stop_position:
     200                                                                stops.add(member);
     201                                                        }
     202
    184203                                                }
    185204                                        }
     
    218237                                        for (RelationMember rm : originalRelation.getMembers()) {
    219238                                                if (RouteUtils.isPTStop(rm)) {
    220                                                         modifiedMembers.add(rm);
     239                                                        if (rm.hasRole("stop_position")) {
     240                                                                // it is not expected that stop_positions could be relations
     241                                                                if (rm.getType().equals(OsmPrimitiveType.NODE)) {
     242                                                                        RelationMember modifiedMember = new RelationMember("stop", rm.getNode());
     243                                                                        modifiedMembers.add(modifiedMember);
     244                                                                } else { // if it is a primitive of type "way":
     245                                                                        RelationMember modifiedMember = new RelationMember("stop", rm.getWay());
     246                                                                        modifiedMembers.add(modifiedMember);
     247                                                                }
     248                                                        } else {
     249                                                                modifiedMembers.add(rm);
     250                                                        }
     251
    221252                                                }
    222                                                
    223                                         }
    224                                         // add ways of a public transport route (if they are not overshoots):
    225                                         for (RelationMember rm: originalRelation.getMembers()) {
    226                                                 if (RouteUtils.isPTWay(rm) && !overshootList.contains(rm)) {
    227                                                         modifiedMembers.add(rm);
     253
     254                                        }
     255                                        // add ways of a public transport route (if they are not
     256                                        // overshoots):
     257                                        for (RelationMember rm : originalRelation.getMembers()) {
     258                                                if (RouteUtils.isPTWay(rm) && !overshootList.contains(rm)) {           
     259                                                       
     260                                                        if (rm.getRole().equals("")) {
     261                                                                modifiedMembers.add(rm);
     262                                                        } else {
     263                                                                RelationMember modifiedMember = new RelationMember("", rm.getWay());
     264                                                                modifiedMembers.add(modifiedMember);
     265                                                        }
    228266                                                }
    229267                                        }
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RoadTypeTest.java

    r32221 r32222  
    1010import org.openstreetmap.josm.command.SequenceCommand;
    1111import org.openstreetmap.josm.data.osm.OsmPrimitive;
     12import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1213import org.openstreetmap.josm.data.osm.Relation;
    1314import org.openstreetmap.josm.data.osm.RelationMember;
     
    3132
    3233                if (RouteUtils.isTwoDirectionRoute(r)) {
    33 
     34                       
    3435                        List<RelationMember> members = r.getMembers();
    3536
    3637                        for (RelationMember rm : members) {
    3738                                if (RouteUtils.isPTWay(rm)) {
    38 
     39                                       
    3940                                        Way way = rm.getWay();
    4041                                        // at this point, the relation has already been checked to
     
    4243                                        boolean isCorrectRoadType = true;
    4344                                        if (r.hasTag("route", "bus") || r.hasTag("route", "share_taxi")) {
     45                                                if (way.getId()==388339788 || way.getId() == 388339789) {
     46
     47                                                }
    4448                                                if (!RouteUtils.isWaySuitableForBuses(way)) {
    4549                                                        isCorrectRoadType = false;
     
    7276
    7377                                        if (!isCorrectRoadType) {
     78                                               
    7479                                                List<OsmPrimitive> primitiveList = new ArrayList<>(2);
    7580                                                primitiveList.add(0, r);
     
    9196                List<Command> commands = new ArrayList<>(50);
    9297
    93                 if (testError.getTester().getClass().equals(GapTest.class) && testError.isFixable()) {
     98                if (testError.getTester().getClass().equals(RoadTypeTest.class) && testError.isFixable()) {
    9499                        List<OsmPrimitive> primitiveList = (List<OsmPrimitive>) testError.getPrimitives();
    95100                        Relation originalRelation = (Relation) primitiveList.get(0);
     
    99104                        List<RelationMember> modifiedRelationMembers = new ArrayList<>(originalRelation.getMembersCount()-1);
    100105                       
    101                         // copy stop-related members first, public transport ways last:
     106                        // copy PT stops first, PT ways last:
    102107                        for (RelationMember rm: originalRelation.getMembers()) {
    103108                                if (RouteUtils.isPTStop(rm)) {
    104                                         modifiedRelationMembers.add(rm);
     109                                       
     110                                        if (rm.getRole().equals("stop_position")) {
     111                                                if (rm.getType().equals(OsmPrimitiveType.NODE)) {
     112                                                        RelationMember newMember = new RelationMember("stop", rm.getNode());
     113                                                        modifiedRelationMembers.add(newMember);
     114                                                } else { // if it is a way:
     115                                                        RelationMember newMember = new RelationMember("stop", rm.getWay());
     116                                                        modifiedRelationMembers.add(newMember);
     117                                                }
     118                                        } else {
     119                                                // if the relation member does not have the role "stop_position":
     120                                                modifiedRelationMembers.add(rm);
     121                                        }
     122                                       
    105123                                }
    106124                        }
    107125                       
     126                        // now copy PT ways:
    108127                        for (RelationMember rm: originalRelation.getMembers()) {
    109128                                if (RouteUtils.isPTWay(rm)) {
    110129                                        Way wayToCheck = rm.getWay();
    111130                                        if (wayToCheck != wayToRemove) {
    112                                                 modifiedRelationMembers.add(rm);
     131                                                if (rm.getRole().equals("forward") || rm.getRole().equals("backward")) {
     132                                                        RelationMember modifiedMember = new RelationMember("", wayToCheck);
     133                                                        modifiedRelationMembers.add(modifiedMember);
     134                                                } else {
     135                                                        modifiedRelationMembers.add(rm);
     136                                                }
    113137                                        }
    114138                                }
     
    129153                        return commands.get(0);
    130154                }
     155               
    131156
    132157                return new SequenceCommand(tr("Remove way from route if it does not match the route type"), commands);  }
Note: See TracChangeset for help on using the changeset viewer.