Le package osrm
assure le lien entre R et l’API d’OSRM. OSRM est un service de routage basé sur les données OpenStreetMap.
Ce package permet d’obtenir le temps de trajet, la distance et le plus court chemin entre deux points via le réseau routier d’OpenStreetMap. Il est également possible d’obtenir des matrices de distances entre deux séries de points.
Pour suivre l’évolution de l’API qu’il interface, j’ai mis à jour le package osrm
.
Vue l’ampleur des modifications sur l’API, la compatibilité descendante n’est pas assurée, les codes anciens ne fonctionneront plus.
Voici un petit exemple d’utilisation du package (télécharger les données ici) :
library(osrm) # to get paths between points
library(cartography) # to plot a base map
library(rgdal) # to import/export shapefile
# import a shapefile
letter <- readOGR(dsn="/home/tg/Bureau/", layer = "R")
# plot a base map using getTiles and tilesLayer
# functions from cartography
par(mar=c(0,0,0,0))
mytiles <- getTiles(spdf = letter, type = "osm")
tilesLayer(mytiles)
# plot the points
plot(letter, add=T, pch = 20, col = 'blue', cex = 2)
# Create a SpaTialLinesDataFrame of all the roads
df <- data.frame(coordinates(letter))
names(df) <- c("X", "Y")
df$id <- 1:nrow(df)
for (i in 1:(nrow(df)-1)){
road <- osrmViarouteGeom(src = df[i,3:1],
dst = df[i+1,3:1],
sp =TRUE)
if (exists("myroads")){
myroads <- rbind(myroads, road)
}else{
myroads <- road
}
}
# and plot it
plot(myroads, col = "red", lwd = 2, add=TRUE)
### export the road layer
## writeOGR(obj = myroads, dsn="/home/tg/Bureau",
## layer = "myroads", driver = "ESRI Shapefile")
La prochaine version (actuellement disponible sur GitHub) permet d’utiliser directement des SpatialPointsDataFrame comme argument des fonctions.
Voir aussi :
Temps de trajet et matrices de distances avec R et OpenStreetMap
OpenEdition vous propose de citer ce billet de la manière suivante :
Timothée Giraud (9 février 2016). Mise à jour du package osrm (version 2.0.0). R Géomatique. Consulté le 9 décembre 2024 à l’adresse https://doi.org/10.58079/tp3o