diff --git a/java-r5rcore/src/org/ipea/r5r/R5RCore.java b/java-r5rcore/src/org/ipea/r5r/R5RCore.java index 673bd93d..236dfd47 100644 --- a/java-r5rcore/src/org/ipea/r5r/R5RCore.java +++ b/java-r5rcore/src/org/ipea/r5r/R5RCore.java @@ -5,9 +5,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; @@ -28,9 +30,7 @@ import java.nio.file.Paths; import java.text.ParseException; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; @@ -642,6 +642,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 40006a60..b19d66ba 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 f776a4e7..ecd4895c 100644 --- a/r-package/R/accessibility.R +++ b/r-package/R/accessibility.R @@ -160,6 +160,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, @@ -256,6 +257,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 2ae04b5e..3108188e 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, @@ -191,6 +192,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 150ad33d..a7e747b0 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 6d638602..43d76310 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 09f8b8b0..7f50444a 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 1ee4a9d4..0711f8fd 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 3f9f2864..456258d6 100644 --- a/r-package/R/set.R +++ b/r-package/R/set.R @@ -622,7 +622,7 @@ set_new_congestion <- function(r5r_network, new_carspeeds, carspeed_scale) { #' Verifies if and which LTS mode to use and applies it. #' #' @template r5r_network -#' @param new_carspeeds A df or sf polygon. +#' @param new_lts A df or sf polygon. #' #' @return Invisibly returns `TRUE`. #' @family setting functions @@ -647,3 +647,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 0e449dbd..c7e436f3 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, @@ -224,7 +225,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 1b9e8757..c4a5a035 100644 --- a/r-package/R/utils.R +++ b/r-package/R/utils.R @@ -220,8 +220,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 #' @@ -254,8 +254,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"), @@ -320,7 +320,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", "MULTILINESTRING"), @@ -346,3 +346,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 00000000..b3c1e6b4 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 b5df7579..528f5171 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 639d9040..b335deda 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, @@ -188,6 +189,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 3c6aa5be..70000028 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 e64294c6..6e3ff4ed 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 33af5ec1..70fd27e3 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 48380990..aefff0d6 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 e4f24cc6..4942443f 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 0b5a1598..fb22f471 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 b7c68822..123c9a4f 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 37aa2d9b..a533fa29 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 b4394c75..fab330cc 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 00000000..9af35a3a --- /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 00000000..349cbafb --- /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 ba824e67..6dce12b1 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 9f8b4165..2e83f57d 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 fda7d6dd..d8337a8b 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")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # 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 c1640f38..8413655b 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 32a07984..898731fb 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 de2cf50f..6eff33a9 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 00000000..34ec7b00 --- /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 e4c714c4..67e5a0e3 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 042ef5c0..acd18abf 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 9a155757..3d9bb9f5 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 9bb0fe94..8990c2f5 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 00000000..13a8239e --- /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 92005380..6e3a6ec6 100644 --- a/r-package/man/reverse_if_direct_mode.Rd +++ b/r-package/man/reverse_if_direct_mode.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_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 71a94567..449a9560 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 c97cdf1d..995ab440 100644 --- a/r-package/man/set_breakdown.Rd +++ b/r-package/man/set_breakdown.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_cutoffs.Rd b/r-package/man/set_cutoffs.Rd index f959dbd6..596987d2 100644 --- a/r-package/man/set_cutoffs.Rd +++ b/r-package/man/set_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_elevation.Rd b/r-package/man/set_elevation.Rd index cc87083c..9c46b46a 100644 --- a/r-package/man/set_elevation.Rd +++ b/r-package/man/set_elevation.Rd @@ -32,6 +32,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 56dcd385..c6c3b3d3 100644 --- a/r-package/man/set_expanded_travel_times.Rd +++ b/r-package/man/set_expanded_travel_times.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_fare_cutoffs.Rd b/r-package/man/set_fare_cutoffs.Rd index 2955dbba..dfb331ac 100644 --- a/r-package/man/set_fare_cutoffs.Rd +++ b/r-package/man/set_fare_cutoffs.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_fare_structure.Rd b/r-package/man/set_fare_structure.Rd index 9e7294b3..e2c50552 100644 --- a/r-package/man/set_fare_structure.Rd +++ b/r-package/man/set_fare_structure.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_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 b8e72657..80198130 100644 --- a/r-package/man/set_max_fare.Rd +++ b/r-package/man/set_max_fare.Rd @@ -34,6 +34,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 847c2276..cbef7877 100644 --- a/r-package/man/set_max_lts.Rd +++ b/r-package/man/set_max_lts.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_max_rides.Rd b/r-package/man/set_max_rides.Rd index a92f1998..90723673 100644 --- a/r-package/man/set_max_rides.Rd +++ b/r-package/man/set_max_rides.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_monte_carlo_draws.Rd b/r-package/man/set_monte_carlo_draws.Rd index 99de81d3..b28770da 100644 --- a/r-package/man/set_monte_carlo_draws.Rd +++ b/r-package/man/set_monte_carlo_draws.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_n_threads.Rd b/r-package/man/set_n_threads.Rd index 718372ca..a2914a60 100644 --- a/r-package/man/set_n_threads.Rd +++ b/r-package/man/set_n_threads.Rd @@ -34,6 +34,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 6fcf4a6d..72be3854 100644 --- a/r-package/man/set_new_congestion.Rd +++ b/r-package/man/set_new_congestion.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_new_lts.Rd b/r-package/man/set_new_lts.Rd index 4a74725c..dd77d43b 100644 --- a/r-package/man/set_new_lts.Rd +++ b/r-package/man/set_new_lts.Rd @@ -9,7 +9,7 @@ set_new_lts(r5r_network, new_lts) \arguments{ \item{r5r_network}{A routable transport network created with \code{\link[=build_network]{build_network()}}.} -\item{new_carspeeds}{A df or sf polygon.} +\item{new_lts}{A df or sf polygon.} } \value{ Invisibly returns \code{TRUE}. @@ -34,6 +34,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 fe4446b5..e20a819f 100644 --- a/r-package/man/set_output_dir.Rd +++ b/r-package/man/set_output_dir.Rd @@ -34,6 +34,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 ee28b2a3..865749ef 100644 --- a/r-package/man/set_percentiles.Rd +++ b/r-package/man/set_percentiles.Rd @@ -34,6 +34,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 00000000..9ac996e5 --- /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 e76ca474..d3c9b4ce 100644 --- a/r-package/man/set_progress.Rd +++ b/r-package/man/set_progress.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_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 15f711fd..39b56540 100644 --- a/r-package/man/set_speed.Rd +++ b/r-package/man/set_speed.Rd @@ -39,6 +39,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 4ee2af0d..fa672df9 100644 --- a/r-package/man/set_suboptimal_minutes.Rd +++ b/r-package/man/set_suboptimal_minutes.Rd @@ -56,6 +56,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 8081b040..b812dd40 100644 --- a/r-package/man/set_time_window.Rd +++ b/r-package/man/set_time_window.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_verbose.Rd b/r-package/man/set_verbose.Rd index 39db3514..15de93c9 100644 --- a/r-package/man/set_verbose.Rd +++ b/r-package/man/set_verbose.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/travel_time_matrix.Rd b/r-package/man/travel_time_matrix.Rd index e6695e35..9d0dfc00 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