---
title: "Meteoclimatic service"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Meteoclimatic service}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r, include = FALSE}
# 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"))
```

```{r setup}
library(meteospain)
library(ggplot2)
library(ggforce)
library(units)
library(sf)
```

# Meteoclimatic service

[Meteoclimatic](https://www.meteoclimatic.net/) is a non-professional (amateur) network of automatic
meteorological stations. This network cover all Spain, but does not offer quality testing of the data.

## Meteoclimatic options

### Temporal resolution

Meteoclimatic API only offers aggregated data for the current day, so, in this case the `resolution` parameter
is limited to "current_day".

### Stations

Meteoclimatic API does not accept multiple stations in the same query. But it has station codes that can
access the data from several stations in the same geographic area (i.e. "ES" for all stations, "ESCAT" for
all stations in Catalunya, "ESCAT08" for all stations in Barcelona province). So, the `stations` is limited
at length one.

### Example

```{r meteoclimatic_options, eval = NOT_CRAN}
api_options <- meteoclimatic_options(stations = 'ESCAT08')
api_options
```

## Meteoclimatic stations info

Accessing station metadata for Meteoclimatic is simple:

```{r meteoclimatic_stations, eval = NOT_CRAN}
get_stations_info_from('meteoclimatic', options = api_options)
```

## Meteoclimatic data

```{r meteoclimatic_data, eval = NOT_CRAN}
current_day_barcelona <- get_meteo_from('meteoclimatic', options = api_options)
current_day_barcelona
```

Visually:

```{r meteoclimatic_data_plot, fig.width=7, fig.height=5, fig.align='center', eval = NOT_CRAN}
current_day_barcelona |>
  units::drop_units() |>
  ggplot() +
  geom_sf(aes(colour = max_temperature)) +
  scale_colour_viridis_c()

current_day_barcelona |>
  ggplot() +
  geom_histogram(aes(x = max_relative_humidity))
```