Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- forwardEdge = bestWeightMapFrom.get(viaNode);
- reverseEdge = bestWeightMapTo.get(viaNode);
- double unpackedUntilDistance = 0;
- while(forwardEdge.edge != -1) {
- double parentDist = forwardEdge.parent != null ? forwardEdge.parent.distance : 0;
- double dist = forwardEdge.distance - parentDist;
- if(unpackedUntilDistance + dist >= T_THRESHOLD) {
- EdgeSkipIterState edgeState = (EdgeSkipIterState) graph.getEdgeProps(forwardEdge.edge, forwardEdge.adjNode);
- unpackStack.add(new EdgePair(edgeState, false));
- sV = forwardEdge.adjNode;
- forwardEdge = forwardEdge.parent;
- break;
- }
- else {
- unpackedUntilDistance += dist;
- forwardEdge = forwardEdge.parent;
- sV = forwardEdge.adjNode;
- }
- }
- int oldSV = forwardEdge.adjNode;
- EdgeEntry oldForwardEdge = forwardEdge;
- PathBidirRef p = (PathBidirRef) algo.calcPath(oldSV, oldVT);
- Path4CHAlt p1 = new Path4CHAlt(graph, flagEncoder);
- p1.setSwitchToFrom(false);
- p1.setEdgeEntry(oldForwardEdge);
- p1.segmentEdgeEntry = p.edgeEntry;
- double weight = oldForwardEdge.weight + oldReverseEdge.weight + p.edgeEntry.weight + p.edgeTo.weight;
- p1.setWeight(weight);
- p1.edgeTo = oldReverseEdge;
- p1.segmentEdgeTo = p.edgeTo;
- Path p2 = p1.extract();
- public class Path4CHAlt extends Path4CH {
- private boolean switchWrapper = false;
- public EdgeEntry segmentEdgeTo;
- public EdgeEntry segmentEdgeEntry;
- public Path4CHAlt( Graph g, FlagEncoder encoder )
- {
- super(g, encoder);
- }
- public Path4CHAlt setSwitchToFrom( boolean b )
- {
- switchWrapper = b;
- return this;
- }
- @Override
- public Path extract()
- {
- System.out.println("Path4CHAlt extract");
- if (edgeEntry == null || edgeTo == null || segmentEdgeEntry == null || segmentEdgeTo == null)
- return this;
- if (switchWrapper)
- {
- EdgeEntry ee = edgeEntry;
- edgeEntry = edgeTo;
- edgeTo = ee;
- ee = segmentEdgeEntry;
- segmentEdgeEntry = segmentEdgeTo;
- segmentEdgeTo = ee;
- }
- EdgeEntry currEdge = segmentEdgeEntry;
- while (EdgeIterator.Edge.isValid(currEdge.edge))
- {
- processEdge(currEdge.edge, currEdge.adjNode);
- currEdge = currEdge.parent;
- }
- currEdge.parent = edgeEntry;
- currEdge = edgeEntry;
- while (EdgeIterator.Edge.isValid(currEdge.edge))
- {
- processEdge(currEdge.edge, currEdge.adjNode);
- currEdge = currEdge.parent;
- }
- setFromNode(currEdge.adjNode);
- reverseOrder();
- currEdge = segmentEdgeTo;
- int tmpEdge = currEdge.edge;
- while (EdgeIterator.Edge.isValid(tmpEdge))
- {
- currEdge = currEdge.parent;
- processEdge(tmpEdge, currEdge.adjNode);
- tmpEdge = currEdge.edge;
- }
- currEdge.parent = edgeTo;
- currEdge = edgeTo;
- tmpEdge = currEdge.edge;
- while (EdgeIterator.Edge.isValid(tmpEdge))
- {
- currEdge = currEdge.parent;
- processEdge(tmpEdge, currEdge.adjNode);
- tmpEdge = currEdge.edge;
- }
- setEndNode(currEdge.adjNode);
- return setFound(true);
- }
- }
- java.lang.NullPointerException
- at com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:62)
- at com.graphhopper.routing.ch.Path4CH.processEdge(Path4CH.java:56)
- at com.graphhopper.routing.PathBidirRef.extract(PathBidirRef.java:95)
- at com.graphhopper.routing.DijkstraBidirectionRef.extractPath(DijkstraBidirectionRef.java:99)
- at com.graphhopper.routing.AbstractBidirAlgo.runAlgo(AbstractBidirAlgo.java:74)
- at com.graphhopper.routing.AbstractBidirAlgo.calcPath(AbstractBidirAlgo.java:60)
- java.lang.IllegalStateException: Edge 1506012 was empty when requested with node 1289685, array index:0, edges:318
- at com.graphhopper.routing.Path.forEveryEdge(Path.java:253)
- at com.graphhopper.routing.Path.calcInstructions(Path.java:349)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement