Changeset 32521 in osm for applications/editors/josm/plugins/pt_assistant
- Timestamp:
- 2016-07-02T02:21:25+02:00 (9 years ago)
- Location:
- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java
r32497 r32521 11 11 import javax.swing.Action; 12 12 import javax.swing.Icon; 13 import javax.swing.JOptionPane; 13 14 14 15 import org.openstreetmap.josm.Main; … … 57 58 @Override 58 59 public void paint(final Graphics2D g, final MapView mv, Bounds bounds) { 59 60 60 61 paintVisitor = new PTAssistantPaintVisitor(g, mv); 61 62 for (OsmPrimitive primitive : primitives) { … … 162 163 if (!Main.getLayerManager().containsLayer(this)) { 163 164 Main.getLayerManager().addLayer(this); 165 Main.map.repaint(); 164 166 } 165 167 -
applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java
r32505 r32521 6 6 import java.awt.Point; 7 7 import java.util.ArrayList; 8 import java.util.Collections; 9 import java.util.Comparator; 8 10 import java.util.HashMap; 11 import java.util.HashSet; 9 12 import java.util.List; 10 13 … … 39 42 40 43 if (RouteUtils.isPTStop(rm)) { 41 44 42 45 drawStop(rm.getMember()); 43 44 46 45 47 } else if (RouteUtils.isPTWay(rm)) { … … 61 63 HashMap<Long, String> stopOrderMap = new HashMap<>(); 62 64 int stopCount = 1; 63 65 64 66 for (RelationMember rm : r.getMembers()) { 65 67 if (RouteUtils.isPTStop(rm) || (rm.getMember().isIncomplete() && (rm.isNode() || rm.hasRole("stop") 66 68 || rm.hasRole("stop_entry_only") || rm.hasRole("stop_exit_only") || rm.hasRole("platform") 67 69 || rm.hasRole("platform_entry_only") || rm.hasRole("platform_exit_only")))) { 68 70 69 71 String label = ""; 70 72 … … 139 141 continue; 140 142 } 141 this.drawSegment(lastN, n, new Color( 208, 80, 208, 179), oneway);143 this.drawSegment(lastN, n, new Color(128, 0, 128, 100), oneway); 142 144 lastN = n; 143 145 } … … 186 188 187 189 double t = Math.atan2((double) p2.x - p1.x, (double) p2.y - p1.y); 188 double cosT = 8* Math.cos(t);189 double sinT = 8* Math.sin(t);190 double cosT = 9 * Math.cos(t); 191 double sinT = 9 * Math.sin(t); 190 192 191 193 int[] xPoints = { (int) (p1.x + cosT), (int) (p2.x + cosT), (int) (p2.x - cosT), (int) (p1.x - cosT) }; … … 193 195 g.setColor(color); 194 196 g.fillPolygon(xPoints, yPoints, 4); 195 g.fillOval((int) (p1.x - 8), (int) (p1.y -8), 16, 16);196 g.fillOval((int) (p2.x - 8), (int) (p2.y -8), 16, 16);197 g.fillOval((int) (p1.x - 9), (int) (p1.y - 9), 18, 18); 198 g.fillOval((int) (p2.x - 9), (int) (p2.y - 9), 18, 18); 197 199 198 200 if (oneway != 0) { … … 263 265 Point p = mv.getPoint(n); 264 266 265 Color fillColor = null; 266 267 if (primitive.hasTag("bus", "yes")) { 268 fillColor = Color.BLUE; 269 } else if (primitive.hasTag("tram", "yes")) { 270 fillColor = Color.RED; 271 } // TODO: add more options 272 g.setColor(fillColor); 267 g.setColor(Color.BLUE); 273 268 274 269 if (primitive.hasTag("public_transport", "stop_position")) { … … 294 289 // draw the ref values of all parent routes: 295 290 List<String> parentsLabelList = new ArrayList<>(); 296 String parentsLabel = "";297 291 for (OsmPrimitive parent : primitive.getReferrers()) { 298 292 if (parent.getType().equals(OsmPrimitiveType.RELATION)) { 299 293 Relation relation = (Relation) parent; 300 if (RouteUtils.isTwoDirectionRoute(relation)) { 294 if (RouteUtils.isTwoDirectionRoute(relation) && relation.get("ref") != null && !relation.get("ref").equals("")) { 301 295 302 296 boolean stringFound = false; … … 307 301 } 308 302 if (!stringFound) { 309 parentsLabel = parentsLabel + relation.get("ref") + ";";310 303 parentsLabelList.add(relation.get("ref")); 311 304 } … … 313 306 } 314 307 } 308 } 309 310 Collections.sort(parentsLabelList, new RefTagComparator()); 311 312 String parentsLabel = ""; 313 for (String s : parentsLabelList) { 314 parentsLabel = parentsLabel + s + ";"; 315 315 } 316 316 … … 318 318 // remove the last semicolon: 319 319 parentsLabel = parentsLabel.substring(0, parentsLabel.length() - 1); 320 g.setColor(new Color(150, 150, 150)); 320 321 g.setColor(new Color(128, 0, 128)); 321 322 Font parentLabelFont = new Font("SansSerif", Font.ITALIC, 20); 322 323 g.setFont(parentLabelFont); 323 g.drawString(parentsLabel, p.x + 20, p.y); 324 g.drawString(parentsLabel, p.x + 20, p.y + 20); 325 } 326 327 } 328 329 private class RefTagComparator implements Comparator<String> { 330 331 @Override 332 public int compare(String s1, String s2) { 333 334 if (s1 == null || s1.equals("")) { 335 if (s2 == null || s2.equals("")) { 336 return 0; 337 } else { 338 return 1; 339 } 340 } 341 342 String firstNumberString1 = s1.split("\\D+")[0]; 343 String firstNumberString2 = s2.split("\\D+")[0]; 344 345 try { 346 int firstNumber1 = Integer.valueOf(firstNumberString1); 347 int firstNumber2 = Integer.valueOf(firstNumberString2); 348 if (firstNumber1 > firstNumber2) { 349 return 1; 350 } else if (firstNumber1 < firstNumber2) { 351 return -1; 352 } else { 353 // if the first number is the same: 354 355 return s1.compareTo(s2); 356 357 } 358 } catch (NumberFormatException ex) { 359 return s1.compareTo(s2); 360 } 361 324 362 } 325 363 -
applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssitantValidatorTest.java
r32497 r32521 4 4 5 5 import java.util.ArrayList; 6 import java.util.Collection;7 6 import java.util.List; 8 7 9 8 import javax.swing.JOptionPane; 10 9 11 import org.openstreetmap.josm.command.ChangeCommand;12 10 import org.openstreetmap.josm.command.Command; 13 11 import org.openstreetmap.josm.command.SequenceCommand; 14 12 import org.openstreetmap.josm.data.osm.DataSet; 15 import org.openstreetmap.josm.data.osm.OsmPrimitive;16 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;17 13 import org.openstreetmap.josm.data.osm.Relation; 18 import org.openstreetmap.josm.data.osm.RelationMember;19 import org.openstreetmap.josm.data.osm.Way;20 14 import org.openstreetmap.josm.data.validation.Severity; 21 15 import org.openstreetmap.josm.data.validation.Test; 22 16 import org.openstreetmap.josm.data.validation.TestError; 23 import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;24 17 import org.openstreetmap.josm.plugins.pt_assistant.actions.FixTask; 25 18 import org.openstreetmap.josm.plugins.pt_assistant.actions.IncompleteMembersDownloadThread; … … 286 279 } 287 280 288 // private Command fixErrorByRemovingWay(TestError testError) {289 //290 // if (testError.getCode() != ERROR_CODE_ROAD_TYPE && testError.getCode() != ERROR_CODE_DIRECTION) {291 // return null;292 // }293 //294 // Collection<? extends OsmPrimitive> primitives = testError.getPrimitives();295 // Relation originalRelation = (Relation) primitives.iterator().next();296 // Collection<?> highlighted = testError.getHighlighted();297 // Way wayToRemove = (Way) highlighted.iterator().next();298 //299 // Relation modifiedRelation = new Relation(originalRelation);300 // List<RelationMember> modifiedRelationMembers = new ArrayList<>(originalRelation.getMembersCount() - 1);301 //302 // // copy PT stops first, PT ways last:303 // for (RelationMember rm : originalRelation.getMembers()) {304 // if (RouteUtils.isPTStop(rm)) {305 //306 // if (rm.getRole().equals("stop_position")) {307 // if (rm.getType().equals(OsmPrimitiveType.NODE)) {308 // RelationMember newMember = new RelationMember("stop", rm.getNode());309 // modifiedRelationMembers.add(newMember);310 // } else { // if it is a way:311 // RelationMember newMember = new RelationMember("stop", rm.getWay());312 // modifiedRelationMembers.add(newMember);313 // }314 // } else {315 // // if the relation member does not have the role316 // // "stop_position":317 // modifiedRelationMembers.add(rm);318 // }319 //320 // }321 // }322 //323 // // now copy PT ways:324 // for (RelationMember rm : originalRelation.getMembers()) {325 // if (RouteUtils.isPTWay(rm)) {326 // Way wayToCheck = rm.getWay();327 // if (wayToCheck != wayToRemove) {328 // if (rm.getRole().equals("forward") || rm.getRole().equals("backward")) {329 // RelationMember modifiedMember = new RelationMember("", wayToCheck);330 // modifiedRelationMembers.add(modifiedMember);331 // } else {332 // modifiedRelationMembers.add(rm);333 // }334 // }335 // }336 // }337 //338 // modifiedRelation.setMembers(modifiedRelationMembers);339 //340 // ChangeCommand changeCommand = new ChangeCommand(originalRelation, modifiedRelation);341 //342 // return changeCommand;343 // }344 //345 // private Command fixSortingError(TestError testError) {346 // if (testError.getCode() != ERROR_CODE_SORTING) {347 // return null;348 // }349 //350 // Collection<? extends OsmPrimitive> primitives = testError.getPrimitives();351 // Relation originalRelation = (Relation) primitives.iterator().next();352 //353 // // separate ways from stops (because otherwise the order of354 // // stops/platforms can be messed up by the sorter:355 // List<RelationMember> members = originalRelation.getMembers();356 // final List<RelationMember> stops = new ArrayList<>();357 // final List<RelationMember> ways = new ArrayList<>();358 // for (RelationMember member : members) {359 // if (RouteUtils.isPTWay(member)) {360 // if (member.getRole().equals("")) {361 // ways.add(member);362 // } else {363 // RelationMember modifiedMember = new RelationMember("", member.getWay());364 // ways.add(modifiedMember);365 // }366 //367 // } else { // stops:368 // if (member.getRole().equals("stop_positon")) {369 // // it is not expected that stop_positions could370 // // be relations371 // if (member.getType().equals(OsmPrimitiveType.NODE)) {372 // RelationMember modifiedMember = new RelationMember("stop", member.getNode());373 // stops.add(modifiedMember);374 // } else { // if it is a primitive of type way:375 // RelationMember modifiedMember = new RelationMember("stop", member.getWay());376 // stops.add(modifiedMember);377 // }378 // } else { // if it is not a stop_position:379 // stops.add(member);380 // }381 //382 // }383 // }384 //385 // // sort the ways:386 // RelationSorter sorter = new RelationSorter();387 // List<RelationMember> sortedWays = sorter.sortMembers(ways);388 //389 // // create a new relation to pass to the command:390 // Relation sortedRelation = new Relation(originalRelation);391 // List<RelationMember> sortedRelationMembers = new ArrayList<>(members.size());392 // for (RelationMember rm : stops) {393 // sortedRelationMembers.add(rm);394 // }395 // for (RelationMember rm : sortedWays) {396 // sortedRelationMembers.add(rm);397 // }398 // sortedRelation.setMembers(sortedRelationMembers);399 //400 // ChangeCommand changeCommand = new ChangeCommand(originalRelation, sortedRelation);401 //402 // return changeCommand;403 //404 // }405 281 406 282 private void performDummyTest(Relation r) {
Note:
See TracChangeset
for help on using the changeset viewer.