@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
private NavigableMap<Integer, Integer> findDepartureTimelineForPlatform(int platformEnterNode) { TreeMap<Integer, Integer> result = new TreeMap<>(); if (platformEnterNode == -1) { return result; } EdgeIterator edge = graph.getBaseGraph().createEdgeExplorer(DefaultEdgeFilter.outEdges(encoder)).setBaseNode(platformEnterNode); while (edge.next()) { if (encoder.getEdgeType(edge.getFlags()) == GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK) { result.put((int) encoder.getTime(edge.getFlags()), edge.getAdjNode()); } } return result; }
private int findPlatformNode(int stationNode, GtfsStorageI.PlatformDescriptor platformDescriptor, GtfsStorage.EdgeType edgeType) { DefaultEdgeFilter filter; if (edgeType == GtfsStorage.EdgeType.ENTER_PT) { filter = DefaultEdgeFilter.outEdges(encoder); } else if (edgeType == GtfsStorage.EdgeType.EXIT_PT) { filter = DefaultEdgeFilter.inEdges(encoder); } else { throw new RuntimeException(); } EdgeIterator i = graph.getBaseGraph().createEdgeExplorer(filter).setBaseNode(stationNode); while (i.next()) { if (encoder.getEdgeType(i.getFlags()) == edgeType) { if (platformDescriptor.equals(gtfsStorage.getRoutes().get(i.getEdge()))) { return i.getAdjNode(); } } } return -1; }
public QueryGraph(Graph graph) { mainGraph = graph; mainNodeAccess = graph.getNodeAccess(); mainNodes = graph.getNodes(); mainEdges = graph.getAllEdges().length(); if (mainGraph.getExtension() instanceof TurnCostExtension) wrappedExtension = new QueryGraphTurnExt(); else wrappedExtension = mainGraph.getExtension(); // create very lightweight QueryGraph which uses variables from this QueryGraph (same virtual edges) baseGraph = new QueryGraph(graph.getBaseGraph(), this) { // override method to avoid stackoverflow @Override public QueryGraph setUseEdgeExplorerCache(boolean useEECache) { baseGraph.useEdgeExplorerCache = useEECache; return baseGraph; } }; }
private void insertOutboundTransfers(String toStopId, String toRouteId, int minimumTransferTime, NavigableMap<Integer, Integer> fromStopTimelineNodes) { int stationNode = gtfsStorage.getStationNodes().get(toStopId); EdgeIterator i = graph.getBaseGraph().createEdgeExplorer().setBaseNode(stationNode); while (i.next()) { GtfsStorage.EdgeType edgeType = encoder.getEdgeType(i.getFlags()); if (edgeType == GtfsStorage.EdgeType.ENTER_PT) { GtfsStorageI.PlatformDescriptor routeId = gtfsStorage.getRoutes().get(i.getEdge()); if (toRouteId == null || routeId instanceof GtfsStorageI.RouteTypePlatform || GtfsStorageI.PlatformDescriptor.route(toRouteId).equals(routeId)) { fromStopTimelineNodes.forEach((time, e) -> { EdgeIterator j = graph.getBaseGraph().createEdgeExplorer().setBaseNode(i.getAdjNode()); while (j.next()) { GtfsStorage.EdgeType edgeType2 = encoder.getEdgeType(j.getFlags()); if (edgeType2 == GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK) { int departureTime = (int) encoder.getTime(j.getFlags()); if (departureTime < time + minimumTransferTime) { continue; } EdgeIteratorState edge = graph.edge(e, j.getAdjNode()); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.TRANSFER); edge.setFlags(encoder.setTime(edge.getFlags(), departureTime - time)); break; } } }); } } } }
public CacheablePath4CH(Graph chGraph, FlagEncoder encoder, HashMap<EdgeExpansionCacheKey, DistanceTime> expansionCache) { super(chGraph.getBaseGraph(), encoder); this.routingGraph = chGraph; this.expansionCache = expansionCache; this.encoder = encoder; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), flagEncoder); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), flagEncoder); return bestPath; }
@Override protected Path createAndInitPath() { bestPath = new Path4CH(graph, graph.getBaseGraph(), weighting); return bestPath; }
private DistanceTime unpackSingleEdge2DistTime(int tmpEdge, int endNode, boolean isReverseOrder) { Path tmpPath = unpackSingleEdge(routingGraph, routingGraph.getBaseGraph(), encoder, tmpEdge, endNode,isReverseOrder); DistanceTime dtTmp = new DistanceTime(tmpPath.getDistance(), tmpPath.getTime()); return dtTmp; }
public QueryGraph( Graph graph ) { mainGraph = graph; mainNodeAccess = graph.getNodeAccess(); mainNodes = graph.getNodes(); mainEdges = graph.getAllEdges().getMaxId(); if (mainGraph.getExtension() instanceof TurnCostExtension) wrappedExtension = new QueryGraphTurnExt(); else wrappedExtension = mainGraph.getExtension(); // create very lightweight QueryGraph which uses variables from this QueryGraph (same virtual edges) baseGraph = new QueryGraph(graph.getBaseGraph(), this); }
public QueryGraph(Graph graph) { mainGraph = graph; mainNodeAccess = graph.getNodeAccess(); mainNodes = graph.getNodes(); mainEdges = graph.getAllEdges().length(); if (mainGraph.getExtension() instanceof TurnCostExtension) wrappedExtension = new QueryGraphTurnExt(); else wrappedExtension = mainGraph.getExtension(); // create very lightweight QueryGraph which uses variables from this QueryGraph (same virtual edges) baseGraph = new QueryGraph(graph.getBaseGraph(), this) { // override method to avoid stackoverflow @Override public QueryGraph setUseEdgeExplorerCache(boolean useEECache) { baseGraph.useEdgeExplorerCache = useEECache; return baseGraph; } }; }
public QueryGraph(Graph graph) { mainGraph = graph; mainNodeAccess = graph.getNodeAccess(); mainNodes = graph.getNodes(); mainEdges = graph.getAllEdges().getMaxId(); if (mainGraph.getExtension() instanceof TurnCostExtension) wrappedExtension = new QueryGraphTurnExt(); else wrappedExtension = mainGraph.getExtension(); // create very lightweight QueryGraph which uses variables from this QueryGraph (same virtual edges) baseGraph = new QueryGraph(graph.getBaseGraph(), this) { // override method to avoid stackoverflow @Override public QueryGraph setUseEdgeExplorerCache(boolean useEECache) { baseGraph.useEdgeExplorerCache = useEECache; return baseGraph; } }; }