# use eval = NOT_CRAN in the chunks connecting to API, to avoid errors or warnings in CRAN checks NOT_CRAN <- identical(tolower(Sys.getenv("NOT_CRAN")), "true") knitr::opts_chunk$set( collapse = TRUE, comment = "#>", purl = NOT_CRAN ) # env keyring withr::local_options(list("keyring_backend" = "env"))
library(meteospain) library(dplyr) library(ggplot2) library(ggforce) library(units) library(sf) library(keyring)
MeteoCat is the Catalonian meteorologic service. It offers access to different
meteorological data and information, being one of their main missions to curate and circulate data from
meteorological stations. meteospain
only access to the automatic meteorological stations network data.
meteospain
offers access to the MeteoCat API at different temporal resolutions:
In "daily" and "monthly", a start_date
argument must be provided, indicating the date from which retrieve
the data as explained earlier. For more info see vignette('api_limits', package = 'meteospain')
.
meteospain
access the data in the MeteoCat API collecting all stations. If a character vector of stations codes
is supplied in the stations
argument, a filter step is done before returning the data to maintain only
the stations supplied.
MeteoCat API only allow access to the data with a personal API Key. This token must be included in the
api_key
argument of meteocat_options
function.
To obtain the API Key, please visit https://apidocs.meteocat.gencat.cat/ and follow the instructions there.
It is not advisable to use the keys directly in any script shared or publicly available (github...), neither store them in plain text files. One option is using the keyring package for managing and accessing keys:
r
install.packages('keyring')
library(keyring)
key_set('meteocat') # A prompt asking for the secret (the API Key) will appear.
# current day, all stations api_options <- meteocat_options( resolution = 'instant', api_key = key_get('meteocat') ) api_options
# current day, all stations fake_api <- meteocat_options( resolution = 'instant', api_key = 'my_api_key' ) fake_api
# daily, all stations api_options <- meteocat_options( resolution = 'daily', start_date = as.Date('2020-04-10'), api_key = key_get('meteocat') ) api_options
# daily, all stations fake_api <- meteocat_options( resolution = 'daily', start_date = as.Date('2020-04-25'), api_key = 'my_api_key' ) fake_api
Accessing station metadata for MeteoCat is simple:
get_stations_info_from('meteocat', api_options)
api_options <- meteocat_options( resolution = 'monthly', start_date = as.Date('2020-04-01'), api_key = key_get('meteocat') ) catalunya_2020 <- get_meteo_from('meteocat', options = api_options) catalunya_2020
Visually:
catalunya_2020 |> units::drop_units() |> mutate(month = lubridate::month(timestamp, label = TRUE)) |> ggplot() + geom_sf(aes(colour = mean_temperature)) + facet_wrap(vars(month), ncol = 4) + scale_colour_viridis_c() catalunya_2020 |> mutate(month = lubridate::month(timestamp, label = TRUE)) |> ggplot() + geom_histogram(aes(x = precipitation)) + facet_wrap(vars(month), ncol = 4)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.