Skip to content

Commit 04274c3

Browse files
committed
Fix access/egress when via locations don't have coordinates
1 parent b7a6929 commit 04274c3

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/street/ViaAccessEgressRouter.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.time.Instant;
55
import java.util.ArrayList;
66
import java.util.Collection;
7-
import java.util.List;
87
import java.util.OptionalInt;
98
import java.util.Set;
109
import org.opentripplanner.astar.spi.TraverseVisitor;
@@ -48,10 +47,28 @@ Collection<NearbyStop> findStreetAccessEgresses(
4847
Set<Vertex> ignoreVertices,
4948
float maxCarSpeed
5049
) {
50+
var accessEgressRequest = getViaFriendlyRequest(request);
51+
var firstVertices = accessOrEgress.isAccess()
52+
? linkingContext.findVertices(accessEgressRequest.from())
53+
: linkingContext.findVertices(accessEgressRequest.to());
54+
var stopsFromFirstLocation = StreetNearbyStopFinder.of(
55+
stopResolver,
56+
durationLimit,
57+
maxStopCount
58+
)
59+
.withIgnoreVertices(ignoreVertices)
60+
.withExtensionRequestContexts(extensionRequestContexts)
61+
.build()
62+
.findNearbyStops(
63+
firstVertices,
64+
accessEgressRequest,
65+
streetRequest,
66+
accessOrEgress.isEgress()
67+
);
5168
var lastViaWithCoordinates = lastCoordinateViaLocationIndex(request, accessOrEgress);
5269
// There are no coordinate locations to route to/from
5370
if (lastViaWithCoordinates.isEmpty()) {
54-
return List.of();
71+
return stopsFromFirstLocation;
5572
}
5673
var graphPathFinder = new GraphPathFinder(
5774
traverseVisitor,
@@ -63,13 +80,13 @@ Collection<NearbyStop> findStreetAccessEgresses(
6380
accessOrEgress,
6481
lastViaWithCoordinates.getAsInt()
6582
);
66-
var accessEgressRequest = getViaFriendlyRequest(request);
6783
return accessOrEgress.isAccess()
6884
? findStreetAccesses(
6985
accessEgressRequest,
7086
directRequest,
7187
streetRequest,
7288
extensionRequestContexts,
89+
stopsFromFirstLocation,
7390
durationLimit,
7491
maxStopCount,
7592
linkingContext,
@@ -81,6 +98,7 @@ Collection<NearbyStop> findStreetAccessEgresses(
8198
directRequest,
8299
streetRequest,
83100
extensionRequestContexts,
101+
stopsFromFirstLocation,
84102
durationLimit,
85103
maxStopCount,
86104
linkingContext,
@@ -94,19 +112,14 @@ private Collection<NearbyStop> findStreetAccesses(
94112
RouteRequest directRequest,
95113
StreetRequest streetRequest,
96114
Collection<ExtensionRequestContext> extensionRequestContexts,
115+
Collection<NearbyStop> stopsFromFirstLocation,
97116
Duration durationLimit,
98117
int maxStopCount,
99118
LinkingContext linkingContext,
100119
Set<Vertex> ignoreVertices,
101120
GraphPathFinder graphPathFinder
102121
) {
103-
var originVertices = linkingContext.findVertices(accessEgressRequest.from());
104-
var stopsFromOrigin = StreetNearbyStopFinder.of(stopResolver, durationLimit, maxStopCount)
105-
.withIgnoreVertices(ignoreVertices)
106-
.withExtensionRequestContexts(extensionRequestContexts)
107-
.build()
108-
.findNearbyStops(originVertices, accessEgressRequest, streetRequest, false);
109-
var nearbyStops = new ArrayList<>(stopsFromOrigin);
122+
var nearbyStops = new ArrayList<>(stopsFromFirstLocation);
110123
var paths = directRouter.findDepartAfterPaths(
111124
linkingContext,
112125
graphPathFinder,
@@ -156,19 +169,14 @@ private Collection<NearbyStop> findStreetEgresses(
156169
RouteRequest directRequest,
157170
StreetRequest streetRequest,
158171
Collection<ExtensionRequestContext> extensionRequestContexts,
172+
Collection<NearbyStop> stopsFromFirstLocation,
159173
Duration durationLimit,
160174
int maxStopCount,
161175
LinkingContext linkingContext,
162176
Set<Vertex> ignoreVertices,
163177
GraphPathFinder graphPathFinder
164178
) {
165-
var originVertices = linkingContext.findVertices(accessEgressRequest.to());
166-
var stopsFromOrigin = StreetNearbyStopFinder.of(stopResolver, durationLimit, maxStopCount)
167-
.withIgnoreVertices(ignoreVertices)
168-
.withExtensionRequestContexts(extensionRequestContexts)
169-
.build()
170-
.findNearbyStops(originVertices, accessEgressRequest, streetRequest, true);
171-
var nearbyStops = new ArrayList<>(stopsFromOrigin);
179+
var nearbyStops = new ArrayList<>(stopsFromFirstLocation);
172180
var paths = directRouter.findArriveByPaths(
173181
linkingContext,
174182
graphPathFinder,

0 commit comments

Comments
 (0)