Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, eval = TRUE)
## ----eval=FALSE---------------------------------------------------------------
# # these should normally already be installed with rnrfa
# install.packages(c("curl", "ggmap", "ggplot2", "httr", "jsonlite",
# "lubridate", "parallel", "sf", "tibble", "zoo"))
## ----eval=FALSE---------------------------------------------------------------
# packs <- c("devtools", "DT", "leaflet", "dygraphs")
# install.packages(packs, repos = "https://cloud.r-project.org")
# lapply(packs, require, character.only = TRUE)
## ----eval=FALSE,message=FALSE-------------------------------------------------
# install.packages("rnrfa")
## ----eval=FALSE---------------------------------------------------------------
# remotes::install_github("ilapros/rnrfa")
## ----eval=FALSE,echo=TRUE-----------------------------------------------------
# library(rnrfa)
## ----eval=TRUE,echo=FALSE-----------------------------------------------------
suppressPackageStartupMessages(library(rnrfa))
## -----------------------------------------------------------------------------
# Retrieve station identifiers:
allIDs <- station_ids()
head(allIDs)
## -----------------------------------------------------------------------------
# Retrieve information for all the stations in the catalogue:
allStations <- catalogue()
head(allStations)
## -----------------------------------------------------------------------------
# Define a bounding box:
bbox <- list(lon_min = -3.82, lon_max = -3.63, lat_min = 52.43, lat_max = 52.52)
# Filter stations based on bounding box
x <- catalogue(bbox)
dim(x); range(x$latitude); range(x$longitude)
# Filter based on minimum recording years
x <- catalogue(min_rec = 100)
dim(x); range(lubridate::year(x$`gdf-end-date`) - lubridate::year(x$`gdf-start-date`))
# Filter stations measuring a certain river
x <- catalogue(column_name="river", column_value="Wye")
dim(x); unique(x$river)
# Filter based on bounding box & metadata strings
x <- catalogue(bbox, column_name="river", column_value="Wye")
dim(x); unique(x$river)
# Filter stations based on threshold
x <- catalogue(bbox, column_name="catchment-area", column_value=">1")
dim(x); range(x$`catchment-area`)
# Filter based on minimum recording years
x <- catalogue(bbox, column_name = "catchment-area",
column_value = ">1",
min_rec = 30)
dim(x)
# Filter stations based on identification number
x <- catalogue(column_name="id", column_value="== c(3001,3002,3003)")
x$id
## -----------------------------------------------------------------------------
# Other combined filtering
someStations <- catalogue(bbox,
column_name = "id",
column_value = "==c(54022,54090,54091,54092,54097)",
min_rec = 35)
## -----------------------------------------------------------------------------
# Where is the first catchment located?
someStations$`grid-reference`$ngr[1]
# Convert OS Grid reference to BNG
osg_parse("SN853872")
## -----------------------------------------------------------------------------
# Convert BNG to WSGS84
osg_parse(grid_refs = "SN853872", coord_system = "WGS84")
## -----------------------------------------------------------------------------
osg_parse(grid_refs = someStations$`grid-reference`$ngr)
## ----fig.width=7,fig.asp=0.6--------------------------------------------------
# Fetch only time series data from the waterml2 service
info <- cmr(id = "3001")
plot(info)
## ----fig.width=7,fig.asp=0.6--------------------------------------------------
# Fetch time series data and metadata from the waterml2 service
info <- cmr(id = "3001", metadata = TRUE)
info$meta
plot(info$data,
main = paste("Monthly rainfall data for the",
info$meta$station.name,"catchment"),
xlab = "", ylab=info$meta$data.type.units)
## ----fig.width=7,fig.asp=0.6--------------------------------------------------
# Fetch only time series data
# info <- gdf(id = "3001")
# plot(info)
# Fetch time series data and metadata from the waterml2 service
info <- gdf(id = "3001", metadata = TRUE)
plot(info$data,
main = paste0("Daily flow data for the ", info$meta$station.name,
" catchment (",info$meta$data.type.units, ")"),
ylab = info$meta$data.type.name)
## ----fig.width=7--------------------------------------------------------------
# Search data/metadata
s <- cmr(c(3002,3003), metadata = TRUE)
# s is a list of 2 objects (one object for each site)
plot(s[[1]]$data,
main = paste(s[[1]]$meta$station.name, "and", s[[2]]$meta$station.name),
sub = "Catchment monthly rainfall", ylab = s[[1]]$meta$data.type.units)
lines(s[[2]]$data, col = "green")
s <- get_ts(c(3002, 3003), type = "gdf", metadata = TRUE)
plot(s[[1]]$data,
main = paste(s[[1]]$meta$station.name, "and", s[[2]]$meta$station.name),
sub = "Gauged daily flow", ylab=s[[1]]$meta$data.type.units)
lines(s[[2]]$data, col="pink2")
## -----------------------------------------------------------------------------
library(DT)
datatable(catalogue(column_name = "river", column_value = "Thames", all = FALSE))
## -----------------------------------------------------------------------------
library(leaflet)
leaflet(data = someStations) %>% addTiles() %>%
addMarkers(~longitude, ~latitude, popup = ~as.character(paste(id,name)))
## -----------------------------------------------------------------------------
library(dygraphs)
dygraph(info$data) %>% dyRangeSelector()
## ----eval=FALSE---------------------------------------------------------------
# library(parallel)
# # Use detectCores() to find out many cores are available on your machine
# cl <- makeCluster(getOption("cl.cores", detectCores()))
#
# # Filter all the stations within the above bounding box
# someStations <- catalogue(bbox)
#
# # Get flow data with a sequential approach
# system.time(s1 <- gdf(someStations$id, cl = NULL))
#
# # Get flow data with a concurrent approach (using `parLapply()`)
# system.time(s2 <- gdf(id = someStations$id, cl = cl))
#
# stopCluster(cl)
## -----------------------------------------------------------------------------
# Linear model
library(ggplot2)
ggplot(allStations[!is.na(allStations$qmed),],
aes(x = as.numeric(`catchment-area`), y = qmed)) +
geom_point() +
stat_smooth(formula = y ~ x, method = "lm", col = "red") +
xlab(expression(paste("Catchment area [Km^2]", sep=""))) +
ylab(expression(paste("Mean flow [m^3/s]", sep="")))
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.