The hereR package provides an interface to the HERE REST APIs for R: (1) geocode and autosuggest addresses or reverse geocode POIs using the Geocoder API; (2) route directions, travel distance or time matrices and isolines using the Routing API, Matrix Routing API and Isoline Routing API; (3) request real-time traffic flow and incident information from the Traffic API; (4) find public transport connections and nearby stations using the Public Transit API; (5) request intermodal routes using the Intermodal Routing API; (6) get weather forecasts, reports on current weather conditions and astronomical information at a specific location from the Destination Weather API.

Locations, routes and isolines are returned as sf objects.

Installation

You can install the released version of hereR from CRAN with:

Install the development version from GitHub with:

remotes::install_github("munterfi/hereR@develop")

Usage

This package requires an API key for a HERE project. The key is set for the current R session and is used to authenticate in the requests to the APIs. A login can be created on developer.here.com. In order to obtain the API key navigate to a project of your choice in the developer portal, select ‘REST: Generate APP’ and then ‘Create API Key’.

To set the API key, use:

library(hereR)
set_key("<YOUR API KEY>")

Note: Your use of the HERE APIs with this package is subject to the HERE Developer Terms and Conditions. For freemium licenses the number of requests per second (RPS) is limited, use set_freemium(FALSE) to turn off limits for accounts with paid plans.

Once valid application credentials are created and the key is set in the R session, the APIs can be addressed using the functions shown in the examples below. A more detailed description can be found in the documentation of the functions and the package vignettes.

Geocoding & Search API: Autosuggest and geocode addresses or reverse geocode POIs.

geocode(c("Schweighofstrasse 190, Zurich, Switzerland", "Hardstrasse 48, Zurich, Switzerland"))

autosuggest(c("Schweighofstrasse", "Hardstrasse"))

reverse_geocode(poi)

Routing API: Construct route geometries with elevation (dim = XYZ).

route(poi[1:2, ], poi[3:4, ], transport_mode = "car", traffic = TRUE)

route(poi[1:2, ], poi[3:4, ], transport_mode = "car", traffic = FALSE)

route(poi[1:2, ], poi[3:4, ], transport_mode = "bicycle")

Matrix Routing API: Request a matrix of route summaries.

route_matrix(poi, transport_mode = "car", traffic = TRUE)

route_matrix(
  geocode(c("Schweighofstrasse 190, Zurich, Switzerland", "Hardstrasse 48, Zurich, Switzerland")),
  transport_mode = "bicycle", traffic = FALSE
)

Isoline Routing API: Construct isolines around points (time, distance or consumption).

isoline(poi, range_type = "time", transport_mode = "pedestrian")

isoline(poi, range_type = "distance", transport_mode = "truck")

isoline(poi, range_type = "consumption", transport_mode = "car")

Traffic API: Get real-time traffic flow or incidents in a specific area.

flow(aoi[2, ])

incident(aoi, from = as.POSIXct("2018-01-01 00:00:00"))

Public Transit API: Request public transport connections between points or find stations nearby.

connection(poi[1:2, ], poi[3:4, ])

station(poi, radius = 500)

Intermodal Routing API: Get routes with various combinations of transport modes.

intermodal_route(poi[1:2, ], poi[3:4, ])

Destination Weather API: Request weather observations, forecasts, astronomical information or alerts at specific locations.

weather(poi, product = "observation")

weather(poi, product = "forecast_hourly")

weather(poi, product = "forecast_astronomy")

weather(poi, product = "alerts")

Contributing

  • Contributions to this package are very welcome, issues and pull requests are the preferred ways to share them.
  • Please see the Contribution Guidelines and direct pull requests to the develop branch.
  • This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.