Skip to content

Commit

Permalink
Remove special treatment of distances
Browse files Browse the repository at this point in the history
  • Loading branch information
michaz committed Jun 27, 2018
1 parent 7bc95e4 commit caf3bc2
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 37 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -163,19 +163,6 @@ int calcNTransfers(EdgeIteratorState edge) {
return flagEncoder.getTransfers(edge.getFlags()); return flagEncoder.getTransfers(edge.getFlags());
} }


double getWalkDistance(EdgeIteratorState edge) {
GtfsStorage.EdgeType edgeType = flagEncoder.getEdgeType(edge.getFlags());
switch (edgeType) {
case HIGHWAY:
return edge.getDistance();
case ENTER_PT:
case EXIT_PT:
return 10.0;
default:
return 0.0;
}
}

EdgeIteratorState getEdgeIteratorState(int edgeId, int adjNode) { EdgeIteratorState getEdgeIteratorState(int edgeId, int adjNode) {
if (edgeId == -1) { if (edgeId == -1) {
throw new RuntimeException(); throw new RuntimeException();
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ void wireUpStops() {


EdgeIteratorState exitEdge = graph.edge(stopExitNode, streetNode); EdgeIteratorState exitEdge = graph.edge(stopExitNode, streetNode);
exitEdge.setFlags(encoder.setAccess(exitEdge.getFlags(), true, false)); exitEdge.setFlags(encoder.setAccess(exitEdge.getFlags(), true, false));
setEdgeType(exitEdge, GtfsStorage.EdgeType.EXIT_PT); setEdgeTypeAndClearDistance(exitEdge, GtfsStorage.EdgeType.EXIT_PT);
exitEdge.setFlags(encoder.setValidityId(exitEdge.getFlags(), route.route_type)); exitEdge.setFlags(encoder.setValidityId(exitEdge.getFlags(), route.route_type));
exitEdge.setName(stop.stop_name); exitEdge.setName(stop.stop_name);
gtfsStorage.getRoutes().put(exitEdge.getEdge(), routeId); gtfsStorage.getRoutes().put(exitEdge.getEdge(), routeId);
Expand All @@ -245,7 +245,7 @@ void wireUpStops() {


EdgeIteratorState entryEdge = graph.edge(streetNode, stopEnterNode); EdgeIteratorState entryEdge = graph.edge(streetNode, stopEnterNode);
entryEdge.setFlags(encoder.setAccess(entryEdge.getFlags(), true, false)); entryEdge.setFlags(encoder.setAccess(entryEdge.getFlags(), true, false));
setEdgeType(entryEdge, GtfsStorage.EdgeType.ENTER_PT); setEdgeTypeAndClearDistance(entryEdge, GtfsStorage.EdgeType.ENTER_PT);
entryEdge.setFlags(encoder.setValidityId(entryEdge.getFlags(), route.route_type)); entryEdge.setFlags(encoder.setValidityId(entryEdge.getFlags(), route.route_type));
entryEdge.setName(stop.stop_name); entryEdge.setName(stop.stop_name);
gtfsStorage.getRoutes().put(entryEdge.getEdge(), routeId); gtfsStorage.getRoutes().put(entryEdge.getEdge(), routeId);
Expand Down Expand Up @@ -275,15 +275,15 @@ void wireUpAdditionalDepartures(ZoneId zoneId) {
Fun.Tuple2<Integer, Integer> before = headSet.last(); Fun.Tuple2<Integer, Integer> before = headSet.last();
EdgeIteratorState edge = graph.edge(before.b, timelineNode.b); EdgeIteratorState edge = graph.edge(before.b, timelineNode.b);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.WAIT); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.WAIT);
edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a-before.a)); edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a-before.a));
} }
SortedSet<Fun.Tuple2<Integer, Integer>> tailSet = staticTimelineNodesForRoute.tailSet(timelineNode); SortedSet<Fun.Tuple2<Integer, Integer>> tailSet = staticTimelineNodesForRoute.tailSet(timelineNode);
if (!tailSet.isEmpty()) { if (!tailSet.isEmpty()) {
Fun.Tuple2<Integer, Integer> after = tailSet.first(); Fun.Tuple2<Integer, Integer> after = tailSet.first();
EdgeIteratorState edge = graph.edge(timelineNode.b, after.b); EdgeIteratorState edge = graph.edge(timelineNode.b, after.b);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.WAIT); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.WAIT);
edge.setFlags(encoder.setTime(edge.getFlags(), after.a-timelineNode.a)); edge.setFlags(encoder.setTime(edge.getFlags(), after.a-timelineNode.a));


// System.out.println(" "+ after); // System.out.println(" "+ after);
Expand All @@ -298,7 +298,7 @@ void wireUpAdditionalDepartures(ZoneId zoneId) {


EdgeIteratorState edge = graph.edge(platformNode, timelineNode.b); EdgeIteratorState edge = graph.edge(platformNode, timelineNode.b);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK);
edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a)); edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a));
setFeedIdWithTimezone(edge, new GtfsStorage.FeedIdWithTimezone(id, zoneId)); setFeedIdWithTimezone(edge, new GtfsStorage.FeedIdWithTimezone(id, zoneId));
}); });
Expand All @@ -308,7 +308,7 @@ void wireUpAdditionalDepartures(ZoneId zoneId) {
nodeAccess.setAdditionalNodeField(stopEnterNode, NodeType.STOP_ENTER_NODE.ordinal()); nodeAccess.setAdditionalNodeField(stopEnterNode, NodeType.STOP_ENTER_NODE.ordinal());
EdgeIteratorState entryEdge = graph.edge(stationNode, stopEnterNode); EdgeIteratorState entryEdge = graph.edge(stationNode, stopEnterNode);
entryEdge.setFlags(encoder.setAccess(entryEdge.getFlags(), true, false)); entryEdge.setFlags(encoder.setAccess(entryEdge.getFlags(), true, false));
setEdgeType(entryEdge, GtfsStorage.EdgeType.ENTER_PT); setEdgeTypeAndClearDistance(entryEdge, GtfsStorage.EdgeType.ENTER_PT);
entryEdge.setName(stop.stop_name); entryEdge.setName(stop.stop_name);
NavigableSet<Fun.Tuple2<Integer, Integer>> timeNodes = sorted(timelineNodesWithTripId); NavigableSet<Fun.Tuple2<Integer, Integer>> timeNodes = sorted(timelineNodesWithTripId);
wireUpAndAndConnectDepartureTimeline(stop, routeId,stopEnterNode, timeNodes); wireUpAndAndConnectDepartureTimeline(stop, routeId,stopEnterNode, timeNodes);
Expand All @@ -324,7 +324,7 @@ void wireUpAdditionalDepartures(ZoneId zoneId) {
realtimeTimelineIterator.forEachRemaining(timelineNode -> { realtimeTimelineIterator.forEachRemaining(timelineNode -> {
EdgeIteratorState edge = graph.edge(timelineNode.b, platformNode); EdgeIteratorState edge = graph.edge(timelineNode.b, platformNode);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.LEAVE_TIME_EXPANDED_NETWORK); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.LEAVE_TIME_EXPANDED_NETWORK);
edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a)); edge.setFlags(encoder.setTime(edge.getFlags(), timelineNode.a));
setFeedIdWithTimezone(edge, new GtfsStorage.FeedIdWithTimezone(id, zoneId)); setFeedIdWithTimezone(edge, new GtfsStorage.FeedIdWithTimezone(id, zoneId));
}); });
Expand All @@ -334,7 +334,7 @@ void wireUpAdditionalDepartures(ZoneId zoneId) {
nodeAccess.setAdditionalNodeField(stopExitNode, NodeType.STOP_EXIT_NODE.ordinal()); nodeAccess.setAdditionalNodeField(stopExitNode, NodeType.STOP_EXIT_NODE.ordinal());
EdgeIteratorState exitEdge = graph.edge(stopExitNode, stationNode); EdgeIteratorState exitEdge = graph.edge(stopExitNode, stationNode);
exitEdge.setFlags(encoder.setAccess(exitEdge.getFlags(), true, false)); exitEdge.setFlags(encoder.setAccess(exitEdge.getFlags(), true, false));
setEdgeType(exitEdge, GtfsStorage.EdgeType.EXIT_PT); setEdgeTypeAndClearDistance(exitEdge, GtfsStorage.EdgeType.EXIT_PT);
exitEdge.setName(stop.stop_name); exitEdge.setName(stop.stop_name);
wireUpAndAndConnectArrivalTimeline(stop, routeId,stopExitNode, timeNodes); wireUpAndAndConnectArrivalTimeline(stop, routeId,stopExitNode, timeNodes);
} }
Expand Down Expand Up @@ -460,7 +460,7 @@ void addTrip(ZoneId zoneId, int time, List<TripWithStopTimeAndArrivalNode> arriv
edge.setDistance(distance); edge.setDistance(distance);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
edge.setName(stop.stop_name); edge.setName(stop.stop_name);
setEdgeType(edge, GtfsStorage.EdgeType.HOP); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.HOP);
edge.setFlags(encoder.setTime(edge.getFlags(), stopTime.arrival_time - prev.departure_time)); edge.setFlags(encoder.setTime(edge.getFlags(), stopTime.arrival_time - prev.departure_time));
gtfsStorage.getStopSequences().put(edge.getEdge(), stopTime.stop_sequence); gtfsStorage.getStopSequences().put(edge.getEdge(), stopTime.stop_sequence);
} }
Expand Down Expand Up @@ -491,7 +491,7 @@ void addTrip(ZoneId zoneId, int time, List<TripWithStopTimeAndArrivalNode> arriv
EdgeIteratorState boardEdge = graph.edge(departureTimelineNode, departureNode); EdgeIteratorState boardEdge = graph.edge(departureTimelineNode, departureNode);
boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false)); boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false));
boardEdge.setName(getRouteName(feed, trip.trip)); boardEdge.setName(getRouteName(feed, trip.trip));
setEdgeType(boardEdge, GtfsStorage.EdgeType.BOARD); setEdgeTypeAndClearDistance(boardEdge, GtfsStorage.EdgeType.BOARD);
while (boardEdges.size() < stopTime.stop_sequence) { while (boardEdges.size() < stopTime.stop_sequence) {
boardEdges.add(-1); // Padding, so that index == stop_sequence boardEdges.add(-1); // Padding, so that index == stop_sequence
} }
Expand All @@ -504,7 +504,7 @@ void addTrip(ZoneId zoneId, int time, List<TripWithStopTimeAndArrivalNode> arriv
EdgeIteratorState alightEdge = graph.edge(arrivalNode, arrivalTimelineNode); EdgeIteratorState alightEdge = graph.edge(arrivalNode, arrivalTimelineNode);
alightEdge.setFlags(encoder.setAccess(alightEdge.getFlags(), true, false)); alightEdge.setFlags(encoder.setAccess(alightEdge.getFlags(), true, false));
alightEdge.setName(getRouteName(feed, trip.trip)); alightEdge.setName(getRouteName(feed, trip.trip));
setEdgeType(alightEdge, GtfsStorage.EdgeType.ALIGHT); setEdgeTypeAndClearDistance(alightEdge, GtfsStorage.EdgeType.ALIGHT);
while (alightEdges.size() < stopTime.stop_sequence) { while (alightEdges.size() < stopTime.stop_sequence) {
alightEdges.add(-1); alightEdges.add(-1);
} }
Expand All @@ -518,7 +518,7 @@ void addTrip(ZoneId zoneId, int time, List<TripWithStopTimeAndArrivalNode> arriv
EdgeIteratorState dwellEdge = graph.edge(arrivalNode, departureNode); EdgeIteratorState dwellEdge = graph.edge(arrivalNode, departureNode);
dwellEdge.setFlags(encoder.setAccess(dwellEdge.getFlags(), true, false)); dwellEdge.setFlags(encoder.setAccess(dwellEdge.getFlags(), true, false));
dwellEdge.setName(getRouteName(feed, trip.trip)); dwellEdge.setName(getRouteName(feed, trip.trip));
setEdgeType(dwellEdge, GtfsStorage.EdgeType.DWELL); setEdgeTypeAndClearDistance(dwellEdge, GtfsStorage.EdgeType.DWELL);
dwellEdge.setFlags(encoder.setTime(dwellEdge.getFlags(), stopTime.departure_time - stopTime.arrival_time)); dwellEdge.setFlags(encoder.setTime(dwellEdge.getFlags(), stopTime.departure_time - stopTime.arrival_time));
if (prev == null) { if (prev == null) {
insertInboundBlockTransfers(arrivalNodes, tripDescriptor, departureNode, stopTime, stop, validOn, zoneId); insertInboundBlockTransfers(arrivalNodes, tripDescriptor, departureNode, stopTime, stop, validOn, zoneId);
Expand Down Expand Up @@ -556,7 +556,7 @@ int addDelayedBoardEdge(ZoneId zoneId, GtfsRealtime.TripDescriptor tripDescripto
EdgeIteratorState boardEdge = graph.edge(departureTimelineNode, departureNode); EdgeIteratorState boardEdge = graph.edge(departureTimelineNode, departureNode);
boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false)); boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false));
boardEdge.setName(getRouteName(feed, trip)); boardEdge.setName(getRouteName(feed, trip));
setEdgeType(boardEdge, GtfsStorage.EdgeType.BOARD); setEdgeTypeAndClearDistance(boardEdge, GtfsStorage.EdgeType.BOARD);
gtfsStorage.getStopSequences().put(boardEdge.getEdge(), stopSequence); gtfsStorage.getStopSequences().put(boardEdge.getEdge(), stopSequence);
gtfsStorage.getTripDescriptors().put(boardEdge.getEdge(), tripDescriptor.toByteArray()); gtfsStorage.getTripDescriptors().put(boardEdge.getEdge(), tripDescriptor.toByteArray());
boardEdge.setFlags(encoder.setValidityId(boardEdge.getFlags(), validityId)); boardEdge.setFlags(encoder.setValidityId(boardEdge.getFlags(), validityId));
Expand All @@ -571,14 +571,14 @@ private void wireUpAndAndConnectArrivalTimeline(Stop toStop, String routeId, int
for (Fun.Tuple2<Integer, Integer> e : timeNodes.descendingSet()) { for (Fun.Tuple2<Integer, Integer> e : timeNodes.descendingSet()) {
EdgeIteratorState leaveTimeExpandedNetworkEdge = graph.edge(e.b, stopExitNode); EdgeIteratorState leaveTimeExpandedNetworkEdge = graph.edge(e.b, stopExitNode);
leaveTimeExpandedNetworkEdge.setFlags(encoder.setAccess(leaveTimeExpandedNetworkEdge.getFlags(), true, false)); leaveTimeExpandedNetworkEdge.setFlags(encoder.setAccess(leaveTimeExpandedNetworkEdge.getFlags(), true, false));
setEdgeType(leaveTimeExpandedNetworkEdge, GtfsStorage.EdgeType.LEAVE_TIME_EXPANDED_NETWORK); setEdgeTypeAndClearDistance(leaveTimeExpandedNetworkEdge, GtfsStorage.EdgeType.LEAVE_TIME_EXPANDED_NETWORK);
int arrivalTime = e.a; int arrivalTime = e.a;
leaveTimeExpandedNetworkEdge.setFlags(encoder.setTime(leaveTimeExpandedNetworkEdge.getFlags(), arrivalTime)); leaveTimeExpandedNetworkEdge.setFlags(encoder.setTime(leaveTimeExpandedNetworkEdge.getFlags(), arrivalTime));
setFeedIdWithTimezone(leaveTimeExpandedNetworkEdge, new GtfsStorage.FeedIdWithTimezone(id, zoneId)); setFeedIdWithTimezone(leaveTimeExpandedNetworkEdge, new GtfsStorage.FeedIdWithTimezone(id, zoneId));
if (prev != -1) { if (prev != -1) {
EdgeIteratorState edge = graph.edge(e.b, prev); EdgeIteratorState edge = graph.edge(e.b, prev);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.WAIT_ARRIVAL); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.WAIT_ARRIVAL);
edge.setName(toStop.stop_name); edge.setName(toStop.stop_name);
edge.setFlags(encoder.setTime(edge.getFlags(), time-e.a)); edge.setFlags(encoder.setTime(edge.getFlags(), time-e.a));
} }
Expand Down Expand Up @@ -606,13 +606,13 @@ private void wireUpAndAndConnectDepartureTimeline(Stop toStop, String toRouteId,
EdgeIteratorState enterTimeExpandedNetworkEdge = graph.edge(stopEnterNode, e.b); EdgeIteratorState enterTimeExpandedNetworkEdge = graph.edge(stopEnterNode, e.b);
enterTimeExpandedNetworkEdge.setFlags(encoder.setAccess(enterTimeExpandedNetworkEdge.getFlags(), true, false)); enterTimeExpandedNetworkEdge.setFlags(encoder.setAccess(enterTimeExpandedNetworkEdge.getFlags(), true, false));
enterTimeExpandedNetworkEdge.setName(toStop.stop_name); enterTimeExpandedNetworkEdge.setName(toStop.stop_name);
setEdgeType(enterTimeExpandedNetworkEdge, GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK); setEdgeTypeAndClearDistance(enterTimeExpandedNetworkEdge, GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK);
enterTimeExpandedNetworkEdge.setFlags(encoder.setTime(enterTimeExpandedNetworkEdge.getFlags(), e.a)); enterTimeExpandedNetworkEdge.setFlags(encoder.setTime(enterTimeExpandedNetworkEdge.getFlags(), e.a));
setFeedIdWithTimezone(enterTimeExpandedNetworkEdge, new GtfsStorage.FeedIdWithTimezone(id, zoneId)); setFeedIdWithTimezone(enterTimeExpandedNetworkEdge, new GtfsStorage.FeedIdWithTimezone(id, zoneId));
if (prev != -1) { if (prev != -1) {
EdgeIteratorState edge = graph.edge(e.b, prev); EdgeIteratorState edge = graph.edge(e.b, prev);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.WAIT); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.WAIT);
edge.setName(toStop.stop_name); edge.setName(toStop.stop_name);
edge.setFlags(encoder.setTime(edge.getFlags(), time-e.a)); edge.setFlags(encoder.setTime(edge.getFlags(), time-e.a));
} }
Expand All @@ -623,7 +623,7 @@ private void wireUpAndAndConnectDepartureTimeline(Stop toStop, String toRouteId,
EdgeIteratorState edge = graph.edge(timeNodes.last().b, timeNodes.first().b); EdgeIteratorState edge = graph.edge(timeNodes.last().b, timeNodes.first().b);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
int rolloverTime = 24 * 60 * 60 - timeNodes.last().a + timeNodes.first().a; int rolloverTime = 24 * 60 * 60 - timeNodes.last().a + timeNodes.first().a;
setEdgeType(edge, GtfsStorage.EdgeType.OVERNIGHT); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.OVERNIGHT);
edge.setName(toStop.stop_name); edge.setName(toStop.stop_name);
edge.setFlags(encoder.setTime(edge.getFlags(), rolloverTime)); edge.setFlags(encoder.setTime(edge.getFlags(), rolloverTime));
} }
Expand Down Expand Up @@ -652,11 +652,11 @@ private void insertInboundBlockTransfers(List<TripWithStopTimeAndArrivalNode> ar
nodeAccess.setAdditionalNodeField(i-1, NodeType.INTERNAL_PT.ordinal()); nodeAccess.setAdditionalNodeField(i-1, NodeType.INTERNAL_PT.ordinal());
EdgeIteratorState transferEdge = graph.edge(lastTrip.arrivalNode,i-1); EdgeIteratorState transferEdge = graph.edge(lastTrip.arrivalNode,i-1);
transferEdge.setFlags(encoder.setAccess(transferEdge.getFlags(), true, false)); transferEdge.setFlags(encoder.setAccess(transferEdge.getFlags(), true, false));
setEdgeType(transferEdge, GtfsStorage.EdgeType.TRANSFER); setEdgeTypeAndClearDistance(transferEdge, GtfsStorage.EdgeType.TRANSFER);
transferEdge.setFlags(encoder.setTime(transferEdge.getFlags(), dwellTime)); transferEdge.setFlags(encoder.setTime(transferEdge.getFlags(), dwellTime));
EdgeIteratorState boardEdge = graph.edge(i-1, departureNode); EdgeIteratorState boardEdge = graph.edge(i-1, departureNode);
boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false)); boardEdge.setFlags(encoder.setAccess(boardEdge.getFlags(), true, false));
setEdgeType(boardEdge, GtfsStorage.EdgeType.BOARD); setEdgeTypeAndClearDistance(boardEdge, GtfsStorage.EdgeType.BOARD);
boardEdge.setFlags(encoder.setValidityId(boardEdge.getFlags(), blockTransferValidityId)); boardEdge.setFlags(encoder.setValidityId(boardEdge.getFlags(), blockTransferValidityId));
gtfsStorage.getStopSequences().put(boardEdge.getEdge(), stopTime.stop_sequence); gtfsStorage.getStopSequences().put(boardEdge.getEdge(), stopTime.stop_sequence);
gtfsStorage.getTripDescriptors().put(boardEdge.getEdge(), tripDescriptor.toByteArray()); gtfsStorage.getTripDescriptors().put(boardEdge.getEdge(), tripDescriptor.toByteArray());
Expand Down Expand Up @@ -691,7 +691,7 @@ private void insertInboundTransfers(String fromStopId, String from_route_id, int
Fun.Tuple2<Integer, Integer> e = tailSet.first(); Fun.Tuple2<Integer, Integer> e = tailSet.first();
EdgeIteratorState edge = graph.edge(j.getAdjNode(), e.b); EdgeIteratorState edge = graph.edge(j.getAdjNode(), e.b);
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.TRANSFER); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.TRANSFER);
edge.setFlags(encoder.setTime(edge.getFlags(), e.a - arrivalTime)); edge.setFlags(encoder.setTime(edge.getFlags(), e.a - arrivalTime));
} }
} }
Expand Down Expand Up @@ -720,7 +720,7 @@ private void insertOutboundTransfers(String toStopId, String toRouteId, int mini
} }
EdgeIteratorState edge = graph.edge(e.b, j.getAdjNode()); EdgeIteratorState edge = graph.edge(e.b, j.getAdjNode());
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeType(edge, GtfsStorage.EdgeType.TRANSFER); setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.TRANSFER);
edge.setFlags(encoder.setTime(edge.getFlags(), departureTime - e.a)); edge.setFlags(encoder.setTime(edge.getFlags(), departureTime - e.a));
break; break;
} }
Expand All @@ -736,7 +736,8 @@ private String getRouteName(GTFSFeed feed, Trip trip) {
return (route.route_long_name != null ? route.route_long_name : route.route_short_name) + " " + trip.trip_headsign; return (route.route_long_name != null ? route.route_long_name : route.route_short_name) + " " + trip.trip_headsign;
} }


private void setEdgeType(EdgeIteratorState edge, GtfsStorage.EdgeType edgeType) { private void setEdgeTypeAndClearDistance(EdgeIteratorState edge, GtfsStorage.EdgeType edgeType) {
edge.setDistance(0.0);
edge.setFlags(encoder.setEdgeType(edge.getFlags(), edgeType)); edge.setFlags(encoder.setEdgeType(edge.getFlags(), edgeType));
} }


Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public boolean tryAdvance(Consumer<? super Label> action) {
firstPtDepartureTime = nextTime - label.walkTime; firstPtDepartureTime = nextTime - label.walkTime;
} }
} }
double walkDistanceOnCurrentLeg = (!reverse && edgeType == GtfsStorage.EdgeType.BOARD || reverse && edgeType == GtfsStorage.EdgeType.ALIGHT) ? 0 : (label.walkDistanceOnCurrentLeg + explorer.getWalkDistance(edge)); double walkDistanceOnCurrentLeg = (!reverse && edgeType == GtfsStorage.EdgeType.BOARD || reverse && edgeType == GtfsStorage.EdgeType.ALIGHT) ? 0 : (label.walkDistanceOnCurrentLeg + edge.getDistance());
boolean isTryingToReEnterPtAfterTransferWalking = (!reverse && edgeType == GtfsStorage.EdgeType.ENTER_PT || reverse && edgeType == GtfsStorage.EdgeType.EXIT_PT) && label.nTransfers > 0 && label.walkDistanceOnCurrentLeg > maxTransferDistancePerLeg; boolean isTryingToReEnterPtAfterTransferWalking = (!reverse && edgeType == GtfsStorage.EdgeType.ENTER_PT || reverse && edgeType == GtfsStorage.EdgeType.EXIT_PT) && label.nTransfers > 0 && label.walkDistanceOnCurrentLeg > maxTransferDistancePerLeg;
long walkTime = label.walkTime + (edgeType == GtfsStorage.EdgeType.HIGHWAY || edgeType == GtfsStorage.EdgeType.ENTER_PT || edgeType == GtfsStorage.EdgeType.EXIT_PT ? nextTime - label.currentTime : 0); long walkTime = label.walkTime + (edgeType == GtfsStorage.EdgeType.HIGHWAY || edgeType == GtfsStorage.EdgeType.ENTER_PT || edgeType == GtfsStorage.EdgeType.EXIT_PT ? nextTime - label.currentTime : 0);
int nWalkDistanceConstraintViolations = Math.min(1, label.nWalkDistanceConstraintViolations + ( int nWalkDistanceConstraintViolations = Math.min(1, label.nWalkDistanceConstraintViolations + (
Expand Down

0 comments on commit caf3bc2

Please sign in to comment.