private Map<Id<Link>, List<TurnInfo>> createTurnInfos(Lanes laneDefs) { Map<Id<Link>, List<TurnInfo>> inLinkIdTurnInfoMap = new HashMap<>(); Set<Id<Link>> toLinkIds = new HashSet<>(); for (LanesToLinkAssignment l2l : laneDefs.getLanesToLinkAssignments().values()) { toLinkIds.clear(); for (Lane lane : l2l.getLanes().values()) { if (lane.getToLinkIds() != null && (lane.getToLaneIds() == null || lane.getToLaneIds().isEmpty())) { // make sure that it is a lane at the end of a link toLinkIds.addAll(lane.getToLinkIds()); } } if (!toLinkIds.isEmpty()) { List<TurnInfo> turnInfoList = new ArrayList<TurnInfo>(); for (Id<Link> toLinkId : toLinkIds) { turnInfoList.add(new TurnInfo(l2l.getLinkId(), toLinkId)); } inLinkIdTurnInfoMap.put(l2l.getLinkId(), turnInfoList); } } return inLinkIdTurnInfoMap; }
public static Map<Id<Link>, List<TurnInfo>> createSignalsTurnInfos(SignalSystemsData ssd) { Map<Id<Link>, List<TurnInfo>> inLinkIdTurnInfoMap = new HashMap<Id<Link>, List<TurnInfo>>(); for (SignalSystemData signalSystem : ssd.getSignalSystemData().values()){ for (SignalData signal : signalSystem.getSignalData().values()){ if (signal.getTurningMoveRestrictions() != null && ! signal.getTurningMoveRestrictions().isEmpty()){ if (warnCount < 1){ log.warn("Turning move restrictions for signals are implemented for TransportMode.car only, yet!"); warnCount++; } if (!inLinkIdTurnInfoMap.containsKey(signal.getLinkId())){ inLinkIdTurnInfoMap.put(signal.getLinkId(), new ArrayList<TurnInfo>()); } Set<String> modeCar = new HashSet<String>(); modeCar.add(TransportMode.car); for (Id<Link> toLinkId : signal.getTurningMoveRestrictions()){ TurnInfo ti = new TurnInfo(signal.getLinkId(), toLinkId, modeCar); inLinkIdTurnInfoMap.get(signal.getLinkId()).add(ti); } } } } return inLinkIdTurnInfoMap; } }
for (Map.Entry<Id<Link>, Boolean> toLinkEntry : fromLinkEntry.getValue().entrySet()) { if (toLinkEntry.getValue()) { turns.add(new TurnInfo(fromLinkId, toLinkEntry.getKey()));
turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class)));
turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class), walkOnly)); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class), carOnly));
turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class)));
turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class), walkOnly)); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class), carOnly)); turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("2", Link.class))); // u-turn turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("4", Link.class))); turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("2", Link.class), walkCar)); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("4", Link.class), walkCar)); // u-turn turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class), walkCar)); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("6", Link.class), emptySet)); // u-turn
turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class), walkOnly)); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class), carOnly)); turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("2", Link.class))); turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("4", Link.class))); turns.add(new TurnInfo(Id.create("1", Link.class), Id.create("6", Link.class))); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("2", Link.class), walkCar)); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("4", Link.class), walkCar)); turns.add(new TurnInfo(Id.create("3", Link.class), Id.create("6", Link.class), walkCar)); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("2", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("4", Link.class))); turns.add(new TurnInfo(Id.create("5", Link.class), Id.create("6", Link.class)));
Id<Link> id2 = Id.create("2", Link.class); TurnInfo ti1 = new TurnInfo(id1, id2); TurnInfo ti2 = new TurnInfo(id1, id2, modes1); TurnInfo ti3 = new TurnInfo(id1, id2, modes2); TurnInfo ti4 = new TurnInfo(id2, id1); TurnInfo ti5 = new TurnInfo(id2, id1, modes1); TurnInfo ti6 = new TurnInfo(id2, id1, modes2); TurnInfo ti22 = new TurnInfo(id1, id2, modes1); TurnInfo ti44 = new TurnInfo(id2, id1);