@@ -247,32 +247,6 @@ gtfs_csa <- function (gtfs, start_stns, end_stns, start_time,
247247 if (nrow (route ) == 0 ) {
248248 return (NULL )
249249 }
250- # Algorithm can generate transfers which transfer back again, because
251- # transfers are incremented at arrival stations, so even on same trip_id,
252- # can still have incremented value as algorithm progresses. These need to
253- # be detected here, and 'max_transfers' reduced to remove intermediate
254- # transfers. This is a very unsatisfactory solution to
255- # https://github.com/UrbanAnalyst/gtfsrouter/issues/140;
256- # full solution will come when #71 is one day implemented.
257- trip_nums <- unique (route $ trip_number )
258- back_transfers <- vapply (trip_nums , function (n ) {
259- length (unique (diff (which (route $ trip_number == n ))))
260- }, integer (1L ))
261- max_transfers <- max (back_transfers )
262- while (any (back_transfers > 1L )) {
263- max_transfers <- max_transfers - 1L
264- route <- rcpp_csa (
265- gtfs $ timetable , gtfs $ transfers ,
266- nrow (gtfs $ stop_ids ), nrow (gtfs $ trip_ids ),
267- start_stns , end_stns , start_time , max_transfers
268- )
269-
270- trip_nums <- unique (route $ trip_number )
271- # Check for transfers back to same trips:
272- back_transfers <- vapply (trip_nums , function (n ) {
273- length (unique (diff (which (route $ trip_number == n ))))
274- }, integer (1L ))
275- }
276250
277251 route $ trip_id <- gtfs $ trip_ids [, trip_ids ] [route $ trip_number ]
278252
0 commit comments