diff --git a/java-r5rcore/src/org/ipea/r5r/R5RCore.java b/java-r5rcore/src/org/ipea/r5r/R5RCore.java index ec7366b08..f9a202070 100644 --- a/java-r5rcore/src/org/ipea/r5r/R5RCore.java +++ b/java-r5rcore/src/org/ipea/r5r/R5RCore.java @@ -6,8 +6,11 @@ import com.conveyal.r5.analyst.Grid; import com.conveyal.r5.analyst.cluster.PathResult; import com.conveyal.r5.analyst.decay.*; +import com.conveyal.r5.analyst.scenario.PickupDelay; +import com.conveyal.r5.analyst.scenario.ShapefileLts; import com.conveyal.r5.api.util.SearchType; import com.conveyal.r5.analyst.scenario.RoadCongestion; +import com.conveyal.r5.profile.StreetMode; import com.conveyal.r5.transit.TransportNetwork; import com.fasterxml.jackson.core.JsonProcessingException; @@ -647,6 +650,22 @@ public String applyLtsOsm(HashMap ltsMap){ return lts.errors.toString(); } + public String applyPickupDelay(String filePath, Map> stopsMap, String streetMode, double defaultWait){ + Path fileJPath = Paths.get(filePath).toAbsolutePath().normalize(); + + PickupDelay pickDel = new PickupDelay(); + pickDel.streetMode = StreetMode.valueOf(streetMode); + pickDel.waitTimeAttribute = "wait_time"; + pickDel.idAttribute = "poly_id"; + pickDel.stopsForZone = stopsMap; + pickDel.defaultWait = defaultWait; + pickDel.zonePolygons = fileJPath.toString(); + + pickDel.resolve(routingProperties.transportNetworkWorking); + pickDel.apply(routingProperties.transportNetworkWorking); + return pickDel.errors.toString(); + } + // ------------------------------ STREET AND TRANSIT NETWORKS ---------------------------------------- public List getStreetNetwork() { diff --git a/java-r5rcore/src/org/ipea/r5r/Utils/RMapBuilder.java b/java-r5rcore/src/org/ipea/r5r/Utils/RMapBuilder.java index 40006a601..b19d66baa 100644 --- a/java-r5rcore/src/org/ipea/r5r/Utils/RMapBuilder.java +++ b/java-r5rcore/src/org/ipea/r5r/Utils/RMapBuilder.java @@ -1,13 +1,18 @@ package org.ipea.r5r.Utils; -import java.util.HashMap; +import java.util.*; +import java.util.stream.Collectors; public class RMapBuilder { public static HashMap buildSpeedMap(String osmIds, String scale){ String[] osmIdsArray = osmIds.split(","); String[] scaleArray = scale.split(","); - HashMap map = new HashMap<>(); + if (osmIdsArray.length != scaleArray.length) { + throw new IllegalArgumentException("osmIds and scale must have the same number of items."); + } + + HashMap map = new HashMap<>((int) Math.ceil(osmIdsArray.length / 0.74)); for (int i = 0; i < osmIdsArray.length; i++) { long osmId = Long.parseLong(osmIdsArray[i]); float jScale = Float.parseFloat(scaleArray[i]); @@ -20,7 +25,11 @@ public static HashMap buildLtsMap(String osmIds, String lts){ String[] osmIdsArray = osmIds.split(","); String[] ltsArray = lts.split(","); - HashMap map = new HashMap<>(); + if (osmIdsArray.length != ltsArray.length) { + throw new IllegalArgumentException("osmIds and lts must have the same number of items."); + } + + HashMap map = new HashMap<>((int) Math.ceil(osmIdsArray.length / 0.74)); for (int i = 0; i < osmIdsArray.length; i++) { long osmId = Long.parseLong(osmIdsArray[i]); int jLts = Integer.parseInt(ltsArray[i]); @@ -28,4 +37,22 @@ public static HashMap buildLtsMap(String osmIds, String lts){ } return map; } + + public static Map> buildStopsMap(String polyIds, String stops) { + String[] polyIdsArray = polyIds.split(","); + String[] stopsArray = stops.split(";"); + + if (polyIdsArray.length != stopsArray.length) { + throw new IllegalArgumentException("polyIds and stopsGroups must have the same number of items."); + } + + Map> map = new HashMap<>((int) Math.ceil(polyIdsArray.length / 0.74)); + + for (int i = 0; i < polyIdsArray.length; i++) { + String[] ids = stopsArray[i].split(","); + Set set = new HashSet<>(List.of(ids)); + map.put(polyIdsArray[i], set); + } + return map; + } } diff --git a/r-package/R/accessibility.R b/r-package/R/accessibility.R index 7e755c9f4..542c5e8ff 100644 --- a/r-package/R/accessibility.R +++ b/r-package/R/accessibility.R @@ -147,6 +147,7 @@ accessibility <- function(r5r_network, new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -243,6 +244,7 @@ accessibility <- function(r5r_network, # SCENARIOS ------------------------------------------- set_new_congestion(r5r_network, new_carspeeds, carspeed_scale) set_new_lts(r5r_network, new_lts) + set_pickup_delay(r5r_network, pickup_zones) # call r5r_network method and process results ------------------------------ diff --git a/r-package/R/arrival_travel_time_matrix.R b/r-package/R/arrival_travel_time_matrix.R index 012028aaf..a6b494406 100644 --- a/r-package/R/arrival_travel_time_matrix.R +++ b/r-package/R/arrival_travel_time_matrix.R @@ -99,6 +99,7 @@ arrival_travel_time_matrix <- function(r5r_network, new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -193,6 +194,7 @@ arrival_travel_time_matrix <- function(r5r_network, # SCENARIOS ------------------------------------------- set_new_congestion(r5r_network, new_carspeeds, carspeed_scale) set_new_lts(r5r_network, new_lts) + set_pickup_delay(r5r_network, pickup_zones) # call r5r_network method and process result ------------------------------- diff --git a/r-package/R/assign.R b/r-package/R/assign.R index 150ad33d1..a7e747b01 100644 --- a/r-package/R/assign.R +++ b/r-package/R/assign.R @@ -425,3 +425,57 @@ assign_osm_link_ids <- function(osm_link_ids, drop_geometry) { return(osm_link_ids) } + +#' Returns which routing mode to apply pickup delay polygons on. +#' +#' @param pickup_polygons An sf polygon +#' +#' @family assigning functions +#' +#' @return Character. One of street routing modes. +#' +#' @keywords internal +assign_pickup_mode <- function(pickup_polygons){ + + # check input class + checkmate::assert_class(pickup_polygons, "sf") + + # check input colnames + checkmate::assert_names( + x = names(pickup_polygons), + must.include = c("mode") + ) + + checkmate::assert_true(length(unique(pickup_polygons$mode)) == 1 && + pickup_polygons$mode[1] %in% c("CAR", "BIKE", "WALK")) + + return(pickup_polygons$mode[1]) +} + + +#' Returns default_wait time to use when no delay polygon is found. +#' -1 means area is not served at all. +#' +#' @param pickup_polygons An sf polygon +#' +#' @family assigning functions +#' +#' @return Numeric. Default wait +#' +#' @keywords internal +assign_pickup_default_wait <- function(pickup_polygons){ + + # check input class + checkmate::assert_class(pickup_polygons, "sf") + + # check input colnames + checkmate::assert_names( + x = names(pickup_polygons), + must.include = c("default_wait") + ) + + checkmate::assert_true(length(unique(pickup_polygons$default_wait)) == 1) + checkmate::assert_numeric(pickup_polygons$default_wait, any.missing = FALSE, lower = -1) + + return(pickup_polygons$default_wait[1]) +} diff --git a/r-package/R/detailed_itineraries.R b/r-package/R/detailed_itineraries.R index 66c6ba281..ae0464a8f 100644 --- a/r-package/R/detailed_itineraries.R +++ b/r-package/R/detailed_itineraries.R @@ -120,6 +120,7 @@ detailed_itineraries <- function(r5r_network, new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, n_threads = Inf, verbose = FALSE, progress = FALSE, @@ -225,6 +226,7 @@ detailed_itineraries <- function(r5r_network, # SCENARIOS ------------------------------------------- set_new_congestion(r5r_network, new_carspeeds, carspeed_scale) set_new_lts(r5r_network, new_lts) + set_pickup_delay(r5r_network, pickup_zones) # call r5r_network method and process result ------------------------------- diff --git a/r-package/R/expanded_travel_time_matrix.R b/r-package/R/expanded_travel_time_matrix.R index 4131ccbd2..ba9ed3f0b 100644 --- a/r-package/R/expanded_travel_time_matrix.R +++ b/r-package/R/expanded_travel_time_matrix.R @@ -110,6 +110,7 @@ expanded_travel_time_matrix <- function(r5r_network, new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -199,6 +200,7 @@ expanded_travel_time_matrix <- function(r5r_network, # SCENARIOS ------------------------------------------- set_new_congestion(r5r_network, new_carspeeds, carspeed_scale) set_new_lts(r5r_network, new_lts) + set_pickup_delay(r5r_network, pickup_zones) # call r5r_network method and process result ------------------------------- diff --git a/r-package/R/java_utils.R b/r-package/R/java_utils.R index 1ee4a9d4b..0711f8fde 100644 --- a/r-package/R/java_utils.R +++ b/r-package/R/java_utils.R @@ -53,7 +53,7 @@ dt_to_speed_map <- function(dt) { checkmate::assert_names(names(dt), must.include = c("osm_id", "max_speed", "speed_type")) checkmate::assert_numeric(dt$osm_id, any.missing = FALSE, all.missing = FALSE) - checkmate::assert_numeric(dt$max_speed, any.missing = FALSE, all.missing = FALSE) + checkmate::assert_numeric(dt$max_speed, any.missing = FALSE, all.missing = FALSE, lower = 0) checkmate::assert_true(length(unique(dt$speed_type)) == 1 && dt$speed_type[1] %in% c("km/h", "scale")) # Create new HashMap @@ -91,7 +91,7 @@ get_java_version <- function(){ dt_to_lts_map <- function(dt) { checkmate::assert_names(names(dt), must.include = c("osm_id", "lts")) checkmate::assert_numeric(dt$osm_id, any.missing = FALSE, all.missing = FALSE) - checkmate::assert_integer(dt$lts, any.missing = FALSE, all.missing = FALSE) + checkmate::assert_integer(dt$lts, any.missing = FALSE, all.missing = FALSE, lower = 1, upper = 4) # Create new HashMap map_builder <- rJava::.jnew("org.ipea.r5r.Utils.RMapBuilder") @@ -100,3 +100,29 @@ dt_to_lts_map <- function(dt) { return(lts_map) } + + +#' data.table to stopsMap +#' +#' @description Converts a `data.frame` with pickup polygons and and respective +#' drop off stops to a Java Map>. +#' +#' @param dt data.frame/data.table. Table specifying the +#' polygon ID and stops it links to. The table must contain columns +#' \code{poly_id} and \code{stops_ids}. +#' @return A stopsMap (Java Map>) +#' @family java support functions +#' @keywords internal +dt_to_stops_map <- function(dt) { + checkmate::assert_names(names(dt), must.include = c("poly_id", "stops_ids")) + checkmate::assert_character(dt$poly_id, any.missing = FALSE, all.missing = FALSE) + checkmate::assert_list(dt$stops_ids, types = "numeric", any.missing = FALSE, all.missing = FALSE) + + # Create new HashMap + map_builder <- rJava::.jnew("org.ipea.r5r.Utils.RMapBuilder") + stops_str <- sapply(dt$stops_ids, function(x) paste(x, collapse = ",")) + stops_map <- map_builder$buildStopsMap(paste(as.character(dt$poly_id), collapse = ","), + paste(as.character(stops_str), collapse = ";")) + + return(stops_map) +} diff --git a/r-package/R/set.R b/r-package/R/set.R index b1c5317f0..880545342 100644 --- a/r-package/R/set.R +++ b/r-package/R/set.R @@ -691,3 +691,37 @@ set_new_lts <- function(r5r_network, new_lts) { } } } + + +#' Set Pickup Delay +#' +#' Verifies if to set a pickup delay and sets it +#' +#' @template r5r_network +#' @param pickup_poly A sf polygon. +#' +#' @return Invisibly returns `TRUE`. +#' @family setting functions +#' +#' @keywords internal +set_pickup_delay <- function(r5r_network, pickup_poly) { + checkmate::assert_class(pickup_poly, "sf", null.ok = TRUE) + if (!is.null(pickup_poly)){ + cli::cli_inform(c(i = "Modifying pickup delay...")) + + geojson_path <- pickup_poly2geojson(pickup_poly) + stops_map <- dt_to_stops_map(pickup_poly) + street_mode <- assign_pickup_mode(pickup_poly) + default_wait <- assign_pickup_default_wait(pickup_poly) + errors <- r5r_network$applyPickupDelay(geojson_path, + stops_map, + street_mode, + default_wait) + + if (errors != "[]"){ + cli::cli_inform(c( + "!" = "Encountered the following errors modifying pickup delay:", + " " = errors )) + } + } +} diff --git a/r-package/R/travel_time_matrix.R b/r-package/R/travel_time_matrix.R index 1d189275f..e626a9d49 100644 --- a/r-package/R/travel_time_matrix.R +++ b/r-package/R/travel_time_matrix.R @@ -133,6 +133,7 @@ travel_time_matrix <- function(r5r_network, new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -225,7 +226,7 @@ travel_time_matrix <- function(r5r_network, # SCENARIOS ------------------------------------------- set_new_congestion(r5r_network, new_carspeeds, carspeed_scale) set_new_lts(r5r_network, new_lts) - + set_pickup_delay(r5r_network, pickup_zones) # call r5r_network method and process result ------------------------------- diff --git a/r-package/R/utils.R b/r-package/R/utils.R index 7f0cca73c..072408105 100644 --- a/r-package/R/utils.R +++ b/r-package/R/utils.R @@ -225,8 +225,8 @@ validate_bad_osm_ids <- function(bad_ids_string) { #' Save speeds polygon to .geojson temporary file #' -#' Support function that checks the input of speeds polygon passed to -#' `build_custom_network()` and saves it to a `.geojson` temporary file. +#' Support function that checks the input of speeds polygon and saves it to a +#' `.geojson` temporary file. #' #' @param new_speeds_poly An sf polygon #' @@ -259,8 +259,8 @@ congestion_poly2geojson <- function(new_speeds_poly){ # Check column types and check input geometry checkmate::assert_character(new_speeds_poly$poly_id, any.missing = FALSE) - checkmate::assert_numeric(new_speeds_poly$scale, any.missing = FALSE) - checkmate::assert_integer(new_speeds_poly$priority, any.missing = FALSE) + checkmate::assert_numeric(new_speeds_poly$scale, any.missing = FALSE, lower = 0) + checkmate::assert_integer(new_speeds_poly$priority, any.missing = FALSE, lower = 0) checkmate::assert_subset( x = unique(as.character(sf::st_geometry_type(new_speeds_poly))), choices = c("POLYGON", "MULTIPOLYGON"), @@ -325,7 +325,7 @@ lts_lines2shp <- function(new_lts_lines){ # Check column types and check input geometry checkmate::assert_character(new_lts_lines$line_id, any.missing = FALSE) checkmate::assert_integer(new_lts_lines$lts, any.missing = FALSE, lower = 1, upper = 4) - checkmate::assert_integer(new_lts_lines$priority, any.missing = FALSE) + checkmate::assert_integer(new_lts_lines$priority, any.missing = FALSE, lower = 0) checkmate::assert_subset( x = unique(as.character(sf::st_geometry_type(new_lts_lines))), choices = c("LINESTRING"), @@ -351,3 +351,71 @@ lts_lines2shp <- function(new_lts_lines){ if (file.exists(file_path)) { return(file_path)} } + + +#' Save pickup polygon to .geojson temporary file +#' +#' Support function that checks the input of pickup polygons and saves it to a +#' `.geojson` temporary file. +#' +#' @param pickup_polygons An sf polygon +#' +#' @family Support functions +#' +#' @return The path to a `.geojson` saved as a temporary file. +#' +#' @examplesIf identical(tolower(Sys.getenv("NOT_CRAN")), "true") +#' +#' # read polygons for pickup +#' pickup_polygons <- readRDS( +#' system.file("extdata/poa/poa_pickup_zones.rds", package = "r5r") +#' ) +#' +#' geojson_path <- r5r:::pickup_poly2geojson( +#' pickup_polygons = pickup_polygons +#' ) +#' +#' @keywords internal +pickup_poly2geojson <- function(pickup_polygons){ + + # check input class + checkmate::assert_class(pickup_polygons, "sf") + + # check input colnames + checkmate::assert_names( + x = names(pickup_polygons), + must.include = c("poly_id", "wait_time", "priority", "geometry") + ) + + # Check column types and check input geometry + checkmate::assert_character(pickup_polygons$poly_id, any.missing = FALSE) + checkmate::assert_numeric(pickup_polygons$wait_time, any.missing = FALSE) + checkmate::assert_integer(pickup_polygons$priority, any.missing = FALSE, lower = 0) + checkmate::assert_subset( + x = unique(as.character(sf::st_geometry_type(pickup_polygons))), + choices = c("POLYGON", "MULTIPOLYGON"), + empty.ok = FALSE + ) + + # check input spatial projection + if (sf::st_crs(pickup_polygons) != sf::st_crs(4326)) { + stop( + "The CRS of parameter `new_speeds` must be WGS 84 (EPSG 4326). ", + "Please use either sf::set_crs() to set it or ", + "sf::st_transform() to reproject it." + ) + } + + # save polygons to temp file + file_path <- tempfile( + pattern = 'r5r_pickup_poly', + fileext = ".geojson" + ) + + subset <- pickup_polygons[, c("poly_id", "wait_time", "priority", "geometry")] + + sf::st_write(subset, file_path, quiet = TRUE) + + if (file.exists(file_path)) { return(file_path)} +} + diff --git a/r-package/inst/extdata/poa/poa_pickup_zones.rds b/r-package/inst/extdata/poa/poa_pickup_zones.rds new file mode 100644 index 000000000..b3c1e6b45 Binary files /dev/null and b/r-package/inst/extdata/poa/poa_pickup_zones.rds differ diff --git a/r-package/inst/jar/r5r.jar b/r-package/inst/jar/r5r.jar index 8bb993853..dfb60fe6e 100644 Binary files a/r-package/inst/jar/r5r.jar and b/r-package/inst/jar/r5r.jar differ diff --git a/r-package/man/accessibility.Rd b/r-package/man/accessibility.Rd index c5915c937..43e3ac1fb 100644 --- a/r-package/man/accessibility.Rd +++ b/r-package/man/accessibility.Rd @@ -31,6 +31,7 @@ accessibility( new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -187,6 +188,9 @@ Alternatively, the \code{new_lts} parameter can receive an \verb{sf data.frame} with LINESTRING geometry. R5 will then find the nearest road for each LINESTRING and update its LTS value accordingly.} +\item{pickup_zones}{A \code{data.frame} specifying the pickup and drop-off zones +as well as their respective wait times for dynamic-transit or bike share.} + \item{draws_per_minute}{An integer. The number of Monte Carlo draws to perform per time window minute when calculating travel time matrices and when estimating accessibility. Defaults to 5. This would mean 300 draws in diff --git a/r-package/man/arrival_travel_time_matrix.Rd b/r-package/man/arrival_travel_time_matrix.Rd index c7b5b9fd7..27301c4d7 100644 --- a/r-package/man/arrival_travel_time_matrix.Rd +++ b/r-package/man/arrival_travel_time_matrix.Rd @@ -25,6 +25,7 @@ arrival_travel_time_matrix( new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -131,6 +132,9 @@ Alternatively, the \code{new_lts} parameter can receive an \verb{sf data.frame} with LINESTRING geometry. R5 will then find the nearest road for each LINESTRING and update its LTS value accordingly.} +\item{pickup_zones}{A \code{data.frame} specifying the pickup and drop-off zones +as well as their respective wait times for dynamic-transit or bike share.} + \item{draws_per_minute}{An integer. The number of Monte Carlo draws to perform per time window minute when calculating travel time matrices and when estimating accessibility. Defaults to 5. This would mean 300 draws in diff --git a/r-package/man/assign_decay_function.Rd b/r-package/man/assign_decay_function.Rd index e64294c66..6e3ff4ed7 100644 --- a/r-package/man/assign_decay_function.Rd +++ b/r-package/man/assign_decay_function.Rd @@ -26,6 +26,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_departure.Rd b/r-package/man/assign_departure.Rd index 33af5ec12..70fd27e3b 100644 --- a/r-package/man/assign_departure.Rd +++ b/r-package/man/assign_departure.Rd @@ -25,6 +25,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_drop_geometry.Rd b/r-package/man/assign_drop_geometry.Rd index 483809906..aefff0d6b 100644 --- a/r-package/man/assign_drop_geometry.Rd +++ b/r-package/man/assign_drop_geometry.Rd @@ -24,6 +24,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_max_street_time.Rd b/r-package/man/assign_max_street_time.Rd index e4f24cc6e..4942443f1 100644 --- a/r-package/man/assign_max_street_time.Rd +++ b/r-package/man/assign_max_street_time.Rd @@ -33,6 +33,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_max_trip_duration.Rd b/r-package/man/assign_max_trip_duration.Rd index 0b5a1598d..fb22f4717 100644 --- a/r-package/man/assign_max_trip_duration.Rd +++ b/r-package/man/assign_max_trip_duration.Rd @@ -29,6 +29,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_mode.Rd b/r-package/man/assign_mode.Rd index b7c68822a..123c9a4f9 100644 --- a/r-package/man/assign_mode.Rd +++ b/r-package/man/assign_mode.Rd @@ -27,6 +27,8 @@ Other assigning functions: \code{\link{assign_max_trip_duration}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_opportunities.Rd b/r-package/man/assign_opportunities.Rd index 37aa2d9b1..a533fa29e 100644 --- a/r-package/man/assign_opportunities.Rd +++ b/r-package/man/assign_opportunities.Rd @@ -27,6 +27,8 @@ Other assigning functions: \code{\link{assign_max_trip_duration}()}, \code{\link{assign_mode}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_osm_link_ids.Rd b/r-package/man/assign_osm_link_ids.Rd index b4394c755..fab330ccc 100644 --- a/r-package/man/assign_osm_link_ids.Rd +++ b/r-package/man/assign_osm_link_ids.Rd @@ -26,6 +26,8 @@ Other assigning functions: \code{\link{assign_max_trip_duration}()}, \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()}, \code{\link{assign_shortest_path}()} } diff --git a/r-package/man/assign_pickup_default_wait.Rd b/r-package/man/assign_pickup_default_wait.Rd new file mode 100644 index 000000000..9af35a3a7 --- /dev/null +++ b/r-package/man/assign_pickup_default_wait.Rd @@ -0,0 +1,35 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/assign.R +\name{assign_pickup_default_wait} +\alias{assign_pickup_default_wait} +\title{Returns default_wait time to use when no delay polygon is found. +-1 means area is not served at all.} +\usage{ +assign_pickup_default_wait(pickup_polygons) +} +\arguments{ +\item{pickup_polygons}{An sf polygon} +} +\value{ +Numeric. Default wait +} +\description{ +Returns default_wait time to use when no delay polygon is found. +-1 means area is not served at all. +} +\seealso{ +Other assigning functions: +\code{\link{assign_decay_function}()}, +\code{\link{assign_departure}()}, +\code{\link{assign_drop_geometry}()}, +\code{\link{assign_max_street_time}()}, +\code{\link{assign_max_trip_duration}()}, +\code{\link{assign_mode}()}, +\code{\link{assign_opportunities}()}, +\code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_mode}()}, +\code{\link{assign_points_input}()}, +\code{\link{assign_shortest_path}()} +} +\concept{assigning functions} +\keyword{internal} diff --git a/r-package/man/assign_pickup_mode.Rd b/r-package/man/assign_pickup_mode.Rd new file mode 100644 index 000000000..349cbafb3 --- /dev/null +++ b/r-package/man/assign_pickup_mode.Rd @@ -0,0 +1,33 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/assign.R +\name{assign_pickup_mode} +\alias{assign_pickup_mode} +\title{Returns which routing mode to apply pickup delay polygons on.} +\usage{ +assign_pickup_mode(pickup_polygons) +} +\arguments{ +\item{pickup_polygons}{An sf polygon} +} +\value{ +Character. One of street routing modes. +} +\description{ +Returns which routing mode to apply pickup delay polygons on. +} +\seealso{ +Other assigning functions: +\code{\link{assign_decay_function}()}, +\code{\link{assign_departure}()}, +\code{\link{assign_drop_geometry}()}, +\code{\link{assign_max_street_time}()}, +\code{\link{assign_max_trip_duration}()}, +\code{\link{assign_mode}()}, +\code{\link{assign_opportunities}()}, +\code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_points_input}()}, +\code{\link{assign_shortest_path}()} +} +\concept{assigning functions} +\keyword{internal} diff --git a/r-package/man/assign_points_input.Rd b/r-package/man/assign_points_input.Rd index ba824e67f..6dce12b11 100644 --- a/r-package/man/assign_points_input.Rd +++ b/r-package/man/assign_points_input.Rd @@ -27,6 +27,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_shortest_path}()} } \concept{assigning functions} diff --git a/r-package/man/assign_shortest_path.Rd b/r-package/man/assign_shortest_path.Rd index 9f8b41650..2e83f57df 100644 --- a/r-package/man/assign_shortest_path.Rd +++ b/r-package/man/assign_shortest_path.Rd @@ -25,6 +25,8 @@ Other assigning functions: \code{\link{assign_mode}()}, \code{\link{assign_opportunities}()}, \code{\link{assign_osm_link_ids}()}, +\code{\link{assign_pickup_default_wait}()}, +\code{\link{assign_pickup_mode}()}, \code{\link{assign_points_input}()} } \concept{assigning functions} diff --git a/r-package/man/congestion_poly2geojson.Rd b/r-package/man/congestion_poly2geojson.Rd index d94c78643..ab1d21af3 100644 --- a/r-package/man/congestion_poly2geojson.Rd +++ b/r-package/man/congestion_poly2geojson.Rd @@ -13,8 +13,8 @@ congestion_poly2geojson(new_speeds_poly) The path to a \code{.geojson} saved as a temporary file. } \description{ -Support function that checks the input of speeds polygon passed to -\code{build_custom_network()} and saves it to a \code{.geojson} temporary file. +Support function that checks the input of speeds polygon and saves it to a +\code{.geojson} temporary file. } \examples{ \dontshow{if (identical(tolower(Sys.getenv("NOT_CRAN")), "true")) withAutoprint(\{ # examplesIf} @@ -31,7 +31,8 @@ geojson_path <- r5r:::congestion_poly2geojson( } \seealso{ Other Support functions: -\code{\link{lts_lines2shp}()} +\code{\link{lts_lines2shp}()}, +\code{\link{pickup_poly2geojson}()} } \concept{Support functions} \keyword{internal} diff --git a/r-package/man/detailed_itineraries.Rd b/r-package/man/detailed_itineraries.Rd index e110d9c23..eaba381ce 100644 --- a/r-package/man/detailed_itineraries.Rd +++ b/r-package/man/detailed_itineraries.Rd @@ -29,6 +29,7 @@ detailed_itineraries( new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, n_threads = Inf, verbose = FALSE, progress = FALSE, @@ -172,6 +173,9 @@ Alternatively, the \code{new_lts} parameter can receive an \verb{sf data.frame} with LINESTRING geometry. R5 will then find the nearest road for each LINESTRING and update its LTS value accordingly.} +\item{pickup_zones}{A \code{data.frame} specifying the pickup and drop-off zones +as well as their respective wait times for dynamic-transit or bike share.} + \item{n_threads}{An integer. The number of threads to use when running the router in parallel. Defaults to use all available threads (Inf).} diff --git a/r-package/man/dt_to_lts_map.Rd b/r-package/man/dt_to_lts_map.Rd index 32a079844..898731fbc 100644 --- a/r-package/man/dt_to_lts_map.Rd +++ b/r-package/man/dt_to_lts_map.Rd @@ -21,6 +21,7 @@ levels a Java Map for use by r5r_network. \seealso{ Other java support functions: \code{\link{dt_to_speed_map}()}, +\code{\link{dt_to_stops_map}()}, \code{\link{get_java_version}()}, \code{\link{java_to_dt}()} } diff --git a/r-package/man/dt_to_speed_map.Rd b/r-package/man/dt_to_speed_map.Rd index de2cf50f2..6eff33a99 100644 --- a/r-package/man/dt_to_speed_map.Rd +++ b/r-package/man/dt_to_speed_map.Rd @@ -21,6 +21,7 @@ to a Java Map for use by r5r_network. \seealso{ Other java support functions: \code{\link{dt_to_lts_map}()}, +\code{\link{dt_to_stops_map}()}, \code{\link{get_java_version}()}, \code{\link{java_to_dt}()} } diff --git a/r-package/man/dt_to_stops_map.Rd b/r-package/man/dt_to_stops_map.Rd new file mode 100644 index 000000000..34ec7b001 --- /dev/null +++ b/r-package/man/dt_to_stops_map.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/java_utils.R +\name{dt_to_stops_map} +\alias{dt_to_stops_map} +\title{data.table to stopsMap} +\usage{ +dt_to_stops_map(dt) +} +\arguments{ +\item{dt}{data.frame/data.table. Table specifying the +polygon ID and stops it links to. The table must contain columns +\code{poly_id} and \code{stops_ids}.} +} +\value{ +A stopsMap (Java Map}}>) +} +\description{ +Converts a \code{data.frame} with pickup polygons and and respective +drop off stops to a Java Map}}>. +} +\seealso{ +Other java support functions: +\code{\link{dt_to_lts_map}()}, +\code{\link{dt_to_speed_map}()}, +\code{\link{get_java_version}()}, +\code{\link{java_to_dt}()} +} +\concept{java support functions} +\keyword{internal} diff --git a/r-package/man/expanded_travel_time_matrix.Rd b/r-package/man/expanded_travel_time_matrix.Rd index 79b58cef3..cb46f78e7 100644 --- a/r-package/man/expanded_travel_time_matrix.Rd +++ b/r-package/man/expanded_travel_time_matrix.Rd @@ -25,6 +25,7 @@ expanded_travel_time_matrix( new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -141,6 +142,9 @@ Alternatively, the \code{new_lts} parameter can receive an \verb{sf data.frame} with LINESTRING geometry. R5 will then find the nearest road for each LINESTRING and update its LTS value accordingly.} +\item{pickup_zones}{A \code{data.frame} specifying the pickup and drop-off zones +as well as their respective wait times for dynamic-transit or bike share.} + \item{draws_per_minute}{An integer. The number of Monte Carlo draws to perform per time window minute when calculating travel time matrices and when estimating accessibility. Defaults to 5. This would mean 300 draws in diff --git a/r-package/man/get_java_version.Rd b/r-package/man/get_java_version.Rd index 042ef5c0e..acd18abf4 100644 --- a/r-package/man/get_java_version.Rd +++ b/r-package/man/get_java_version.Rd @@ -16,6 +16,7 @@ Determine the Java version installed locally Other java support functions: \code{\link{dt_to_lts_map}()}, \code{\link{dt_to_speed_map}()}, +\code{\link{dt_to_stops_map}()}, \code{\link{java_to_dt}()} } \concept{java support functions} diff --git a/r-package/man/java_to_dt.Rd b/r-package/man/java_to_dt.Rd index 9a155757d..3d9bb9f51 100644 --- a/r-package/man/java_to_dt.Rd +++ b/r-package/man/java_to_dt.Rd @@ -19,6 +19,7 @@ Converts a Java object returned by r5r_network to an R \code{data.table} Other java support functions: \code{\link{dt_to_lts_map}()}, \code{\link{dt_to_speed_map}()}, +\code{\link{dt_to_stops_map}()}, \code{\link{get_java_version}()} } \concept{java support functions} diff --git a/r-package/man/lts_lines2shp.Rd b/r-package/man/lts_lines2shp.Rd index d3babef5f..7c84a9561 100644 --- a/r-package/man/lts_lines2shp.Rd +++ b/r-package/man/lts_lines2shp.Rd @@ -31,7 +31,8 @@ shp_path <- r5r:::lts_lines2shp( } \seealso{ Other Support functions: -\code{\link{congestion_poly2geojson}()} +\code{\link{congestion_poly2geojson}()}, +\code{\link{pickup_poly2geojson}()} } \concept{Support functions} \keyword{internal} diff --git a/r-package/man/pickup_poly2geojson.Rd b/r-package/man/pickup_poly2geojson.Rd new file mode 100644 index 000000000..13a8239e8 --- /dev/null +++ b/r-package/man/pickup_poly2geojson.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{pickup_poly2geojson} +\alias{pickup_poly2geojson} +\title{Save pickup polygon to .geojson temporary file} +\usage{ +pickup_poly2geojson(pickup_polygons) +} +\arguments{ +\item{pickup_polygons}{An sf polygon} +} +\value{ +The path to a \code{.geojson} saved as a temporary file. +} +\description{ +Support function that checks the input of pickup polygons and saves it to a +\code{.geojson} temporary file. +} +\examples{ +\dontshow{if (identical(tolower(Sys.getenv("NOT_CRAN")), "true")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} + +# read polygons for pickup +pickup_polygons <- readRDS( + system.file("extdata/poa/poa_pickup_zones.rds", package = "r5r") + ) + +geojson_path <- r5r:::pickup_poly2geojson( + pickup_polygons = pickup_polygons + ) +\dontshow{\}) # examplesIf} +} +\seealso{ +Other Support functions: +\code{\link{congestion_poly2geojson}()}, +\code{\link{lts_lines2shp}()} +} +\concept{Support functions} +\keyword{internal} diff --git a/r-package/man/reverse_if_direct_mode.Rd b/r-package/man/reverse_if_direct_mode.Rd index c70c72f55..87ae0f27f 100644 --- a/r-package/man/reverse_if_direct_mode.Rd +++ b/r-package/man/reverse_if_direct_mode.Rd @@ -43,6 +43,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/roxygen/templates/scenarios.R b/r-package/man/roxygen/templates/scenarios.R index 71a945670..449a95603 100644 --- a/r-package/man/roxygen/templates/scenarios.R +++ b/r-package/man/roxygen/templates/scenarios.R @@ -19,3 +19,6 @@ #' Alternatively, the `new_lts` parameter can receive an `sf data.frame` #' with LINESTRING geometry. R5 will then find the nearest road for each #' LINESTRING and update its LTS value accordingly. +#' @param pickup_zones A `data.frame` specifying the pickup and drop-off zones +#' as well as their respective wait times for dynamic-transit or bike share. +#' diff --git a/r-package/man/set_breakdown.Rd b/r-package/man/set_breakdown.Rd index 744e81f1a..7c3b7e260 100644 --- a/r-package/man/set_breakdown.Rd +++ b/r-package/man/set_breakdown.Rd @@ -36,6 +36,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_cutoffs.Rd b/r-package/man/set_cutoffs.Rd index 980463625..f24806e57 100644 --- a/r-package/man/set_cutoffs.Rd +++ b/r-package/man/set_cutoffs.Rd @@ -37,6 +37,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_elevation.Rd b/r-package/man/set_elevation.Rd index ea3d7dd85..c45ad7090 100644 --- a/r-package/man/set_elevation.Rd +++ b/r-package/man/set_elevation.Rd @@ -33,6 +33,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_expanded_travel_times.Rd b/r-package/man/set_expanded_travel_times.Rd index 669df2726..329dba915 100644 --- a/r-package/man/set_expanded_travel_times.Rd +++ b/r-package/man/set_expanded_travel_times.Rd @@ -36,6 +36,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_fare_cutoffs.Rd b/r-package/man/set_fare_cutoffs.Rd index 8077222c7..763375ba0 100644 --- a/r-package/man/set_fare_cutoffs.Rd +++ b/r-package/man/set_fare_cutoffs.Rd @@ -36,6 +36,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_fare_structure.Rd b/r-package/man/set_fare_structure.Rd index b96d05c55..826a3cf63 100644 --- a/r-package/man/set_fare_structure.Rd +++ b/r-package/man/set_fare_structure.Rd @@ -41,6 +41,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_max_fare.Rd b/r-package/man/set_max_fare.Rd index d8c46e7bb..db373bdb7 100644 --- a/r-package/man/set_max_fare.Rd +++ b/r-package/man/set_max_fare.Rd @@ -35,6 +35,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_max_lts.Rd b/r-package/man/set_max_lts.Rd index 8a9c59dfd..377341453 100644 --- a/r-package/man/set_max_lts.Rd +++ b/r-package/man/set_max_lts.Rd @@ -38,6 +38,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_max_rides.Rd b/r-package/man/set_max_rides.Rd index c8a996baf..8ddd652fc 100644 --- a/r-package/man/set_max_rides.Rd +++ b/r-package/man/set_max_rides.Rd @@ -36,6 +36,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_monte_carlo_draws.Rd b/r-package/man/set_monte_carlo_draws.Rd index 2d2c9b9da..f3fbbf81d 100644 --- a/r-package/man/set_monte_carlo_draws.Rd +++ b/r-package/man/set_monte_carlo_draws.Rd @@ -37,6 +37,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_n_threads.Rd b/r-package/man/set_n_threads.Rd index 815a92251..f9735a1df 100644 --- a/r-package/man/set_n_threads.Rd +++ b/r-package/man/set_n_threads.Rd @@ -35,6 +35,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_new_congestion.Rd b/r-package/man/set_new_congestion.Rd index 0c9b0082b..442abd81a 100644 --- a/r-package/man/set_new_congestion.Rd +++ b/r-package/man/set_new_congestion.Rd @@ -37,6 +37,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_new_lts.Rd b/r-package/man/set_new_lts.Rd index 67301dd30..c288536d7 100644 --- a/r-package/man/set_new_lts.Rd +++ b/r-package/man/set_new_lts.Rd @@ -35,6 +35,7 @@ Other setting functions: \code{\link{set_new_congestion}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_output_dir.Rd b/r-package/man/set_output_dir.Rd index 7eccdedce..95b01355b 100644 --- a/r-package/man/set_output_dir.Rd +++ b/r-package/man/set_output_dir.Rd @@ -35,6 +35,7 @@ Other setting functions: \code{\link{set_new_congestion}()}, \code{\link{set_new_lts}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_percentiles.Rd b/r-package/man/set_percentiles.Rd index bb5e7af48..efacdaf4a 100644 --- a/r-package/man/set_percentiles.Rd +++ b/r-package/man/set_percentiles.Rd @@ -35,6 +35,7 @@ Other setting functions: \code{\link{set_new_congestion}()}, \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_pickup_delay.Rd b/r-package/man/set_pickup_delay.Rd new file mode 100644 index 000000000..9ac996e5d --- /dev/null +++ b/r-package/man/set_pickup_delay.Rd @@ -0,0 +1,45 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/set.R +\name{set_pickup_delay} +\alias{set_pickup_delay} +\title{Set Pickup Delay} +\usage{ +set_pickup_delay(r5r_network, pickup_poly) +} +\arguments{ +\item{r5r_network}{A routable transport network created with \code{\link[=build_network]{build_network()}}.} + +\item{pickup_poly}{A sf polygon.} +} +\value{ +Invisibly returns \code{TRUE}. +} +\description{ +Verifies if to set a pickup delay and sets it +} +\seealso{ +Other setting functions: +\code{\link{reverse_if_direct_mode}()}, +\code{\link{set_breakdown}()}, +\code{\link{set_cutoffs}()}, +\code{\link{set_elevation}()}, +\code{\link{set_expanded_travel_times}()}, +\code{\link{set_fare_cutoffs}()}, +\code{\link{set_fare_structure}()}, +\code{\link{set_max_fare}()}, +\code{\link{set_max_lts}()}, +\code{\link{set_max_rides}()}, +\code{\link{set_monte_carlo_draws}()}, +\code{\link{set_n_threads}()}, +\code{\link{set_new_congestion}()}, +\code{\link{set_new_lts}()}, +\code{\link{set_output_dir}()}, +\code{\link{set_percentiles}()}, +\code{\link{set_progress}()}, +\code{\link{set_speed}()}, +\code{\link{set_suboptimal_minutes}()}, +\code{\link{set_time_window}()}, +\code{\link{set_verbose}()} +} +\concept{setting functions} +\keyword{internal} diff --git a/r-package/man/set_progress.Rd b/r-package/man/set_progress.Rd index cd673bb7d..b3a985be4 100644 --- a/r-package/man/set_progress.Rd +++ b/r-package/man/set_progress.Rd @@ -37,6 +37,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, \code{\link{set_time_window}()}, diff --git a/r-package/man/set_speed.Rd b/r-package/man/set_speed.Rd index f59e77669..86e25434b 100644 --- a/r-package/man/set_speed.Rd +++ b/r-package/man/set_speed.Rd @@ -40,6 +40,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_suboptimal_minutes}()}, \code{\link{set_time_window}()}, diff --git a/r-package/man/set_suboptimal_minutes.Rd b/r-package/man/set_suboptimal_minutes.Rd index 495569e8e..c076f9aa1 100644 --- a/r-package/man/set_suboptimal_minutes.Rd +++ b/r-package/man/set_suboptimal_minutes.Rd @@ -57,6 +57,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_time_window}()}, diff --git a/r-package/man/set_time_window.Rd b/r-package/man/set_time_window.Rd index 12b9fd8e0..a019dd1ba 100644 --- a/r-package/man/set_time_window.Rd +++ b/r-package/man/set_time_window.Rd @@ -36,6 +36,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/set_verbose.Rd b/r-package/man/set_verbose.Rd index 85bfa79e6..3ad034d98 100644 --- a/r-package/man/set_verbose.Rd +++ b/r-package/man/set_verbose.Rd @@ -37,6 +37,7 @@ Other setting functions: \code{\link{set_new_lts}()}, \code{\link{set_output_dir}()}, \code{\link{set_percentiles}()}, +\code{\link{set_pickup_delay}()}, \code{\link{set_progress}()}, \code{\link{set_speed}()}, \code{\link{set_suboptimal_minutes}()}, diff --git a/r-package/man/travel_time_matrix.Rd b/r-package/man/travel_time_matrix.Rd index 2fd8876e4..f4d5904a8 100644 --- a/r-package/man/travel_time_matrix.Rd +++ b/r-package/man/travel_time_matrix.Rd @@ -28,6 +28,7 @@ travel_time_matrix( new_carspeeds = NULL, carspeed_scale = 1, new_lts = NULL, + pickup_zones = NULL, draws_per_minute = 5L, n_threads = Inf, verbose = FALSE, @@ -158,6 +159,9 @@ Alternatively, the \code{new_lts} parameter can receive an \verb{sf data.frame} with LINESTRING geometry. R5 will then find the nearest road for each LINESTRING and update its LTS value accordingly.} +\item{pickup_zones}{A \code{data.frame} specifying the pickup and drop-off zones +as well as their respective wait times for dynamic-transit or bike share.} + \item{draws_per_minute}{An integer. The number of Monte Carlo draws to perform per time window minute when calculating travel time matrices and when estimating accessibility. Defaults to 5. This would mean 300 draws in