Created
September 28, 2020 18:48
-
-
Save jakeybob/2d9b934677ee3198fb0d726852153534 to your computer and use it in GitHub Desktop.
Glasgow / Scotland air quality trends etc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(openair) | |
library(tidyverse) | |
library(lubridate) | |
#### SETUP #### | |
saqn_meta <- importMeta(source = "SAQN", all = TRUE) # metadata for all the Scottish Air Quality Network sites | |
years <- 1987:2019 # NO2 trend goes back to 1987 for Glasgow City Chambers | |
glasgow_saqn_sites_pm10 <- c("Glasgow Abercromby Street", | |
"Glasgow Anderston", | |
"Glasgow Battlefield Road", | |
"Glasgow Broomhill", | |
"Glasgow Burgher St.", | |
"Glasgow Byres Road", | |
"Glasgow Centre", | |
"Glasgow Dumbarton Road", | |
"Glasgow Kerbside", | |
"Glasgow Nithsdale Road", | |
"Glasgow Townhead", | |
"Glasgow High Street", | |
"Glasgow Waulkmillglen Reservoir") | |
glasgow_saqn_sites_no2 <- c("Glasgow Anderston", | |
"Glasgow Battlefield Road", | |
"Glasgow Burgher St.", | |
"Glasgow Byres Road", | |
"Glasgow Centre", | |
"Glasgow City Chambers", | |
"Glasgow Dumbarton Road", | |
"Glasgow Kerbside", | |
"Glasgow Great Western Road", | |
"Glasgow Waulkmillglen Reservoir") | |
scot_saqn_sites_pm10 <- c("Aberdeen Market Street 2", | |
"Aberdeen Wellington Road", | |
"Aberdeen King Street", | |
"Aberdeen Union Street Roadside", | |
"Aberdeen Errol Place", | |
"Aberdeen Anderson Dr", | |
"Dundee Whitehall Street", | |
"Dundee Seagate", | |
"Dundee Meadowside", | |
"Dundee Lochee Road", | |
"Dundee Broughty Ferry Road", | |
"Dundee Mains Loan", | |
"Edinburgh Queensferry Road", | |
"Edinburgh Salamander St", | |
"Edinburgh Glasgow Road", | |
"Edinburgh St John's Road", | |
"Edinburgh St Leonards", | |
"Edinburgh Currie", | |
"Glasgow Abercromby Street", | |
"Glasgow Dumbarton Road", | |
"Glasgow High Street", | |
"Glasgow Byres Road", | |
"Glasgow Burgher St.", | |
"Glasgow Anderston", | |
"Glasgow Townhead", | |
"Glasgow Waulkmillglen Reservoir") | |
scot_saqn_sites_no2 <- c("Glasgow Kerbside", | |
"Edinburgh Queensferry Road", | |
"Edinburgh Nicolson Street", | |
"Dundee Seagate", | |
"Dundee Lochee Road", | |
"Edinburgh St John's Road", | |
"Aberdeen Wellington Road", | |
"Aberdeen Union Street Roadside", | |
"Dundee Whitehall Street", | |
"Dundee Meadowside", | |
"Glasgow Dumbarton Road", | |
"Glasgow Byres Road", | |
"Aberdeen Market Street 2", | |
"Glasgow High Street", | |
"Glasgow Great Western Road", | |
"Edinburgh Gorgie Road", | |
"Edinburgh Glasgow Road", | |
"Glasgow Burgher St.", | |
"Edinburgh Salamander St", | |
"Glasgow Anderston", | |
"Glasgow Townhead", | |
"Dundee Broughty Ferry Road", | |
"Aberdeen King Street", | |
"Aberdeen Errol Place", | |
"Edinburgh St Leonards", | |
"Aberdeen Anderson Dr", | |
"Dundee Mains Loan", | |
"Glasgow Waulkmillglen Reservoir", | |
"Edinburgh Currie") | |
saqn_lookup <- saqn_meta %>% | |
filter(site %in% c(glasgow_saqn_sites_pm10, scot_saqn_sites_pm10, glasgow_saqn_sites_no2, scot_saqn_sites_no2)) %>% | |
select(site, code) %>% | |
distinct() | |
#### GET DATA #### | |
# download via SAQN API and save | |
df <- importSAQN(site = saqn_lookup$code, | |
year = years, | |
pollutant = "all") %>% | |
mutate(year = year(date)) %>% | |
select(site, code, date, year, `pm2.5`, pm10, no2) | |
write_rds(df, "saqn.rds", compress = "gz") | |
#### OUTPUT PLOTS & DATA #### | |
df <- read_rds("saqn.rds") | |
# Glasgow trends for PM10 | |
df %>% | |
filter(year >= 2000) %>% | |
group_by(site, year) %>% | |
summarise(pm10_av = mean(pm10, na.rm=T)) %>% | |
filter(site %in% glasgow_saqn_sites_pm10) %>% | |
ggplot(aes(x = year, y = pm10_av, colour = site)) + | |
geom_line() + geom_point() + geom_hline(yintercept = 18) | |
# Scottish cities recent year PM10 | |
df %>% | |
filter(year == max(year)) %>% | |
filter(site %in% scot_saqn_sites_pm10) %>% | |
group_by(site) %>% | |
summarise(pm10_av = mean(pm10, na.rm=T)) %>% | |
arrange(pm10_av) %>% | |
mutate(site = factor(site, levels = .$site ) ) %>% | |
ggplot(aes(x = site, y = pm10_av)) + | |
geom_hline(yintercept = 18) + | |
geom_col() + | |
theme(axis.text.x = element_text(angle = -90, hjust = 0)) | |
# Glasgow trends for NO2 | |
df %>% | |
group_by(site, year) %>% | |
summarise(no2_av = mean(no2, na.rm=T)) %>% | |
filter(site %in% glasgow_saqn_sites_no2) %>% | |
ggplot(aes(x = year, y = no2_av, colour = site)) + | |
geom_line() + geom_point() + geom_hline(yintercept = 40) | |
# Scottish cities recent year NO2 | |
df %>% | |
# filter(year == 2018) %>% | |
filter(year == max(year)) %>% | |
filter(site %in% scot_saqn_sites_no2) %>% | |
group_by(site) %>% | |
summarise(no2_av = mean(no2, na.rm=T)) %>% | |
arrange(no2_av) %>% | |
mutate(site = factor(site, levels = .$site ) ) %>% | |
ggplot(aes(x = site, y = no2_av)) + | |
geom_hline(yintercept = 40) + | |
geom_col() + | |
theme(axis.text.x = element_text(angle = -90, hjust = 0)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment