osrmTable()
accepts sf & sp objects or dataframes and matrices with exactly 2 columns, WGS84 lon & lat.
library(sf)
library(osrm)
# some sample data
stops <- read.csv(text = "lon,lat,name
24.7653725,59.4426444,Reisisadama D-terminal
24.7514720,59.4438342,Linnahall
24.7601144,59.4446286,Reisisadama A-terminal
24.7655886,59.4425595,Reisisadama D-terminal
24.7696412,59.4413391,Uus-Sadama
24.7593333,59.4401405,Siimeoni",header = T, )
# 3 columns, numeric lon/lat
str(stops)
#> 'data.frame': 6 obs. of 3 variables:
#> $ lon : num 24.8 24.8 24.8 24.8 24.8 ...
#> $ lat : num 59.4 59.4 59.4 59.4 59.4 ...
#> $ name: chr "Reisisadama D-terminal" "Linnahall" "Reisisadama A-terminal" "Reisisadama D-terminal" ...
# osrmTable() with 3-column tables - fails
osrmTable(stops[1:3,], stops[4:6,])
#> Error: "src" should contain coordinates.
# osrmTable() with 2-column tables - OK
osrmTable(stops[1:3,c("lon", "lat")], stops[4:6,c("lon", "lat")])
#> $durations
#> 4 5 6
#> 1 0.0 1.1 1.0
#> 2 3.1 3.0 2.3
#> 3 3.1 3.1 2.3
#>
#> $sources
#> lon lat
#> 1 24.76541 59.44259
#> 2 24.75145 59.44378
#> 3 24.76006 59.44473
#>
#> $destinations
#> lon lat
#> 4 24.76555 59.44261
#> 5 24.76971 59.44126
#> 6 24.75928 59.44008
# osrmTable() with sf objects - OK
stops_sf <- st_as_sf(stops, coords = c("lon", "lat"), crs = "WGS84")
osrmTable(stops_sf[1:3,], stops_sf[4:6,])
#> $durations
#> 4 5 6
#> 1 0.0 1.1 1.0
#> 2 3.1 3.0 2.3
#> 3 3.1 3.1 2.3
#>
#> $sources
#> lon lat
#> 1 24.76541 59.44259
#> 2 24.75145 59.44378
#> 3 24.76006 59.44473
#>
#> $destinations
#> lon lat
#> 4 24.76555 59.44261
#> 5 24.76971 59.44126
#> 6 24.75928 59.44008
Created on 2023-01-31 with reprex v2.0.2