Destination Weather API

Weather forecasts, reports on current weather conditions, astronomical information and alerts at a specific location based on the ‘HERE Destination Weather’ API.

Observations

In order to request information about the current weather situation points of interest (POIs) have to be provided. The POIs must be an sf object containing geometries of type POINT or a character vector containing place names (e.g. cities). These POIs are passed to the weather() function, whereby the product parameter is set to "observation":

observation <- weather(
  poi = poi,
  product = "observation"
)

The return value is an sf object, which contains the POINT geometries of the provided POIs and the most recent record on the observed weather. The measurements are taken from the nearest weather observation stations with respect to the POIs. The distance of the stations to the provided POIs is an indicator for the reliabilty of the weather information at each POI. A table of the observed weather near the example POIs:

station distance description temperature humidity windSpeed windDirection
Rönnimoos 450 Scattered clouds. Chilly. 3 75 0.00 0
Lugano 670 Scattered clouds. Quite cool. 5 61 1.85 0
Chailly 340 Sprinkles. Broken clouds. Chilly. 3 81 11.12 250
Kleinhüningen 430 Light rain. Partly sunny. Quite cool. 5 87 5.56 90
Kehrsatz 620 Broken clouds. Chilly. 2 75 1.85 0
Zürich (Kreis 6) / Oberstrass 820 Partly sunny. Chilly. 3 75 0.00 0
Geneva 490 Light rain. Broken clouds. Chilly. 2 93 14.83 260
Vaduz 940 Partly sunny. Chilly. 3 81 3.71 0

Print the weather observation information on an interactive leaflet map:

if (requireNamespace("mapview", quietly = TRUE)) {
  m <-
    mapview::mapview(observation,
                     zcol = "temperature",
                     cex = observation$humidity/4,
                     layer.name = "Observation",
                     map.types = c("Esri.WorldTopoMap"),
                     homebutton = FALSE
    ) +
    mapview::mapview(poi,
                     zcol = "city",
                     cex = 1,
                     col.region = "black",
                     legend = FALSE,
                     homebutton = FALSE
    )
  m
}

Forecast

An hourly forecast of the predicted weather for the following seven days can be obtained by setting the product parameter to "forecast_hourly":

forecast <- weather(
  poi = poi,
  product = "forecast_hourly"
)

Print the weather observation information on an interactive leaflet map with popup graphs for temperature and humidity:

  1. Create a list containing the temperature and humidity graphs for every POI:
if (requireNamespace("ggplot2", quietly = TRUE)) {
  g <- lapply(seq_len(nrow(forecast)), function(x) {
    fc <- data.frame(
      dt = as.POSIXct(forecast$forecast[[x]]$utcTime, format = "%Y-%m-%dT%H:%M:%OS", tz = "UTC"),
      te = as.numeric(forecast$forecast[[x]]$temperature),
      rh = as.numeric(forecast$forecast[[x]]$humidity)
    )
    ggplot2::ggplot(fc, ggplot2::aes(x = dt)) +
      ggplot2::geom_line(ggplot2::aes(y = te, colour = "Temperature")) +
      ggplot2::geom_line(ggplot2::aes(y = rh/5, colour = "Humidity")) +
      ggplot2::scale_y_continuous(sec.axis = ggplot2::sec_axis(~.*5, name = "Relative humidity [%]")) +
      ggplot2::scale_colour_manual(values = c("blue", "red")) +
      ggplot2::labs(y = "Air temperature [°C]", x = "", colour = "") +
      ggplot2::ggtitle(forecast$station[x]) +
      ggplot2::theme_minimal() +
      ggplot2::theme(legend.position="bottom", panel.background = ggplot2::element_rect(color = NA))
  })
}
  1. Then add list of graphs to the leaflet map using the the popup parameter:
if (requireNamespace(c("ggplot2", "mapview", "leafpop"), quietly = TRUE)) {
  m <-
    mapview::mapview(forecast,
                     color = "black",
                     col.region = "yellow",
                     layer.name = "Weather station",
                     zcol = "station",
                     map.types = c("Esri.WorldTopoMap"),
                     homebutton = FALSE,
                     legend = FALSE,
                     popup = leafpop::popupGraph(g)
    ) +
    mapview::mapview(poi,
                     zcol = "city",
                     cex = 1,
                     col.region = "black",
                     layer.name = "POI",
                     legend = FALSE,
                     homebutton = FALSE
    )
  m
}

Astronomy

An astronomical forecast is requested by setting the product parameter to "forecast_astronomy":

astronomy <- weather(
  poi = poi,
  product = "forecast_astronomy"
)

Print a table for the sun and moon times of the first example POI, where the nearest station is ‘Emmenbrücke’:

date sunrise sunset moonrise moonset phase
2020-12-31 8:13AM 4:47PM 6:01PM 9:28AM Full moon
2021-01-01 8:13AM 4:48PM 7:10PM 10:09AM Waning gibbous
2021-01-02 8:13AM 4:48PM 8:22PM 10:44AM Waning gibbous
2021-01-03 8:13AM 4:49PM 9:37PM 11:12AM Waning gibbous
2021-01-04 8:13AM 4:50PM 10:52PM 11:37AM Waning gibbous
2021-01-05 8:12AM 4:52PM
11:59AM Waning gibbous
2021-01-06 8:12AM 4:53PM 12:07AM 12:21PM Last Quarter
2021-01-07 8:12AM 4:54PM 1:24AM 12:44PM Last Quarter

Alerts

Current weather alerts, near provided POIs, are obtain by the product alerts:

alerts <- weather(
  poi = poi,
  product = "alerts"
)

This returns an sf object with the POIs and the attribute "alerts", which is a data.table, which contains the current weather alerts. If no alerts are recorded near a POI the attribute "alerts" is NULL.

API Reference