Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crazycapivara/graphhopper-r
An R Interface to the graphhopper API
https://github.com/crazycapivara/graphhopper-r
api-client graphhopper r routing-engine rspatial rstats travel-times
Last synced: 3 months ago
JSON representation
An R Interface to the graphhopper API
- Host: GitHub
- URL: https://github.com/crazycapivara/graphhopper-r
- Owner: crazycapivara
- License: other
- Created: 2019-03-22T17:17:57.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-17T10:40:26.000Z (over 3 years ago)
- Last Synced: 2024-07-08T18:02:32.883Z (4 months ago)
- Topics: api-client, graphhopper, r, routing-engine, rspatial, rstats, travel-times
- Language: R
- Homepage: https://crazycapivara.github.io/graphhopper-r/
- Size: 879 KB
- Stars: 18
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
README
---
output: github_document
---```{r setup, include = FALSE}
library(ggplot2)knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-"
#,out.width = "400px"
)
```
# graphhopper-R[![CRAN status](https://www.r-pkg.org/badges/version/graphhopper)](https://CRAN.R-project.org/package=graphhopper)
[![github_status_badge](https://img.shields.io/badge/github-0.1.3-blue.svg)](https://github.com/crazycapivara/graphhopper-r/releases/latest)
[![Travis build status](https://travis-ci.org/crazycapivara/graphhopper-r.svg?branch=master)](https://travis-ci.org/crazycapivara/graphhopper-r)
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![R build status](https://github.com/crazycapivara/graphhopper-r/workflows/R-CMD-check/badge.svg)](https://github.com/crazycapivara/graphhopper-r/actions)An R Interface to the [GraphHopper](https://www.graphhopper.com/) Directions API
The purpose of {graphhopper} is to provide a quick and easy access to the GraphHopper Directions API. Responses can be converted into simple feature (sf) objects in a convenient way. The package is not a complete wrapper of the API. Currently it mainly supports the API also included in [GraphHopper's Open Source Routing Engine](https://github.com/graphhopper/graphhopper). New features will be added continuously.
Dive into the [documentation here](https://crazycapivara.github.io/graphhopper-r/).
## Installation
Install the release version from [CRAN](https://cran.r-project.org/) with:
```r
install.packages("graphhopper")
```Install the development version from [GitHub](https://github.com/) with:
```r
# install.packages("remotes")
remotes::install_github("crazycapivara/graphhopper-r")
```## Get started
Run your own GraphHopper instance (with data of Berlin):
```bash
docker run --name gh --rm -p 8989:8989 -d graphhopper/graphhopper:2.0
```### Setup
```{r example}
library(graphhopper)API_URL <- "http://localhost:8989"
# API_URL <- "https://graphhopper.com/api/1/"
gh_set_api_url(API_URL)info <- gh_get_info()
info$version
info$data_date
gh_bbox(info)
```If you use the [GraphHopper Web Service](https://graphhopper.com/api/1/) instead of a local instance it is recommended that you store your API key in an environment variable called `GH_API_KEY`. Alternatively, you can pass the key as parameter to the `gh_get_*` functions.
### Route
Get a route in Berlin:
```{r route-example}
start_point <- c(52.592204, 13.414307)
end_point <- c(52.539614, 13.364868)(route <- gh_get_route(list(start_point, end_point)) %>%
gh_as_sf())ggplot(data = route) +
geom_sf() +
theme(axis.text.x = element_text(angle = 45))route$time
via_point <- c(52.545461, 13.435249)
route2 <- gh_get_route(list(start_point, via_point, end_point))
gh_time_distance(route2)
ggplot(data = gh_as_sf(route2)) +
geom_sf() +
theme(axis.text.x = element_text(angle = 45))gh_points(route2) %>%
head()gh_instructions(route2)[, c("lon", "lat", "gh_id", "gh_end_id", "text", "distance")] %>%
head()
```### Shortest path tree
```{r spt-example}
start_point <- c(52.53961, 13.36487)points_sf <- gh_get_spt(start_point, time_limit = 180) %>%
gh_as_sf() %>%
dplyr::mutate(time = (time / 1000 / 60))ggplot() +
geom_sf(data = points_sf, aes(colour = time), size = 0.5) +
theme(axis.text.x = element_text(angle = 45))
```Also query previous nodes to plot the network:
```{r spt-example-lines}
(columns <- gh_spt_columns(
prev_longitude = TRUE,
prev_latitude = TRUE,
prev_time = TRUE
))lines_sf <- gh_get_spt(end_point, time_limit = 240, columns = columns) %>%
dplyr::mutate(mean_time = ((time + prev_time) / 2) / 1000 / 60) %>%
gh_spt_as_linestrings_sf()ggplot() +
geom_sf(data = lines_sf, aes(color = mean_time), size = 1) +
theme(axis.text.x = element_text(angle = 45))
```### Isochrone
```{r isochrone-example}
start_point <- c(52.53961, 13.36487)isochrone_sf <- gh_get_isochrone(start_point, time_limit = 180) %>%
gh_as_sf()ggplot() +
geom_sf(data = isochrone_sf, fill = "yellow") +
geom_sf(data = points_sf, aes(colour = time), size = 0.5) +
theme(axis.text.x = element_text(angle = 45))
```