Finds the snapped location of points on R5 network. Snapping is a very important step of the routing process, which is when the origins and destinations specified by the user are actually positioned on the network created by R5. The snapping process in R5 is composed of two rounds. First, it tries to snap the points within a radius of 300 meters from themselves. If the first round is unsuccessful, then R5 expands the search radius to 1.6 km. If yet again it is unsuccessful, then the unsnapped points won't be used during the routing process. The snapped location of each point depends on the transport mode set by the user, because some network edges are not available to specific modes (e.g. a pedestrian-only street cannot be used to snap car trips).

find_snap(r5r_core, points, mode = "WALK")



An object to connect with the R5 routing engine, created with setup_r5().


Either a POINT sf object with WGS84 CRS, or a data.frame containing the columns id, lon and lat.


A string. Which mode to consider when trying to snap the points to the network. Defaults to WALK, also allows BICYCLE and CAR.


A data.table with the original points, their respective snapped coordinates on the street network and the Euclidean distance ( in meters) between the original points and their snapped location. Points that could not be snapped show NA coordinates and found = FALSE.

See also

Other network functions: street_network_to_sf(), transit_network_to_sf()



path <- system.file("extdata/poa", package = "r5r")
r5r_core <- setup_r5(data_path = path)
#> Using cached R5 version from /home/runner/work/_temp/Library/r5r/jar/r5-v6.9-all.jar
#> Using cached network.dat from /home/runner/work/_temp/Library/r5r/extdata/poa/network.dat
points <- read.csv(file.path(path, "poa_hexgrid.csv"))

snap_df <- find_snap(r5r_core, points, mode = "WALK")

#> r5r_core has been successfully stopped.