Routing intermodal directions between locations based on the ‘HERE Intermodal Routing’ API.
In order to calculate route geometries (LINESTRING
)
between pairs of points using the ‘HERE Intermodal Routing API’ the
function intermodal_route()
is used. The function takes
origin and destination locations as sf
objects containing
geometries of type POINT
as input. Routes can be limited to
a maximum number of allowed transfers (includes mode changes and public
transit transfers), by specifying the transfer
parameter.
# Request routes
<- route(
intermodal_routes origin = poi[1:3, ],
destination = poi[4:6, ]
)
The id
column corresponds to the row of the input
locations (origin
and destination
) and the
rank
column enumerates the alternative routes. The maximum
number of alternatives can be set by the results
parameter.
Each row in the returned sf
object corresponds to a route
section with a transport mode in a vehicle without a transfer.
id | rank | section | departure | origin | arrival | destination | type | mode | vehicle | provider | direction | distance | duration |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 2022-07-24 16:05:00 | ORIG | 2022-07-24 16:13:00 | Littau, Längweiher | pedestrian | pedestrian | NA | NA | NA | 466 | 480 |
1 | 1 | 2 | 2022-07-24 16:13:00 | Littau, Längweiher | 2022-07-24 16:24:00 | Bahnhof | transit | bus | 12 | Verkehrsbetriebe Luzern AG | Luzern, Bahnhof | 3415 | 660 |
1 | 1 | 3 | 2022-07-24 16:24:00 | Bahnhof | 2022-07-24 16:29:00 | Luzern | pedestrian | pedestrian | NA | NA | NA | 270 | 300 |
1 | 1 | 4 | 2022-07-24 16:30:00 | Luzern | 2022-07-24 17:47:00 | Basel SBB | transit | intercityTrain | IR27 | Schweizerische Bundesbahnen SBB | Basel SBB | 94766 | 4620 |
1 | 1 | 5 | 2022-07-24 17:47:00 | Basel SBB | 2022-07-24 17:51:00 | Bahnhof SBB | pedestrian | pedestrian | NA | NA | NA | 228 | 240 |
1 | 1 | 6 | 2022-07-24 17:53:00 | Bahnhof SBB | 2022-07-24 18:13:00 | Basel, Kleinhüningen | transit | lightRail | 8 | Basler Verkehrsbetriebe | Basel, Kleinhüningen | 4516 | 1200 |
Print the intermodal routes on an interactive leaflet map:
if (requireNamespace("mapview", quietly = TRUE)) {
::mapview(intermodal_routes,
mapviewzcol = "mode",
layer.name = "Intermodal route",
map.types = c("Esri.WorldTopoMap"),
homebutton = FALSE
) }