otp_isochrone when using fromIDotp_plan and otp_isochroneotp_plan when using toID with thanks to @temporalistaVersion 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 terracurl resulting in faster routing and lower resource usagepbapply dependency replaced with progressrlubridate1 to round(parallel::detectCores() * 1.25) - 1tibble 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.tablehttr with curlrjson functions with RcppSimdJson equivalentssf functions with sfheaders equivalentsotp_plan when distance_balancing = TRUEotp_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.0dplyr 1.0.0, package now needs vctrs 0.3.1otp_connect, otp_plan, and otp_isochrone fixing issue #54, see docs for details.quiet argument to otp_dl_jar and otp_dl_democorrect_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.