private Map<TransitStopFacility, InitialNode> locateWrappedNearestTransitStops(Person person, Coord coord, double departureTime) { Collection<TransitStopFacility> nearestTransitStops = this.transitRouterQuadTree.getNearestTransitStopFacilities(coord, this.config.getSearchRadius()); if (nearestTransitStops.size() < 2) { // also enlarge search area if only one stop found, maybe a second one is near the border of the search area TransitStopFacility nearestTransitStop = this.transitRouterQuadTree.getNearestTransitStopFacility(coord); double distance = CoordUtils.calcEuclideanDistance(coord, nearestTransitStop.getCoord()); nearestTransitStops = this.transitRouterQuadTree.getNearestTransitStopFacilities(coord, distance + this.config.getExtensionRadius()); } Map<TransitStopFacility, InitialNode> wrappedNearestTransitStops2AccessCost = new LinkedHashMap<>(); for (TransitStopFacility node : nearestTransitStops) { Coord toCoord = node.getCoord(); double initialTime = getWalkTime(null, coord, toCoord); double initialCost = getWalkDisutility(coord, toCoord); wrappedNearestTransitStops2AccessCost.put(node, new InitialNode(initialCost, initialTime + departureTime)); } return wrappedNearestTransitStops2AccessCost; }
private Map<Node, InitialNode> locateWrappedNearestTransitNodes(Person person, Coord coord, double departureTime){ Collection<TransitRouterNetworkWW.TransitRouterNetworkNode> nearestNodes = this.transitNetwork.getNearestNodes(coord, this.config.getSearchRadius()); if (nearestNodes.size() < 2) { // also enlarge search area if only one stop found, maybe a second one is near the border of the search area TransitRouterNetworkWW.TransitRouterNetworkNode nearestNode = this.transitNetwork.getNearestNode(coord); double distance = CoordUtils.calcEuclideanDistance(coord, nearestNode.stop.getStopFacility().getCoord()); nearestNodes = this.transitNetwork.getNearestNodes(coord, distance + this.config.getExtensionRadius()); } Map<Node, InitialNode> wrappedNearestNodes = new LinkedHashMap<Node, InitialNode>(); for (TransitRouterNetworkWW.TransitRouterNetworkNode node : nearestNodes) { Coord toCoord = node.stop.getStopFacility().getCoord(); double initialTime = getWalkTime(person, coord, toCoord); double initialCost = getWalkDisutility(person, coord, toCoord); wrappedNearestNodes.put(node, new InitialNode(initialCost, initialTime + departureTime)); } return wrappedNearestNodes; }
private Map<Node, InitialNode> locateWrappedNearestTransitNodes(Person person, Coord coord, double departureTime) { Collection<TransitRouterNetwork.TransitRouterNetworkNode> nearestNodes = getTransitRouterNetwork().getNearestNodes( coord, this.getConfig().getSearchRadius()); if (nearestNodes.size() < 2) { // also enlarge search area if only one stop found, maybe a second one is near the border of the search area TransitRouterNetwork.TransitRouterNetworkNode nearestNode = this.getTransitRouterNetwork() .getNearestNode(coord); if (nearestNode != null) { // transit schedule might be completely empty! double distance = CoordUtils.calcEuclideanDistance(coord, nearestNode.stop.getStopFacility().getCoord()); nearestNodes = this.getTransitRouterNetwork() .getNearestNodes(coord, distance + this.getConfig().getExtensionRadius()); } } Map<Node, InitialNode> wrappedNearestNodes = new LinkedHashMap<>(); for (TransitRouterNetwork.TransitRouterNetworkNode node : nearestNodes) { Coord toCoord = node.stop.getStopFacility().getCoord(); double initialTime = getWalkTime(person, coord, toCoord); double initialCost = getWalkDisutility(person, coord, toCoord); wrappedNearestNodes.put(node, new InitialNode(initialCost, initialTime + departureTime)); } return wrappedNearestNodes; }
Assert.assertEquals(123.4, config.getExtensionRadius(), 1e-8); Assert.assertEquals(23.4, config.getBeelineWalkConnectionDistance(), 1e-8); Assert.assertEquals(123.4, config.getExtensionRadius(), 1e-8); Assert.assertEquals(23.4, config.getBeelineWalkConnectionDistance(), 1e-8);