Version 0.5.0 is a significant rewrite of the package focusing on
substantially faster routing. The package has moved from using multiple
R workers requesting and parsing results from OTP to a two stage
process. Stage 1 uses curl
to send asynchronous requests to
OTP. This stage should be as fast as OTP, and supports OTP’s limit of
1.25x the number of cores. Stage 2 parses the JSON and converts it into
a form usable in R. The parsing currently uses a single thread, but has
been optimised and can now parse around 700-800 routes/second which is
faster than OTP at around 40-50 routes/second/core.
Overall the new process is 3-4 times faster than v0.4.0 and uses less memory. Future development may add mulitcore support to the parsing stage for further speed improvements.
Breaking Changes
otp_make_surface
is now a list
of lists to allow multiple inputs/outputsRcppSimdJson
for older versions of R use version
0.2.3otp_plan
have changed names.
The names now start with “leg_” to show they are leg specific variables
e.g. “mode” has become “leg_mode”Other Changes
raster
and rgdal
replaced with terra
curl
resulting in faster routing and lower resource
usagepbapply
dependency replaced with
progressr
lubridate
1
to
round(parallel::detectCores() * 1.25) - 1
tibble
moved from imports to suggestss2
features in the sf
packagetry()
functions to reduce risk of crashes in
large scale batch routingflag64bit
argument to
otp_build_graph()
and otp_setup()
quiet
argument to
otp_build_graph()
otp_setup()
from 60
seconds to 30 secondsotp_dl_jar()
Limited support for version of R than can’t install
RcppSimdJson
Note that this version makes minor changes to how results are returned, for example column order. These changes are due to the new json parser and should not affect the overall results but may affect any dependent code.
dplyr
with data.table
httr
with curl
rjson
functions with
RcppSimdJson
equivalentssf
functions with sfheaders
equivalentsotp_plan
when
distance_balancing = TRUE
otp_plan
will now return fromPlace
and
toPlace
as the first two columnsotp_plan
set get_elevation = FALSE
as
default this boosts performancedistance_balancing
that gave sub-optimal
balancingdistance_balancing = TRUE
zero distance routes
will not be found, as OTP will reject these in any case, this saves time
with no impact on results.distance_balancing
argument to
otp_plan
gives a small performance boost to multicore
routingget_elevation
argument to otp_plan
default TRUE, when FALSE returns XY coordinates rather than XYZ
coordinates and gives a 4% performance boost.dplyr::bind_rows
as no longer
required for dplyr 1.0.0
dplyr 1.0.0
, package now needs
vctrs 0.3.1
otp_connect
,
otp_plan
, and otp_isochrone
fixing issue #54,
see docs for details.quiet
argument to otp_dl_jar
and
otp_dl_demo
correct_distances()
when input is of length
<= 2 or the distances never decreasepolyline2linestring()
when elevation is
length <= 2otp_plan()
and otp_isochrone
routingOptions this allows support for many more routing options to be
set. Arguments walkReluctance, transferPenalty, and minTransferTime have
been removed and replaced with routingOptions.otp_routing_options()
,
otp_validate_routing_options()
,
otp_check_java()
NEWS.md
file to track changes to the
package.