- Notifications
You must be signed in to change notification settings - Fork4
An R package to download Mexico City air quality data
License
diegovalle/aire.zmvm
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Diego Valle-JonesFebruary 09, 2024
| Author: | Diego Valle-Jones |
| License: | BSD_3 |
| Website: | https://hoyodesmog.diegovalle.net/aire.zmvm/ |
Tools for downloading airquality data for the Mexico City metro area.This package can download real-time, daily maximum, minimum, or hourlyaverage data for each of the pollution measuring stations orgeographical zones in the Zona Metropolitana del Valle de México(greater Mexico City). It also includes the locations of all themeasuring stations and a function to perform inverse distance weightingmodified to work with wind direction.
You can always install the development version from GitHub:
if (!require(devtools)) { install.packages("devtools")}devtools::install_github('diegovalle/aire.zmvm')
To install the most recent package version from CRAN type:
install.packages("aire.zmvm")library(aire.zmvm)
Note that the version on CRAN might not reflect the most recent changesmade to this package.
The package core functions:
get_station_dataandget_station_month_datadownload pollution,wind and temperature data for each of the measuring stations in theoriginal units (ppb, µg/m³, etc).get_station_imecadownload pollution values for each station inIMECAsget_zone_imecadownload pollution data in IMECAs for each of the 5geographic zones of Mexico Cityget_latest_imecadownload the latest pollution hourly maximums foreach of the measuring stations.idw360inverse distance weighting modified to work with degrees,useful for wind data
| Function | Date range | Units | Wind, Tmp, RH | Earliest Date | Pollutants | Includes All Stations | Criterion |
|---|---|---|---|---|---|---|---|
| get_station_data | years | Original | Yes | 1986 | SO2, CO, NO2, O3, PM10, PM25, WSP, WDR, TMP, RH | Yes | hourly, daily maximum, daily minimum |
| get_station_month_data | 1 month | Original | Yes | 2005‑01 | SO2, CO, NO2, O3, PM10, PM25, WSP, WDR, TMP, RH | Yes | hourly, daily maximum, daily minimum |
| get_station_imeca | 1 day | IMECA | No | 2009‑01‑01 | SO2, CO, NO2, O3, PM10 | No | hourly |
| get_zone_imeca | 1 or more days | IMECA | No | 2008‑01‑01 | SO2, CO, NO2, O3, PM10 | Only zones | hourly, daily maximum |
| get_latest_imeca | 1 hour | IMECA | No | Latest only | Maximum value of SO2, CO, NO2, O3, PM10 | No | latest hourly |
library("aire.zmvm")library("dplyr")library("ggplot2")library("ggseas")o3<- get_station_data(criterion="MAXIMOS",# Can be one of MAXIMOS (daily maximum),# MINIMOS (daily minimum),# or HORARIOS (hourly average)pollutant="O3",# Can be one of "SO2", "CO", "NOX", "NO2", "NO", "O3",# "PM10", "PM25", "WSP", "WDR", "TMP", "RH"year=2009:2018)# A numeric vector, the earliest year allowed is 1986knitr::kable(head(o3))
| date | station_code | pollutant | unit | value |
|---|---|---|---|---|
| 2009-01-01 | ACO | O3 | ppb | 67 |
| 2009-01-02 | ACO | O3 | ppb | 71 |
| 2009-01-03 | ACO | O3 | ppb | 112 |
| 2009-01-04 | ACO | O3 | ppb | 91 |
| 2009-01-05 | ACO | O3 | ppb | 70 |
| 2009-01-06 | ACO | O3 | ppb | 71 |
# Daily max among all base stationso3_max<-o3 %>% group_by(date) %>% summarise(max= ifelse(all(is.na(value)),NA,base::max(value,na.rm=TRUE))) %>% na.omit()# ozone values at which a contingencia ambiental was declared# and the dates during which they were valid# source: http://www.aire.cdmx.gob.mx/descargas/ultima-hora/calidad-aire/pcaa/pcaa-modificaciones.pdfcontingencia<-data.frame(ppb= c(216,210,205,199,185,155,155),start= c(2009,2009.4973,2010.4973,2011.5795,2012.6052,2016.291,2016.4986),end= c(2009.4973,2010.4945,2011.4945,2012.6025,2016.2883,2016.4959,Inf))max_daily_df<- tsdf(ts(o3_max$max,start= c(2009,1),frequency=365.25))ggplot(max_daily_df, aes(x=x,y=y))+ geom_line(colour="grey75",alpha=.5)+ stat_rollapplyr(width=30,align="right",color="#01C5D2")+#geom_vline(xintercept = 2015 + 183/365) + geom_segment(data=contingencia, aes(x=start,y=ppb,xend=end,yend=ppb),color="darkred",linetype=2)+ xlab("date")+ ylab("parts per billion")+ scale_x_continuous(breaks= c(2010,2012,2014,2016,2018))+ ggtitle("Maximum daily ozone concentration and 30 day rolling average",subtitle= paste0("Red lines indicate the values necessary to","activate a phase I smog alert.","\nData source: SEDEMA"))
About
An R package to download Mexico City air quality data
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
