public Network getInvertedNetwork() { if (this.invertedNetwork == null){ invertNetwork(); } return this.invertedNetwork; }
LinkToLinkRoutingModule(final String mode, final PopulationFactory populationFactory, Network network, LeastCostPathCalculatorFactory leastCostPathCalcFactory, TravelDisutilityFactory travelCostCalculatorFactory, LinkToLinkTravelTime l2ltravelTimes, NetworkTurnInfoBuilderI turnInfoBuilder) { this.network = network; this.populationFactory = populationFactory; this.mode = mode; invertedNetwork = new NetworkInverter(network, turnInfoBuilder.createAllowedTurnInfos()).getInvertedNetwork(); // convert l2ltravelTimes into something that can be used by the inverted network router: TravelTimesInvertedNetworkProxy invertedTravelTimes = new TravelTimesInvertedNetworkProxy(network, l2ltravelTimes); // (method that takes a getLinkTravelTime( link , ...) with a link from the inverted network, converts it into links on the // original network, and looks up the link2link tttime in the l2ltravelTimes data structure) TravelDisutility travelCost = travelCostCalculatorFactory.createTravelDisutility(invertedTravelTimes); leastCostPathCalculator = leastCostPathCalcFactory.createPathCalculator(invertedNetwork, travelCost, invertedTravelTimes); }
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(); }