## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = identical(tolower(Sys.getenv("NOT_CRAN")), "true"), out.width = "100%" ) ## ----message=FALSE------------------------------------------------------------ # increase Java memory options(java.parameters = "-Xmx2G") # load libraries library(r5r) library(dplyr) library(data.table) library(ggplot2) # data path data_path <- system.file("extdata/poa", package = "r5r") # build network r5r_network <- r5r::build_network( data_path = data_path, verbose = FALSE ) ## ----message=FALSE------------------------------------------------------------ # read data.frame with new car speeds edge_speed_factors <- read.csv( file.path(data_path, "poa_osm_congestion.csv") ) head(edge_speed_factors) ## ----message=FALSE------------------------------------------------------------ # origins and destination points points <- read.csv(file.path(data_path, "poa_points_of_interest.csv")) # travel time matrix ttm_congestion <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'car', departure_datetime = Sys.time(), max_trip_duration = 30, new_carspeeds = edge_speed_factors, carspeed_scale = 0.8 ) ## ----message=FALSE------------------------------------------------------------ # path to OSM pbf pbf_path <- paste0(data_path, "/poa_osm.pbf") # read layer of lines from pbf roads <- sf::st_read( pbf_path, layer = 'lines', quiet = TRUE ) # Filter only road types of interest rt <- c("motorway", "primary", "secondary", "tertiary") roads <- roads |> select(osm_id, highway) |> filter(highway %in% rt) head(roads) ## ----------------------------------------------------------------------------- # map plot(roads["highway"]) ## ----------------------------------------------------------------------------- new_edge_speeds <- roads |> mutate( osm_id = as.numeric(osm_id), max_speed = case_when( highway == "motorway" ~ 0.75, highway == "primary" ~ 0.8, highway == "secondary" ~ 0.85, highway == "tertiary" ~ 0.9)) |> sf::st_drop_geometry() new_edge_speeds$speed_type <- "scale" head(new_edge_speeds) ## ----message = FALSE, warning=FALSE------------------------------------------- # travel time matrix ttm_congestion <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'car', departure_datetime = Sys.time(), max_trip_duration = 30, new_carspeeds = new_edge_speeds ) ## ----message = FALSE---------------------------------------------------------- # edit table with custom speeds to 40 km/h new_edge_speeds40 <- new_edge_speeds |> mutate(max_speed = 40, speed_type = "km/h") # travel time matrix ttm_congestion <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'car', departure_datetime = Sys.time(), max_trip_duration = 30, new_carspeeds = new_edge_speeds40 ) ## ----message = FALSE---------------------------------------------------------- # read sf with congestion polygons congestion_poly <- readRDS(file.path(data_path, "poa_poly_congestion.rds")) # preview mapview::mapview(congestion_poly, zcol="scale") ## ----message = FALSE---------------------------------------------------------- head(congestion_poly) ## ----message = FALSE---------------------------------------------------------- ttm_congestion <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'car', departure_datetime = Sys.time(), max_trip_duration = 30, new_carspeeds = congestion_poly, carspeed_scale = 0.95 ) ## ----message=FALSE------------------------------------------------------------ # read data.frame with new lts edge_lts <- read.csv( file.path(data_path, "poa_osm_lts.csv") ) head(edge_lts) ## ----message = FALSE---------------------------------------------------------- ttm_new_lts <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'bicycle', departure_datetime = Sys.time(), max_trip_duration = 30, new_lts = edge_lts ) ## ----message = FALSE---------------------------------------------------------- # read sf with congestion polygons lts_lines <- readRDS(file.path(data_path, "poa_ls_lts.rds")) # preview mapview::mapview(lts_lines, zcol="lts") ## ----message = FALSE---------------------------------------------------------- ttm_new_lts <- r5r::travel_time_matrix( r5r_network = r5r_network, origins = points, destinations = points, mode = 'bicycle', departure_datetime = Sys.time(), max_trip_duration = 30, new_lts = lts_lines ) ## ----message = FALSE---------------------------------------------------------- # stop an specific r5r network r5r::stop_r5(r5r_network) # or stop all r5r networks at once r5r::stop_r5() rJava::.jgc(R.gc = TRUE)