The goal of cyclestreets is to provide a simple R interface to the CycleStreets routing service.
It was split-out from stplanr for modularity.
You can install the released version of cyclestreets from CRAN with:
install.packages("cyclestreets")
Install the development version with devtools as follows:
# install.packages("devtools")
::install_github("cyclestreets/cyclestreets-r") devtools
A common need is to get from A to B:
library ("cyclestreets")
# stplanr::geo_code ("leeds rail station")
= c(-1.544, 53.794)
from # stplanr::geo_code ("leeds university")
= c(-1.551, 53.807)
to = cyclestreets::journey(from, to, "balanced")
r :::plot.sf(r)
sf#> Warning: plotting the first 10 out of 43 attributes; use max.plot = 43 to plot
#> all
To get a key go to https://www.cyclestreets.net/api/apply/
Save the key as an environment varible using
export CYCLESTREETS=your_key_here
by adding
CYCLESTREETS=your_key_here
as a new line in your
.Renviron
file, e.g. with the following command:
::edit_r_environ() usethis
Check the map is good with leaflet:
library(leaflet)
= colorNumeric("RdYlBu", domain = r$quietness, reverse = TRUE)
p leaflet(r) %>%
addTiles() %>%
addPolylines(color = ~p(quietness), weight = 20, opacity = 0.9) %>%
addLegend(pal = p, values = ~quietness)
Or tmap, highlighting the recently added ‘quietness’ variable:
library(tmap)
tmap_mode("view")
tm_shape(r) + tm_lines("quietness", palette = "RdYlBu", lwd = 3)
#> The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
#> which was just loaded, will retire in October 2023.
#> Please refer to R-spatial evolution reports for details, especially
#> https://r-spatial.org/r/2023/05/15/evolution4.html.
#> It may be desirable to make the sf package available;
#> package maintainers should consider adding sf to Suggests:.
#> The sp package is now running under evolution status 2
#> (status 2 uses the sf package in place of rgdal)
#> Breaking News: tmap 3.x is retiring. Please test v4, e.g. with
#> remotes::install_github('r-tmap/tmap')
#> tmap mode set to interactive viewing
#> Interactive map saved to /home/robin/github/cyclestreets/cyclestreets-r/m.html
See an interactive version of this map, showing all variables per segment, here.
Or mapview:
::mapview(r) mapview
Route types available are: fastest, quietest, balanced. See help
pages such as ?journey
and https://www.cyclestreets.net/api/ for details.
You can also get streets by LTN status.
= ltns(r)
network_ltns plot(network_ltns)