@Inject public NetworkWithSignalsTurnInfoBuilder(Scenario scenario) { this.scenario = scenario ; delegate = new NetworkTurnInfoBuilder( scenario ) ; }
@Override public Map<Id<Link>, List<TurnInfo>> createAllowedTurnInfos(){ Map<Id<Link>, List<TurnInfo>> allowedInLinkTurnInfoMap = new HashMap<>(); createAndAddTurnInfo(TransportMode.car, allowedInLinkTurnInfoMap); if ( scenario.getConfig().network().getLaneDefinitionsFile()!=null || // scenario.getConfig().qsim().isUseLanes()) { Lanes ld = scenario.getLanes(); Map<Id<Link>, List<TurnInfo>> lanesTurnInfoMap = createTurnInfos(ld); mergeTurnInfoMaps(allowedInLinkTurnInfoMap, lanesTurnInfoMap); } return allowedInLinkTurnInfoMap; }
@Override public Map<Id<Link>, List<TurnInfo>> createAllowedTurnInfos() { Map<Id<Link>, List<TurnInfo>> allowedInLinkTurnInfoMap = delegate.createAllowedTurnInfos(); final SignalSystemsConfigGroup signalsConfig = ConfigUtils.addOrGetModule( scenario.getConfig(), SignalSystemsConfigGroup.GROUP_NAME, SignalSystemsConfigGroup.class); if (signalsConfig.isUseSignalSystems()) { SignalSystemsData ssd = ((SignalsData)scenario .getScenarioElement(SignalsData.ELEMENT_NAME)).getSignalSystemsData(); Map<Id<Link>, List<TurnInfo>> signalsTurnInfoMap = SignalsTurnInfoBuilder .createSignalsTurnInfos(ssd); delegate.mergeTurnInfoMaps(allowedInLinkTurnInfoMap, signalsTurnInfoMap); } return allowedInLinkTurnInfoMap; } }
List<TurnInfo> allowedTurnInfos = new ArrayList<TurnInfo>(e.getValue()); for (TurnInfo allowedForOutlink : allowedTurnInfos) { TurnInfo restrictionForOutlink = getTurnInfoForOutlinkId( restrictingTurnInfos, allowedForOutlink.getToLinkId()); if (restrictionForOutlink == null) { // there is no turn at all allowed from the inLink to the outLink Set<String> commonModes = this.calculateCommonModes( restrictionForOutlink, allowedForOutlink); Set<String> allowedModes = allowedForOutlink.getModes();
private void invertNetwork(){ this.invertedNetwork = NetworkUtils.createNetwork(); int numberOfNodesGenerated = 0; int numberOfLinksGenerated = 0; for (Link link : this.originalNetwork.getLinks().values()) { NetworkUtils.createAndAddNode(this.invertedNetwork, Id.create(link.getId(), Node.class), link.getToNode().getCoord()); numberOfNodesGenerated++; } for (Node node : this.originalNetwork.getNodes().values()) { for (Link inLink : node.getInLinks().values()) { for (Link outLink : node.getOutLinks().values()) { List<TurnInfo> turnInfos = this.inLinkTurnInfoMap.get(inLink.getId()); TurnInfo ti = NetworkTurnInfoBuilder.getTurnInfoForOutlinkId(turnInfos, outLink.getId()); if (ti != null){ numberOfLinksGenerated = this.createInvertedLink(inLink, outLink, numberOfLinksGenerated, ti.getModes()); } } } } log.info("Generated " + numberOfNodesGenerated + " Nodes and " + numberOfLinksGenerated + " Links"); // Debug only // NetworkWriter myNetworkWriter = new NetworkWriter(wrappedNetwork, // "wrappedNetwork"); // myNetworkWriter.write(); }
"mode", f.s.getPopulation().getFactory(), f.s.getNetwork(), lcpFactory,tc, tt, new NetworkTurnInfoBuilder(f.s));