Créer une matrice de distance
L’API OSRM
Il est possible d’attaquer n’importe quelle API en utilisant le package RCurl qui permet d’envoyer des requetes http://…
Le package osrm
Le package osrm ets une interface entre R et l’API OSRM. OSRM est un service de routage basé sur les données OpenStreetMap. Ce package permet donc de calculer des itinéraires, des trajets, des isochrones et des matrices de distances de déplacement (temps de trajet et distance kilométrique).
library(sf)
library(osrm)
Données du package
<- read.csv(system.file("csv/apotheke.csv", package = "osrm"))
apotheke.df <- st_read(system.file("gpkg/apotheke.gpkg", package = "osrm"),
apotheke.sf quiet = TRUE)
osrmTable
osrmTable permet d’obtenir des matrices de temps de parcours entre des points. Cette fonction sert d’interface au service table d’OSRM.
# Travel time matrix
<- osrmTable(loc = apotheke.df[1:50, c("id","lon","lat")])
distA # First 5 rows and columns
$durations[1:5,1:5] distA
## 440338666 538057637 977657079 3770254015 364363337
## 440338666 0.0 21.2 33.5 20.6 12.0
## 538057637 22.7 0.0 41.8 16.1 20.2
## 977657079 33.1 40.6 0.0 30.2 27.2
## 3770254015 19.4 15.3 29.3 0.0 12.9
## 364363337 9.5 20.2 26.7 12.3 0.0
osrmRoute
osrmRoute permet d’obtenir la géométrie du trajet entre deux points. Cette fonction sert d’interface au service route d’OSRM.
# Travel path between points
<- osrmRoute(src = apotheke.sf[1, ], dst = apotheke.df[16, ],
route1 returnclass="sf")
# Display paths
plot(st_geometry(route1))
plot(st_geometry(apotheke.sf[c(1,16),]), col = "red", pch = 20, add = TRUE)
osrmTrip
osrmTrip permet d’obtenir la géométrie du trajet le plus court entre plusieurs points. Cette fonction sert d’interface au service trip d’OSRM.
# Get a trip with a set of points (sf POINT)
<- osrmTrip(loc = apotheke.sf[1:5, ], returnclass = "sf")
trips <- trips[[1]]$trip
mytrip # Display the trip
plot(st_geometry(mytrip), col = "black", lwd = 4)
plot(st_geometry(mytrip), col = c("red", "white"), lwd = 1, add = TRUE)
plot(st_geometry(apotheke.sf), pch = 21, bg = "red", cex = 1, add = TRUE)
osrmIsochrone
basé sur osrmTable, la fonction osrmIsochrone permet de construire des isochrones.
<- osrmIsochrone(loc = c(13.43,52.47), breaks = seq(0,14,2),
iso returnclass="sf")
plot(st_geometry(iso), col = c('grey80','grey60','grey50',
'grey40','grey30','grey20'))