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 boolean allDownstreamLinksEmpty(SignalData signal){ if (signal.getTurningMoveRestrictions() != null) { return allLinksEmpty(signal.getTurningMoveRestrictions()); } // else: if (signal.getLaneIds() != null && !signal.getLaneIds().isEmpty()) { Set<Id<Link>> toLinks = new HashSet<>(); for (Id<Lane> laneId : signal.getLaneIds()) { Lane lane = lanes.getLanesToLinkAssignments().get(signal.getLinkId()).getLanes().get(laneId); toLinks.addAll(lane.getToLinkIds()); } return allLinksEmpty(toLinks); } // else: // if no turning move restrictions and no lanes with to links are set, turning is allowed to all outgoing links Node systemNode = this.network.getLinks().get(signal.getLinkId()).getToNode(); return allLinksEmpty(systemNode.getOutLinks().keySet()); }
toLinkIds.addAll(lane.getLaneData().getToLinkIds()); laneIdToLinksMap.put(laneId, toLinkIds); } else { // lane is within the link and has no connection to a node
for (Id<Link> toLinkId : signalizedLane.getToLinkIds()) { setOfLinkTuplesPerSignal.get(signal.getId()).add(new Tuple<Id<Link>, Id<Link>>(signal.getLinkId(), toLinkId));
ModelLane qLane = laneStack.pop(); if (qLane.getToLanes() == null || (qLane.getToLanes().isEmpty())) { for (Id<Link> toLinkId : qLane.getLaneData().getToLinkIds()){ qLane.addDestinationLink(toLinkId);
else if (lane.getToLinkIds() != null){ for (Id<Link> toLinkId : lane.getToLinkIds()) { if (! this.network.getLinks().containsKey(toLinkId)){ log.error("No link found in network for toLinkId " + toLinkId + " of laneId " + lane.getId() + " of link id " + l2l.getLinkId());
xmllane.setId(bl.getId().toString()); if ((bl.getToLinkIds() == null && bl.getToLaneIds() != null) || (bl.getToLinkIds() != null && bl.getToLaneIds() == null)){ xmllane.setLeadsTo(fac.createXMLLaneTypeXMLLeadsTo()); if (bl.getToLinkIds() != null){ for (Id<Link> id : bl.getToLinkIds()) { XMLIdRefType xmlToLink = fac.createXMLIdRefType(); xmlToLink.setRefId(id.toString());
if (!rightOfWayLane.getToLinkIds().contains(rightOfWayDir.getToLink())) {
VisLane otfLane = lanesLinkData.getLaneData().get(lane.getLaneData().getId().toString()); if (lane.getToLanes() == null || lane.getToLanes().isEmpty()){ for (Id<Link> id : lane.getLaneData().getToLinkIds()){ otfLane.addToLinkId(id.toString());
Lane lane = lanes.get(0); assertEquals(laneId3, lane.getId()); assertEquals(linkId1, lane.getToLinkIds().get(0)); assertEquals(45.0, lane.getStartsAtMeterFromLinkEnd(), EPSILON); assertEquals(1.0, lane.getNumberOfRepresentedLanes()); lane = lanes.get(0); assertEquals(laneId1, lane.getId()); assertEquals(linkId1, lane.getToLinkIds().get(0)); assertEquals(45.0, lane.getStartsAtMeterFromLinkEnd(), EPSILON); assertEquals(1900.0, lane.getCapacityVehiclesPerHour(), EPSILON);