Ignore:
Timestamp:
2016-07-06T01:57:19+02:00 (9 years ago)
Author:
darya
Message:

AddStopPositionActoin

Location:
applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant
Files:
6 edited

Legend:

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

    r32567 r32585  
    1212import org.openstreetmap.josm.plugins.pt_assistant.actions.AddStopPositionAction;
    1313import org.openstreetmap.josm.plugins.pt_assistant.validation.PTAssistantValidatorTest;
    14 import org.openstreetmap.josm.tools.ImageProvider;
    1514
    1615/**
     
    5251                }
    5352        }
    54        
    55         /**
    56          * Returns a ImageProvider for the given string or null if in headless mode.
    57          *
    58          * @param s
    59          *            The name of the file where the picture is.
    60          * @return A ImageProvider object for the given string or null if in
    61          *         headless mode.
    62          */
    63         public static ImageProvider getProvider(String s) {
    64                 if (Main.main == null) {
    65                         return null;
    66                 }
    67                 return new ImageProvider(s);
    68         }
    6953
    7054}
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/AddStopPositionAction.java

    r32570 r32585  
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.actions.JoinNodeWayAction;
    1112import org.openstreetmap.josm.actions.JosmAction;
     13import org.openstreetmap.josm.actions.SplitWayAction;
    1214import org.openstreetmap.josm.data.coor.LatLon;
    1315import org.openstreetmap.josm.data.osm.Node;
     
    4446                        return;
    4547                }
     48               
     49                final ActionEvent actionEventParameter = e;
    4650
    4751                Main.map.mapView.addMouseListener(new MouseAdapter() {
    4852
    4953                        LatLon clickPosition;
     54
    5055
    5156                        @Override
     
    6570                                                osmDataLayer.data.setSelected(newNode);
    6671                                                Main.map.mapView.repaint();
     72                                               
     73                                                // make the stop position node part of the way:
     74                                                JoinNodeWayAction joinNodeWayAction = JoinNodeWayAction.createJoinNodeToWayAction();
     75                                                joinNodeWayAction.actionPerformed(actionEventParameter);
     76                                               
     77                                                // split the way:
     78                                                SplitWayAction splitWayAction = new SplitWayAction();
     79                                                splitWayAction.actionPerformed(actionEventParameter);
    6780
    6881                                        }
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/data/PTStop.java

    r32415 r32585  
    2424                super(other);
    2525
    26                 if ((other.hasRole("stop") || other.hasRole("stop_entry_only") || other.hasRole("stop_exit_only"))
    27                                 && other.getType().equals(OsmPrimitiveType.NODE)) {
     26                // if ((other.hasRole("stop") || other.hasRole("stop_entry_only") ||
     27                // other.hasRole("stop_exit_only"))
     28                // && other.getType().equals(OsmPrimitiveType.NODE)) {
     29
     30                if (other.getMember().hasTag("public_transport", "stop_position")) {
    2831
    2932                        this.stopPosition = other.getNode();
    3033                        this.name = stopPosition.get("name");
    3134
    32                 } else if (other.getRole().equals("platform") || other.getRole().equals("platform_entry_only")
    33                                 || other.getRole().equals("platform_exit_only")) {
     35                        // } else if (other.getRole().equals("platform") ||
     36                        // other.getRole().equals("platform_entry_only")
     37                        // || other.getRole().equals("platform_exit_only")) {
     38                } else if (other.getMember().hasTag("highway", "bus_stop")
     39                                || other.getMember().hasTag("public_transport", "platform")
     40                                || other.getMember().hasTag("highway", "platform") || other.getMember().hasTag("railway", "platform")) {
    3441
    3542                        this.platform = other.getMember();
     
    3744
    3845                } else {
    39                         throw new IllegalArgumentException("The RelationMember type does not match its role " + other.getMember().getName());
     46                        throw new IllegalArgumentException(
     47                                        "The RelationMember type does not match its role " + other.getMember().getName());
    4048                }
    4149
     
    5765
    5866                // add stop position:
    59                 if (member.hasRole("stop") || member.hasRole("stop_entry_only") || member.hasRole("stop_exit_only")) {
     67                // if (member.hasRole("stop") || member.hasRole("stop_entry_only") ||
     68                // member.hasRole("stop_exit_only")) {
     69                if (member.getMember().hasTag("public_transport", "stop_position")) {
    6070                        if (member.getType().equals(OsmPrimitiveType.NODE) && stopPosition == null) {
    6171                                this.stopPosition = member.getNode();
     
    6575
    6676                // add platform:
    67                 if (member.getRole().equals("platform") || member.getRole().equals("platform_entry_only")
    68                                 || member.getRole().equals("platform_exit_only")) {
     77                // if (member.getRole().equals("platform") ||
     78                // member.getRole().equals("platform_entry_only")
     79                // || member.getRole().equals("platform_exit_only")) {
     80                if (member.getMember().hasTag("highway", "bus_stop")
     81                                || member.getMember().hasTag("public_transport", "platform")
     82                                || member.getMember().hasTag("highway", "platform") || member.getMember().hasTag("railway", "platform")) {
    6983                        if (platform == null) {
    7084                                platform = member.getMember();
     
    123137                }
    124138
    125                 // Look for a stop position within 100 m (around 0.002 degrees) of this platform:
     139                // Look for a stop position within 100 m (around 0.002 degrees) of this
     140                // platform:
    126141
    127142                LatLon platformCenter = platform.getBBox().getCenter();
     
    139154                }
    140155
    141                 // // 1) Look for any stop_area relations that this platform
    142                 // // belongs to:
    143                 // ArrayList<OsmPrimitive> platformList = new
    144                 // ArrayList<OsmPrimitive>(1);
    145                 // platformList.add(platform);
    146                 // Set<Relation> platformParentRelations =
    147                 // OsmPrimitive.getParentRelations(platformList);
    148                 // ArrayList<Relation> stopAreaList = new ArrayList<Relation>();
    149                 // for (Relation platformParentRelation : platformParentRelations) {
    150                 // if (platformParentRelation.hasTag("public_transport", "stop_area")) {
    151                 // stopAreaList.add(platformParentRelation);
    152                 // }
    153                 // }
    154                 //
    155                 // // 2) Get all potential stop_positions from those stop_area
    156                 // relations:
    157                 // for (Relation stopArea : stopAreaList) {
    158                 // for (RelationMember rm : stopArea.getMembers()) {
    159                 // if ((rm.hasRole("stop") || rm.hasRole("stop_entry_only") ||
    160                 // rm.hasRole("stop_exit_only"))&&
    161                 // rm.getType().equals(OsmPrimitiveType.NODE)
    162                 // && rm.getNode().hasTag("public_transport", "stop_position")) {
    163                 // potentialStopPositions.add(rm.getNode());
    164                 // }
    165                 // }
    166                 // }
    167 
    168156                return potentialStopPositions;
    169157        }
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java

    r32567 r32585  
    3333                                || r.hasTag("route", "tram") || r.hasTag("route", "light_rail") || r.hasTag("route", "subway")
    3434                                || r.hasTag("route", "train")) {
    35                        
     35
    3636                        if (!r.hasTag("bus", "on_demand")) {
    3737                                return true;
    3838                        }
    39                        
     39
    4040                }
    4141                return false;
     
    5252        public static boolean isPTStop(RelationMember rm) {
    5353
    54                 if (rm.hasRole("stop") || rm.hasRole("stop_entry_only") || rm.hasRole("stop_exit_only")
    55                                 || rm.hasRole("platform") || rm.hasRole("platform_entry_only") || rm.hasRole("platform_exit_only")) {
     54                // if (rm.hasRole("stop") || rm.hasRole("stop_entry_only") ||
     55                // rm.hasRole("stop_exit_only")
     56                // || rm.hasRole("platform") || rm.hasRole("platform_entry_only") ||
     57                // rm.hasRole("platform_exit_only")) {
    5658
    57                         if (rm.getType().equals(OsmPrimitiveType.NODE)) {
     59                if (rm.getType().equals(OsmPrimitiveType.NODE)) {
    5860
    59                                 if (rm.getNode().hasTag("public_transport", "stop_position")
    60                                                 || rm.getNode().hasTag("highway", "bus_stop")
    61                                                 || rm.getNode().hasTag("public_transport", "platform")
    62                                                 || rm.getNode().hasTag("highway", "platform") || rm.getNode().hasTag("railway", "platform")) {
    63                                         return true;
     61                        if (rm.getNode().hasTag("public_transport", "stop_position") || rm.getNode().hasTag("highway", "bus_stop")
     62                                        || rm.getNode().hasTag("public_transport", "platform") || rm.getNode().hasTag("highway", "platform")
     63                                        || rm.getNode().hasTag("railway", "platform")) {
     64                                return true;
    6465
    65                                 }
    66                         }
    67 
    68                         if (rm.getType().equals(OsmPrimitiveType.WAY)) {
    69                                 if (rm.getWay().hasTag("public_transport", "platform") || rm.getWay().hasTag("highway", "platform")
    70                                                 || rm.getWay().hasTag("railway", "platform")) {
    71                                         return true;
    72                                 }
    7366                        }
    7467                }
     68
     69                if (rm.getType().equals(OsmPrimitiveType.WAY)) {
     70                        if (rm.getWay().hasTag("public_transport", "platform") || rm.getWay().hasTag("highway", "platform")
     71                                        || rm.getWay().hasTag("railway", "platform")) {
     72                                return true;
     73                        }
     74                }
     75                // }
    7576
    7677                return false;
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/Checker.java

    r32299 r32585  
    55
    66import org.openstreetmap.josm.data.osm.Relation;
     7import org.openstreetmap.josm.data.osm.RelationMember;
    78import org.openstreetmap.josm.data.validation.Test;
    89import org.openstreetmap.josm.data.validation.TestError;
    9 
     10import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
    1011
    1112/**
    12  * Represents tests and fixed of the PT_Assistant plugin 
     13 * Represents tests and fixed of the PT_Assistant plugin
    1314 *
    1415 * @author darya
     
    1617 */
    1718public abstract class Checker {
    18        
     19
    1920        // test which created this WayChecker:
    2021        protected final Test test;
     
    2526        // stores all found errors:
    2627        protected ArrayList<TestError> errors = new ArrayList<>();
    27        
     28
    2829        protected Checker(Relation relation, Test test) {
    29                
     30
    3031                this.relation = relation;
    3132                this.test = test;
    3233
    3334        }
    34        
     35
    3536        /**
    3637         * Returns errors
     
    4041                return errors;
    4142        }
    42        
    43        
    44        
     43
     44        /**
     45         * Returns a list of stop-related route relation members with corrected
     46         * roles (if necessary)
     47         *
     48         * @return list of stop-related route relation members
     49         */
     50        protected static List<RelationMember> listStopMembers(Relation r) {
     51
     52                List<RelationMember> resultList = new ArrayList<>();
     53
     54                for (RelationMember rm : r.getMembers()) {
     55
     56                        if (RouteUtils.isPTStop(rm)) {
     57
     58                                if (rm.getMember().hasTag("public_transport", "stop_position")) {
     59                                        if (!rm.hasRole("stop") && !rm.hasRole("stop_entry_only") && !rm.hasRole("stop_exit_only")) {
     60                                                RelationMember newMember = new RelationMember("stop", rm.getMember());
     61                                                resultList.add(newMember);
     62                                        } else {
     63                                                resultList.add(rm);
     64                                        }
     65                                } else { // if platform
     66                                        if (!rm.hasRole("platform") && !rm.hasRole("platform_entry_only")
     67                                                        && !rm.hasRole("platform_exit_only")) {
     68                                                RelationMember newMember = new RelationMember("platform", rm.getMember());
     69                                                resultList.add(newMember);
     70                                        } else {
     71                                                resultList.add(rm);
     72                                        }
     73                                }
     74
     75                        }
     76                }
     77
     78                return resultList;
     79        }
     80
     81        /**
     82         * Returns a list of other (not stop-related) route relation members with
     83         * corrected roles (if necessary)
     84         *
     85         * @return list of other (not stop-related) route relation members
     86         */
     87        protected static List<RelationMember> listNotStopMembers(Relation r) {
     88
     89                List<RelationMember> resultList = new ArrayList<RelationMember>();
     90
     91                for (RelationMember rm : r.getMembers()) {
     92
     93                        if (!RouteUtils.isPTStop(rm)) {
     94
     95                                if (rm.hasRole("forward") || rm.hasRole("backward")) {
     96                                        RelationMember newMember = new RelationMember("", rm.getMember());
     97                                        resultList.add(newMember);
     98                                } else {
     99
     100                                        resultList.add(rm);
     101
     102                                }
     103                        }
     104
     105                }
     106
     107                return resultList;
     108        }
    45109
    46110}
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/WayChecker.java

    r32567 r32585  
    299299                commands.add(command2);
    300300
     301                List<RelationMember> sortedRelationMembers = listStopMembers(originalRelation);
     302                sortedRelationMembers.addAll(listNotStopMembers(originalRelation));
     303               
    301304                List<OsmDataLayer> listOfLayers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
    302305                for (OsmDataLayer osmDataLayer : listOfLayers) {
     
    304307
    305308                                final OsmDataLayer layerParameter = osmDataLayer;
    306                                 final Relation relationParameter = originalRelation;
     309                                final Relation relationParameter = new Relation(originalRelation);
     310                                relationParameter.setMembers(sortedRelationMembers);
    307311                                final Collection<OsmPrimitive> zoomParameter = primitivesToZoom;
    308312
     
    338342                RelationDialogManager.getRelationDialogManager().register(layer, r, editor);
    339343                editor.setVisible(true);
     344               
    340345
    341346
Note: See TracChangeset for help on using the changeset viewer.