Skip to content

Commit 625f8b7

Browse files
committed
Merge branch 'access-egress-via-routing' into v2
2 parents 1528ae5 + 81797e3 commit 625f8b7

File tree

157 files changed

+4106
-2002
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+4106
-2002
lines changed

application/src/ext-test/java/org/opentripplanner/ext/flex/template/ClosestTripTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void filter() {
9494
private static Collection<ClosestTrip> closestTrips(Matcher<Trip> matcher) {
9595
return ClosestTrip.of(
9696
ADAPTER,
97-
List.of(new NearbyStop(STOP, 100, List.of(), null)),
97+
List.of(new NearbyStop(STOP, 100, List.of(), List.of())),
9898
matcher,
9999
List.of(FSD),
100100
true

application/src/ext/java/org/opentripplanner/ext/carpooling/routing/CarpoolStreetRouter.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.util.Set;
55
import org.opentripplanner.astar.model.GraphPath;
66
import org.opentripplanner.astar.strategy.DurationSkipEdgeStrategy;
7-
import org.opentripplanner.astar.strategy.PathComparator;
87
import org.opentripplanner.framework.i18n.NonLocalizedString;
98
import org.opentripplanner.model.GenericLocation;
109
import org.opentripplanner.routing.api.request.RouteRequest;
@@ -195,13 +194,6 @@ private GraphPath<State, Edge, Vertex> carpoolRouting(
195194
.withFrom(fromVertices)
196195
.withTo(toVertices);
197196

198-
List<GraphPath<State, Edge, Vertex>> paths = streetSearch.getPathsToTarget();
199-
paths.sort(new PathComparator(request.arriveBy()));
200-
201-
if (paths.isEmpty()) {
202-
return null;
203-
}
204-
205-
return paths.getFirst();
197+
return streetSearch.getPathToTarget().orElse(null);
206198
}
207199
}

application/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ Stream<FlexAccessEgress> createFlexAccessEgressStream(FlexAccessEgressCallbackAd
107107
// transferStop is Location Area/Line
108108
else {
109109
double maxDistanceMeters =
110-
maxTransferDuration.getSeconds() * accessEgress.state.getRequest().walk().speed();
110+
maxTransferDuration.getSeconds() *
111+
accessEgress.lastStates.getFirst().getRequest().walk().speed();
111112

112113
return getTransfersFromTransferStop(callback)
113114
.stream()
@@ -192,7 +193,10 @@ private FlexAccessEgress createFlexAccessEgress(
192193
// this code is a little repetitive but needed as a performance improvement. previously
193194
// the flex path was checked before this method was called. this meant that every path
194195
// was traversed twice, leading to a noticeable slowdown.
195-
final var afterFlexState = flexEdge.traverse(accessEgress.state);
196+
197+
// TODO flex routing doesn't support via locations yet
198+
var lastState = accessEgress.lastStates.getFirst();
199+
final var afterFlexState = flexEdge.traverse(lastState);
196200
if (State.isEmpty(afterFlexState)) {
197201
return null;
198202
}

application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessTemplate.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ protected Vertex getFlexVertex(Edge edge) {
5858
}
5959

6060
protected FlexPathDurations calculateFlexPathDurations(FlexTripEdge flexEdge, State state) {
61-
int preFlexTime = (int) accessEgress.state.getElapsedTimeSeconds();
61+
int preFlexTime = (int) accessEgress.duration().getSeconds();
6262
int edgeTimeInSeconds = flexEdge.getTimeInSeconds();
6363
int postFlexTime = (int) state.getElapsedTimeSeconds() - preFlexTime - edgeTimeInSeconds;
6464
return new FlexPathDurations(
@@ -70,8 +70,10 @@ protected FlexPathDurations calculateFlexPathDurations(FlexTripEdge flexEdge, St
7070
}
7171

7272
protected FlexTripEdge getFlexEdge(Vertex flexToVertex, StopLocation transferStop) {
73+
// TODO flex doesn't support via locations yet
74+
var lastVertex = accessEgress.lastStates.getLast().getVertex();
7375
var flexPath = calculator.calculateFlexPath(
74-
accessEgress.state.getVertex(),
76+
lastVertex,
7577
flexToVertex,
7678
boardStopPosition,
7779
alightStopPosition
@@ -82,7 +84,7 @@ protected FlexTripEdge getFlexEdge(Vertex flexToVertex, StopLocation transferSto
8284
}
8385

8486
return new FlexTripEdge(
85-
accessEgress.state.getVertex(),
87+
lastVertex,
8688
flexToVertex,
8789
accessEgress.stop,
8890
transferStop,

application/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ private Optional<DirectFlexPath> createDirectGraphPath(
105105
int accessAlightStopPosition = accessTemplate.alightStopPosition;
106106
int requestedBookingTime = accessTemplate.requestedBookingTime;
107107

108-
var flexToVertex = egress.state.getVertex();
108+
// TODO flex doesn't support via locations yet
109+
var flexToVertex = egress.lastStates.getLast().getVertex();
109110

110111
if (!isRouteable(accessTemplate, flexToVertex)) {
111112
return Optional.empty();
@@ -117,7 +118,9 @@ private Optional<DirectFlexPath> createDirectGraphPath(
117118
return Optional.empty();
118119
}
119120

120-
final State[] afterFlexState = flexEdge.traverse(accessNearbyStop.state);
121+
// TODO flex doesn't support via locations yet
122+
var lastState = accessNearbyStop.lastStates.getLast();
123+
final State[] afterFlexState = flexEdge.traverse(lastState);
121124

122125
var finalStateOpt = EdgeTraverser.traverseEdges(afterFlexState[0], egress.edges);
123126

@@ -183,12 +186,14 @@ private Optional<DirectFlexPath> createDirectGraphPath(
183186
}
184187

185188
protected boolean isRouteable(FlexAccessTemplate accessTemplate, Vertex flexVertex) {
186-
if (accessTemplate.accessEgress.state.getVertex() == flexVertex) {
189+
// TODO flex doesn't support via locations yet
190+
var lastVertex = accessTemplate.accessEgress.lastStates.getLast().getVertex();
191+
if (lastVertex == flexVertex) {
187192
return false;
188193
} else {
189194
return (
190195
accessTemplate.calculator.calculateFlexPath(
191-
accessTemplate.accessEgress.state.getVertex(),
196+
lastVertex,
192197
flexVertex,
193198
accessTemplate.boardStopPosition,
194199
accessTemplate.alightStopPosition

application/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressTemplate.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ protected Vertex getFlexVertex(Edge edge) {
5959
}
6060

6161
protected FlexPathDurations calculateFlexPathDurations(FlexTripEdge flexEdge, State state) {
62-
int postFlexTime = (int) accessEgress.state.getElapsedTimeSeconds();
62+
int postFlexTime = (int) accessEgress.duration().getSeconds();
6363
int edgeTimeInSeconds = flexEdge.getTimeInSeconds();
6464
int preFlexTime = (int) state.getElapsedTimeSeconds() - postFlexTime - edgeTimeInSeconds;
6565
return new FlexPathDurations(
@@ -71,9 +71,11 @@ protected FlexPathDurations calculateFlexPathDurations(FlexTripEdge flexEdge, St
7171
}
7272

7373
protected FlexTripEdge getFlexEdge(Vertex flexFromVertex, StopLocation transferStop) {
74+
// TODO flex doesn't support via locations yet
75+
var lastVertex = accessEgress.lastStates.getLast().getVertex();
7476
var flexPath = calculator.calculateFlexPath(
7577
flexFromVertex,
76-
accessEgress.state.getVertex(),
78+
lastVertex,
7779
boardStopPosition,
7880
alightStopPosition
7981
);
@@ -84,7 +86,7 @@ protected FlexTripEdge getFlexEdge(Vertex flexFromVertex, StopLocation transferS
8486

8587
return new FlexTripEdge(
8688
flexFromVertex,
87-
accessEgress.state.getVertex(),
89+
lastVertex,
8890
transferStop,
8991
accessEgress.stop,
9092
trip,

application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public final class RideHailingAccessAdapter extends DefaultAccessEgress {
1414
private final Duration arrival;
1515

1616
public RideHailingAccessAdapter(RoutingAccessEgress access, Duration arrival) {
17-
super(access.stop(), access.getLastState());
17+
super(access.stop(), access.getLastStates());
1818
this.arrival = arrival;
1919
}
2020

application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.opentripplanner.routing.algorithm.raptoradapter.transit.RoutingAccessEgress;
1313
import org.opentripplanner.routing.api.request.RouteRequest;
1414
import org.opentripplanner.routing.api.request.StreetMode;
15+
import org.opentripplanner.street.search.state.State;
1516
import org.opentripplanner.transit.model.framework.Result;
1617
import org.slf4j.Logger;
1718
import org.slf4j.LoggerFactory;
@@ -45,7 +46,7 @@ public static List<RoutingAccessEgress> shiftAccesses(
4546
.map(ae -> {
4647
// only time-shift access legs on a car
4748
// (there could be walk-only accesses if you're close to the stop)
48-
if (isAccess && ae.getLastState().containsModeCar()) {
49+
if (isAccess && ae.getLastStates().stream().allMatch(State::containsModeCar)) {
4950
var duration = fetchArrivalDelay(services, request, now);
5051
if (duration.isSuccess()) {
5152
return new RideHailingAccessAdapter(ae, duration.successValue());

application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ public DataFetcher<Object> node() {
457457
var stop = transitService.getRegularStop(FeedScopedId.parse(parts[1]));
458458

459459
// TODO: Add geometry
460-
return new NearbyStop(stop, Integer.parseInt(parts[0]), null, null);
460+
return new NearbyStop(stop, Integer.parseInt(parts[0]), List.of(), List.of());
461461
}
462462
case "TicketType":
463463
return null; //TODO

application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/StopImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,12 @@ public DataFetcher<Iterable<NearbyStop>> transfers() {
443443
.filter(transfer -> maxDistance == null || transfer.getDistanceMeters() < maxDistance)
444444
.filter(transfer -> transfer.to instanceof RegularStop)
445445
.map(transfer ->
446-
new NearbyStop(transfer.to, transfer.getDistanceMeters(), transfer.getEdges(), null)
446+
new NearbyStop(
447+
transfer.to,
448+
transfer.getDistanceMeters(),
449+
transfer.getEdges(),
450+
List.of()
451+
)
447452
)
448453
.collect(Collectors.toList());
449454
},

0 commit comments

Comments
 (0)