Learn R Programming

osrm (version 3.3.1)

osrmIsochrone: Get Polygons of Isochrones

Description

Based on osrmTable, this function buids polygons of isochrones.

Usage

osrmIsochrone(loc, breaks = seq(from = 0, to = 60, length.out = 7),
  exclude = NULL, res = 30, returnclass = "sp")

Arguments

loc

a numeric vector of longitude and latitude (WGS84), an sf object, a SpatialPointsDataFrame or a SpatialPolygonsDataFrame of the origine point.

breaks

a numeric vector of isochrone values (in minutes).

exclude

pass an optional "exclude" request option to the OSRM API.

res

number of points used to compute isochrones, one side of the square grid, the total number of points will be res*res.

returnclass

class of the returned polygons. Either "sp" of "sf".

Value

A SpatialPolygonsDateFrame or an sf MULTIPOLYGON of isochrones is returned. The data frame of the output contains four fields: id (id of each polygon), min and max (minimum and maximum breaks of the polygon), center (central values of classes).

See Also

osrmTable

Examples

Run this code
# NOT RUN {
# Load data
library(sf)
data("berlin")
# Get isochones with lon/lat coordinates
iso <- osrmIsochrone(loc = c(13.43,52.47), breaks = seq(0,14,2), 
                     returnclass="sf")
plot(st_geometry(iso), col = c('grey80','grey60','grey50',
                               'grey40','grey30','grey20'))
# Map
if(require("cartography")){
  breaks <- sort(c(unique(iso$min), max(iso$max)))
  cartography::choroLayer(x = iso,
                          var = "center", breaks = breaks,
                          col = rev(carto.pal("green.pal",6)),
                          border = NA,
                          legend.pos = "topleft",legend.frame = TRUE,
                          legend.title.txt = "Isochrones\n(min)")
}

# Get isochones with an sf POINT
iso2 <- osrmIsochrone(loc = apotheke.sf[10,], returnclass="sf",
                      breaks = seq(from = 0, to = 16, by = 2))
# Map
if(require("cartography")){
  breaks2 <- sort(c(unique(iso2$min), max(iso2$max)))
  cartography::choroLayer(x = iso2, var = "center", 
                          breaks = breaks2, border = NA,
                          legend.pos = "topleft",legend.frame = TRUE,
                          legend.title.txt = "Isochrones\n(min)")
}
# }

Run the code above in your browser using DataLab