Commit 2f065467 authored by jml's avatar jml
Browse files

update package

parent f5f09d25
Package: eipar
Type: Package
Version: 0.0.2
Version: 0.0.3
Authors@R: c(person("Jean-Marie", "Lepioufle", , "jml@nilu.no", role=c("aut","cre")))
Title: eipar
Description: Extracting data from the Irish EPA API.
......@@ -10,6 +10,7 @@ Depends:
Imports:
utils,
httr,
dplyr,
rapiclient
Remotes: git::git@git.nilu.no:rextapi/rapiclient.git
Suggests:
......@@ -18,4 +19,4 @@ License: GPL-3
Encoding: UTF-8
VignetteBuilder: knitr
LazyData: false
RoxygenNote: 5.0.1
RoxygenNote: 6.0.1
......@@ -2,3 +2,9 @@
S3method(print,api)
export(api)
export(get_short_aq_data)
export(get_short_aq_fdms)
export(get_short_aq_pollutant)
export(get_short_meta_element)
export(get_short_meta_station)
export(get_short_meta_station_with_element)
......@@ -16,7 +16,8 @@ api <- function(...){
api_object <- function(...){
name_api <- "eipa"
register_api <- "http://www.epa.ie"
client_api <- rapiclient::get_api(url = "https://air-tst.epa.ie/api-docs",type="swagger")
#client_api <- rapiclient::get_api(url = "https://air-tst.epa.ie/api-docs",type="swagger") <- to be corrected
client_api <- rapiclient::get_api(url = paste0(.libPaths()[1],"/eipar/doc/swagger_jml.json"),type="swagger")
operations <- rapiclient::get_operations(client_api,...)
......@@ -34,14 +35,14 @@ api_object <- function(...){
} else names(operations)
}
Retrieves_one_or_more_aq_measurements <- function(...) {
res <- operations$Retrieves_one_or_more_aq_measurements(...)
get_aq_measurements <- function(...) {
res <- operations$get_aq_measurements(...)
res <- httr::content(res)
return(res)
}
Retrieves_a_Aq_measurement_document<- function(...) {
res <- operations$Retrieves_a_Aq_measurement_document(...)
get_a_aq_measurements_doc<- function(...) {
res <- operations$get_a_aq_measurements_doc(...)
res <- httr::content(res)
return(res)
}
......
#' get_short_aq_pollutant
#' get_short_aq_pollutant
#' @param eipaObj eipaObj
#' @param stations station ids
#' @param referencetimeFrom referencetimeFrom
#' @param referencetimeTo referencetimeTo
#' @param elements elements
#' @keywords frostr
#' @export
get_short_aq_pollutant <- function(eipaObj,stations,referencetimeFrom,referencetimeTo,elements) {
res <- get_short_aq_data(eipaObj=eipaObj,stations=stations,referencetimeFrom=referencetimeFrom,referencetimeTo=referencetimeTo,elements=elements,measuretype="Pollutant")
return(res)
}
#' get_short_aq_fdms
#' get_short_aq_fdms
#' @param eipaObj eipaObj
#' @param stations station ids
#' @param referencetimeFrom referencetimeFrom
#' @param referencetimeTo referencetimeTo
#' @param elements elements
#' @keywords frostr
#' @export
get_short_aq_fdms <- function(eipaObj,stations,referencetimeFrom,referencetimeTo,elements) {
res <- get_short_aq_data(eipaObj=eipaObj,stations=stations,referencetimeFrom=referencetimeFrom,referencetimeTo=referencetimeTo,elements=elements,measuretype="FDMS")
return(res)
}
#' get_short_aq_data
#' get_short_aq_data
#' @param eipaObj eipaObj
#' @param stations station ids
#' @param referencetimeFrom referencetimeFrom
#' @param referencetimeTo referencetimeTo
#' @param elements elements
#' @param measuretype measuretype
#' @keywords frostr
#' @export
get_short_aq_data <- function(eipaObj,stations,referencetimeFrom,referencetimeTo,elements,measuretype) {
req <- ""
if (length(stations) > 0) {
tmp_req <- paste("rawreadingid",stations,sep="==",collapse=" or ")
req <- paste0(req,tmp_req," and ")
} else stop("stations of length higher or equal than 1 required")
if (length(referencetimeFrom) == 1) {
tmp_req <- paste("raw_reading_measurement_time",referencetimeFrom,sep=">=")
req <- paste0(req,tmp_req," and ")
} else stop("referencetimeFrom of length equal to 1 required")
if (length(referencetimeTo) == 1) {
tmp_req <- paste("raw_reading_measurement_time",referencetimeTo,sep="<=")
req <- paste0(req,tmp_req," and ")
} else stop("referencetimeTo of length equal to 1 required")
if (length(elements) > 0) {
tmp_req <- paste("pollutantname",elements,sep="==",collapse=" or ")
req <- paste0(req,tmp_req," and ")
} else stop("elements of length higher or equal than 1 required")
if (length(measuretype) > 0) {
tmp_req <- paste("measurementtype",measuretype,sep="==",collapse=" or ")
req <- paste0(req,tmp_req)
} else stop("elements of length higher or equal than 1 required")
print(req)
tmp <- eipaObj$get_aq_measurements(where=req)
if (names(tmp)[1]=="_items") {
if (tmp$`_meta`$total>0){
if (tmp$`_meta`$total>=tmp$`_meta`$max_results){
nrows <- tmp$`_meta`$max_results
} else if (tmp$`_meta`$total<tmp$`_meta`$max_results){
nrows <- tmp$`_meta`$total
}
res <- short_data_init()
for ( i in 1:nrows) {
df <- short_data_df(tmp=tmp,indice=i)
res <- rbind(res,df)
}
} else {
res <- short_data_init()
}
} else if (names(tmp)[2]=="_error") {
res <- short_data_init()
} else {
res <- short_data_init()
}
return(res)
}
short_data_init <- function(){
df <- data.frame(date = character(0),
ID = character(0),
CO_NAME = character(0),
value = numeric(0),
unit = character(0),
name = character(0),
type = character(0)
)
return(df)
}
short_data_df <- function(tmp,indice){
print(tmp$`_items`[[indice]]$raw_reading_measurement_time)
df <- data.frame(date = ifelse(is.null(tmp$`_items`[[indice]]$raw_reading_measurement_time),NA,tmp$`_items`[[indice]]$raw_reading_measurement_time),
ID = ifelse(is.null(tmp$`_items`[[indice]]$rawreadingid),NA,tmp$`_items`[[indice]]$rawreadingid),
CO_NAME = ifelse(is.null(tmp$`_items`[[indice]]$pollutantname),NA,tmp$`_items`[[indice]]$pollutantname),
value = ifelse(is.null(tmp$`_items`[[indice]]$rawdatavalue),NA,tmp$`_items`[[indice]]$rawdatavalue),
unit = ifelse(is.null(tmp$`_items`[[indice]]$measurementunit),NA,tmp$`_items`[[indice]]$measurementunit),
name = ifelse(is.null(tmp$`_items`[[indice]]$samplingpoint),NA,tmp$`_items`[[indice]]$samplingpoint),
type = ifelse(is.null(tmp$`_items`[[indice]]$measurementtype),NA,tmp$`_items`[[indice]]$measurementtype)
)
return(df)
}
#' get_short_meta_element
#' get_short_meta_element
#' @param eipaObj eipaObj
#' @param elements elements ids
#' @keywords eipaObj
#' @export
get_short_meta_element <- function(eipaObj,elements) {
if (length(elements)>0) {
res <- data.frame(ID = factor(0),CO_NAME=factor(0))
for ( i in 1:length(elements)) {
tmp <- get_meta_temporary(elements=elements[i])
df <- data.frame(ID = tmp[,"ID"],CO_NAME = tmp[,"CO_NAME"])
res <- rbind(res,df)
}
} else {
res <- data.frame(ID = factor(0),CO_NAME=factor(0))
}
return(unique(res))
}
#' get_short_meta_station
#' get_short_meta_station
#' @param eipaObj eipaObj
#' @param stations station ids
#' @param west west
#' @param south south
#' @param east east
#' @param north north
#' @keywords eipaObj
#' @export
get_short_meta_station <- function(eipaObj,stations=NULL,west=NULL,south=NULL,east=NULL,north=NULL) {
if (!is.null(stations)) {
res <- data.frame(ID = factor(0),LAT= numeric(0), LON= numeric(0), LOCATION = factor(0), NAME = factor(0), MONITORING = factor(0),REALTIME = factor(0))
for ( i in 1:length(stations)) {
tmp <- get_meta_temporary(stations=stations[i])
df <- unique(tmp[,c("ID","LAT","LON","LOCATION","NAME","MONITORING","REALTIME")])
res <- rbind(res,df)
}
} else if ((!is.null(west)) && (!is.null(south)) && (!is.null(east)) && (!is.null(north))){
tmp <- get_meta_temporary(west=west,south=south,east=east,north=north)
df <- unique(tmp[,c("ID","LAT","LON","LOCATION","NAME","MONITORING","REALTIME")])
res <- rbind(res,df)
} else {
res <- data.frame(ID = factor(0),LAT= numeric(0), LON= numeric(0), LOCATION = factor(0), NAME = factor(0), MONITORING = factor(0),REALTIME = factor(0))
}
return(res)
}
#' get_short_meta_station_with_element
#' get_short_meta_station_with_element
#' @param eipaObj eipaObj
#' @param stations station ids
#' @param west west
#' @param south south
#' @param east east
#' @param north north
#' @param elements elements
#' @keywords eipaObj
#' @export
get_short_meta_station_with_element <- function(eipaObj,stations=NULL,west=NULL,south=NULL,east=NULL,north=NULL,elements) {
ele_meta <- get_short_meta_element(eipaObj=eipaObj,elements=elements)
stn_meta <- get_short_meta_station(eipaObj=eipaObj,stations=stations,west=west,south=south,east=east,north=north)
if (!is.null(ele_meta) && !is.null(stn_meta)) {
res <- dplyr::inner_join(stn_meta,ele_meta)
} else {
res <- data.frame(ID = factor(0),LAT= numeric(0), LON= numeric(0), LOCATION = factor(0), NAME = factor(0), MONITORING = factor(0),REALTIME = factor(0), CO_NAME=factor(0))
}
return(res)
}
# temporary function in order to get metadata information about air quality stations
get_meta_temporary <-function(stations=NULL,west=NULL,south=NULL,east=NULL,north=NULL,elements=NULL){
env <- environment()
load(normalizePath(file.path(.libPaths()[1],"eipar","data","unofficial.rda"),mustWork=TRUE))
res <- get("unofficial",envir=env)
if (!is.null(stations)) {
res <- res[which(res$ID==stations[1]),]
} else if (!is.null(west) & !is.null(south) & !is.null(east) & !is.null(north)) {
res <- res[which(res$LAT>=south & res$LAT<=north & res$LON>=west & res$LON<=east),]
}
if (!is.null(elements)) {
res <- res[which(res$CO_NAME==elements[1]),]
}
return(res)
}
#' Unofficial metadata
#'
#' Unofficial provides unofficial metadata about air quality stations
#' Information has to be checked.
#'
#' @docType data
#' @name unofficial
#' @format A rda file
#' @keywords eipar
#' @references Environmental Protection Agency
#' @source https://gis.epa.ie/EPAMaps/default
NULL
......@@ -6,7 +6,7 @@ Extracting air quality timeseries from the [Irish Environmental Protection Agenc
The irish EPA API provides free access to Irish air quality timeseries.
The package is developed continuously with the development of the server API.
The package is in continuous development according to the development of the server API.
The package is working but might change at any time.
......@@ -20,22 +20,28 @@ devtools::install_git("git@git.nilu.no:rextapi/eipar.git")
## Usage
```R
eipar <- eipar::api()
#get an id/ ask EPA's IT
eipar$register()
# get username/password
user <- "your_id"
pswd <- "your_paswd"
eipar <- eipar::api(httpauth = 1,userpwd=paste0(user,":",pswd))
#get an id
eipar$register()
# get some help
eipar$help()
# observations
eipar$help("Retrieves_one_or_more_aq_measurements")
res <- eipar$Retrieves_one_or_more_aq_measurements()
# get_aq_measurements
eipar$help("get_aq_measurements")
res <- eipar$get_aq_measurements()
res <- eipar$get_aq_measurements(where="rawreadingid==644")
res <- eipar$get_aq_measurements(where="measurementunit==ppm")
res <- eipar$get_aq_measurements(where="measurementtype==Pollutant")
res <- eipar$get_aq_measurements(where="pollutantname==NO2")
res <- eipar$get_aq_measurements(where="pollutantname!=NO2")
res <- eipar$get_aq_measurements(where="measurementunit==ppm and rawdatavalue==0.9")
More examples in vignettes
# code table
eipar$help("Retrieves_a_Aq_measurement_document")
res <- eipar$Retrieves_a_Aq_measurement_document(aq_measurementId=2)
```
ID,LOCATION,NAME,LAT,LON,MONITORING,REALTIME,COVERAGE,CO_NAME
CE1,Clare,Ennis,52.842,-8.988,TRUE,TRUE,suburban,PM10
CE1,Clare,Ennis,52.842,-8.988,TRUE,TRUE,suburban,PM25
CE1,Clare,Ennis,52.842,-8.988,TRUE,TRUE,suburban,SO2
CE2,Clare,Shannon town,52.707,-8.869,FALSE,FALSE,suburban,PM10
CE2,Clare,Shannon town,52.707,-8.869,FALSE,FALSE,suburban,CO
CE2,Clare,Shannon town,52.707,-8.869,FALSE,FALSE,suburban,SO2
CE2,Clare,Shannon town,52.707,-8.869,FALSE,FALSE,suburban,C6H6
CE2,Clare,Shannon town,52.707,-8.869,FALSE,FALSE,suburban,NOX
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,PM10
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,CO
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,SO2
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,NOX
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,C6H6
CK1,Cork,Blackpool,51.908,-8.474,FALSE,FALSE,suburban,Pb
CK2,Cork,Glashaboy,51.914,-8.383,FALSE,FALSE,rural,O3
CK2,Cork,Glashaboy,51.914,-8.383,FALSE,FALSE,rural,NOX
CK3,Cork,Heatherton Park,51.881,-8.456,TRUE,TRUE,suburban,PM10
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,O3
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,PM10
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,SO2
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,NOX
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,CO
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,PM25
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,C6H6
CK4,Cork,South Link Road,51.877,-8.465,TRUE,TRUE,suburban,Pb
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,O3
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,PM10
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,SO2
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,NOX
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,CO
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,PM25
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,C6H6
CK5,Cork,City Centre,51.878,-8.464,FALSE,FALSE,urban,Pb
Ck6,Cork,Bishopstown CIT,51.882,-8.532,TRUE,TRUE,suburban,SO2
Ck6,Cork,Bishopstown CIT,51.882,-8.532,TRUE,TRUE,suburban,CO
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,PM10
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,NOX
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,SO2
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,CO
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,Pb
CW1,Carlow,Carlow Town,52.836,-6.951,FALSE,FALSE,suburban,C6H6
D1,Dublin,Ballyfermot,53.340,-6.354,TRUE,FALSE,suburban,PM10
D1,Dublin,Ballyfermot,53.340,-6.354,TRUE,FALSE,suburban,SO2
D1,Dublin,Ballyfermot,53.340,-6.354,TRUE,FALSE,suburban,NOX
D10,Dublin,Pottery Road,53.267,-6.150,FALSE,FALSE,suburban,NOX
D11,Dublin,Blanchardstown,53.385,6.368,TRUE,TRUE,urban,O3
D11,Dublin,Blanchardstown,53.385,6.368,TRUE,TRUE,urban,NOX
D11,Dublin,Blanchardstown,53.385,6.368,TRUE,TRUE,urban,PM10
D11,Dublin,Blanchardstown,53.385,6.368,TRUE,TRUE,urban,SO2
D12,Dublin,Knocklyon,53.284,-6.317,FALSE,FALSE,urban,SO2
D12,Dublin,Knocklyon,53.284,-6.317,FALSE,FALSE,urban,NOX
D12,Dublin,Knocklyon,53.284,-6.317,FALSE,FALSE,urban,CO
D12,Dublin,Knocklyon,53.284,-6.317,FALSE,FALSE,urban,C6H6
D12,Dublin,Knocklyon,53.284,-6.317,FALSE,FALSE,urban,Pb
D13,Dublin,Dùn Laoghaire,53.285,-6.131,TRUE,TRUE,urban,NOX
D14,Dublin,Clonskeagh,53.321,-6.266,TRUE,TRUE,urban,O3
D15,Dublin,Tallaght,53.279,-6.358,TRUE,TRUE,urban,O3
D15,Dublin,Tallaght,53.279,-6.358,TRUE,TRUE,urban,SO2
D15,Dublin,Tallaght,53.279,-6.358,TRUE,TRUE,urban,NOX
D16,Dublin,Ringsend,53.339,-6.213,TRUE,TRUE,urban,PM10
D16,Dublin,Ringsend,53.339,-6.213,TRUE,TRUE,urban,NOX
D16,Dublin,Ringsend,53.339,-6.213,TRUE,TRUE,urban,SO2
D16,Dublin,Ringsend,53.339,-6.213,TRUE,TRUE,urban,CO
D16,Dublin,Ringsend,53.339,-6.213,TRUE,TRUE,urban,ME
D17,Dublin,Rosemount,53.304,-6.231,TRUE,FALSE,suburban,ME
D18,Dublin,Swords,53.461,-6.221,TRUE,TRUE,suburban background,NOX
D18,Dublin,Swords,53.461,-6.221,TRUE,TRUE,suburban background,O3
D19,Dublin,St. Annes,53.372,-6.180,FALSE,FALSE,suburban,PM10
D2,Dublin,Coleraine Street,53.351,-6.275,FALSE,FALSE,urban,PM10
D2,Dublin,Coleraine Street,53.351,-6.275,FALSE,FALSE,urban,SO2
D2,Dublin,Coleraine Street,53.351,-6.275,FALSE,FALSE,urban,NOX
D2,Dublin,Coleraine Street,53.351,-6.275,FALSE,FALSE,urban,O3
D20,Dublin,Davitt Road,53.334,-6.307,FALSE,FALSE,suburban,NOX
D22,Dublin,Finglas,53.391,-6.298,TRUE,FALSE,suburban,PM10
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,PM10
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,CO
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,SO2
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,NOX
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,C6H6
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,Pb
D3,Dublin,Crumlin,53.318,-6.316,FALSE,FALSE,suburban,O3
D4,Dublin,Marino,53.365,-6.224,TRUE,FALSE,suburban,PM10
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,PM10
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,CO
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,SO2
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,NOX
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,C6H6
D6,Dublin,Pearse Street,53.343,-6.249,FALSE,FALSE,urban,Pb
D7,Dublin,Phoenix Park,53.362,-6.346,TRUE,FALSE,suburban,PM10
D8,Dublin,Rathmines,53.320,-6.266,TRUE,TRUE,suburban,O3
D8,Dublin,Rathmines,53.320,-6.266,TRUE,TRUE,suburban,PM10
D8,Dublin,Rathmines,53.320,-6.266,TRUE,TRUE,suburban,SO2
D8,Dublin,Rathmines,53.320,-6.266,TRUE,TRUE,suburban,C6H6
D8,Dublin,Rathmines,53.320,-6.266,TRUE,TRUE,suburban,Pb
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,PM10
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,CO
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,SO2
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,NOX
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,C6H6
D9,Dublin,Winetavern Street,53.342,-6.271,TRUE,TRUE,urban,Pb
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,PM10
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,CO
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,SO2
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,NOX
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,C6H6
DL1,Donegal,Letterkenny,54.958,-7.738,FALSE,FALSE,suburban,Pb
GY1,Galway,Bodkin Roundabout,53.281,-9.049,TRUE,FALSE,suburban,PM10
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,PM10
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,CO
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,SO2
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,NOX
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,C6H6
GY2,Galway,Galway,53.276,-9.048,FALSE,FALSE,suburban,Pb
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,PM10
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,CO
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,SO2
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,NOX
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,C6H6
KE2,Kildare,Naas,53.219,6.661,FALSE,FALSE,suburban,Pb
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,PM10
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,CO
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,SO2
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,NOX
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,C6H6
KE3,Kildare,Newbridge,53.172,-6.795,FALSE,FALSE,suburban,Pb
KE4,Kildare,Celbridge,53.336,-6.547,FALSE,FALSE,suburban,PM10
KE4,Kildare,Celbridge,53.336,-6.547,FALSE,FALSE,suburban,CO
KE4,Kildare,Celbridge,53.336,-6.547,FALSE,FALSE,suburban,SO2
KE4,Kildare,Celbridge,53.336,-6.547,FALSE,FALSE,suburban,NOX
KE4,Kildare,Celbridge,53.336,-6.547,FALSE,FALSE,suburban,C6H6
KK1,Kilkenny,Kilkenny Butt's Green,52.655,-7.260,FALSE,FALSE,suburban,O3
KK2,Kilkenny,Kilkenny Gaol Road,52.649,-7.259,FALSE,FALSE,suburban,PM10
KK2,Kilkenny,Kilkenny Gaol Road,52.649,-7.259,FALSE,FALSE,suburban,O3
KK2,Kilkenny,Kilkenny Gaol Road,52.649,-7.259,FALSE,FALSE,suburban,SO2
KK2,Kilkenny,Kilkenny Gaol Road,52.649,-7.259,FALSE,FALSE,suburban,NOX
KK2,Kilkenny,Kilkenny Gaol Road,52.649,-7.259,FALSE,FALSE,suburban,Pb
KK3,Kilkenny,Seville Lodge,52.638,-7.267,TRUE,TRUE,suburban background,O3
KK3,Kilkenny,Seville Lodge,52.638,-7.267,TRUE,TRUE,suburban background,NOX
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,PM10
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,CO
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,SO2
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,NOX
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,C6H6
KY1,Kerry,Tralee,52.270,-9.689,FALSE,FALSE,suburban,Pb
KY2,Kerry,Valentia,51.938,-10.240,TRUE,TRUE,rural,O3
LD1,Longford,Longford,53.725,-7.791,TRUE,TRUE,suburban traffic,PM25
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,PM10
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,CO
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,SO2
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,NOX
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,C6H6
LH1,Louth,Drogheda,53.716,-6.354,FALSE,FALSE,suburban,Pb
LH2,Louth,Drogheda - North,53.731,-6.319,FALSE,FALSE,rural,PM10
LH3,Louth,Dundalk,54.002,-6.392,TRUE,TRUE,suburban,CO
LH3,Louth,Dundalk,54.002,-6.392,TRUE,TRUE,suburban,SO2
LH3,Louth,Dundalk,54.002,-6.392,TRUE,TRUE,suburban,NOX
LH3,Louth,Dundalk,54.002,-6.392,TRUE,TRUE,suburban,C6H6
LH3,Louth,Dundalk,54.002,-6.392,TRUE,TRUE,suburban,Pb
LK1,Limerick,Shannon Estuary,52.639,-8.954,TRUE,TRUE,rural industrial,SO2
LK2,Limerick,Park Road,52.667,-8.606,FALSE,FALSE,suburban,O3
LK2,Limerick,Park Road,52.667,-8.606,FALSE,FALSE,suburban,NOX
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,PM10
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,CO
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,SO2
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,NOX
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,C6H6
LK3,Limerick,Limerick City,52.661,-8.619,FALSE,FALSE,suburban,Pb
LS1,Laois,Emo Court,53.106,-7.196,TRUE,TRUE,rural,O3
LS1,Laois,Emo Court,53.106,-7.196,TRUE,TRUE,rural,C6H6
LS2,Laois,Portlaoise,53.036,-7.288,TRUE,TRUE,suburban,PM10
LS2,Laois,Portlaoise,53.036,-7.288,TRUE,TRUE,suburban,NOX
LS2,Laois,Portlaoise,53.036,-7.288,TRUE,TRUE,suburban,SO2
LS2,Laois,Portlaoise,53.036,-7.288,TRUE,TRUE,suburban,CO
LS2,Laois,Portlaoise,53.036,-7.288,TRUE,TRUE,suburban,C6H6
LS3,Laois,Ridge of Capard,53.111,-7.452,FALSE,FALSE,rural,O3
MH1,Meath,Kiltrough,53.692,-6.315,FALSE,FALSE,rural,PM10
MH2,Meath,Navan,53.653,-6.694,FALSE,FALSE,suburban,PM10
MH2,Meath,Navan,53.653,-6.694,FALSE,FALSE,suburban,NOX
MH2,Meath,Navan,53.653,-6.694,FALSE,FALSE,suburban,SO2
MH2,Meath,Navan,53.653,-6.694,FALSE,FALSE,suburban,CO
MH2,Meath,Navan,53.653,-6.694,FALSE,FALSE,suburban,ME
MN1,Monaghan,Kilkitt,54.072,-6.885,TRUE,TRUE,rural,PM10
MN1,Monaghan,Kilkitt,54.072,-6.885,TRUE,TRUE,rural,SO2
MO1,Mayo,Castlebar,53.851,-9.299,TRUE,TRUE,suburban,PM10
MO1,Mayo,Castlebar,53.851,-9.299,TRUE,TRUE,suburban,O3
MO2,Mayo,Claremorris,53.687,9.012,TRUE,TRUE,rural,??
OY1,Offaly,Ferbane,53.269,-7.834,FALSE,FALSE,suburban,PM10
OY1,Offaly,Ferbane,53.269,-7.834,FALSE,FALSE,suburban,CO
OY1,Offaly,Ferbane,53.269,-7.834,FALSE,FALSE,suburban,SO2
OY1,Offaly,Ferbane,53.269,-7.834,FALSE,FALSE,suburban,NOX
OY1,Offaly,Ferbane,53.269,-7.834,FALSE,FALSE,suburban,Pb
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,PM10
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,CO
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,SO2
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,NOX
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,C6H6
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,Pb
TY1,Tipperary,Clonmel,52.356,-7.695,FALSE,FALSE,suburban,O3
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,PM10
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,CO
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,SO2
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,NOX
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,C6H6
WD1,Waterford,Waterford Bolton Street,52.259,-7.105,FALSE,FALSE,suburban,Pb
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,CO
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,SO2
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,NOX
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,PM10
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,C6H6
WD2,Waterford,Waterford The Mall,52.259,-7.106,FALSE,FALSE,suburban,Pb
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,PM10
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,CO
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,SO2
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,NOX
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,C6H6
WH2,Westmeath,Athlone,53.428,-7.946,FALSE,FALSE,suburban,Pb
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,PM10
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,CO
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,SO2
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,NOX
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,C6H6
WH3,Westmeath,Mullingar,53.524,-7.340,FALSE,FALSE,suburban,Pb
WH4,Westmeath,Mullingar Clonmore,53.516,-7.351,FALSE,FALSE,suburban,PM10
WH4,Westmeath,Mullingar Clonmore,53.516,-7.351,FALSE,FALSE,suburban,CO
WH4,Westmeath,Mullingar Clonmore,53.516,-7.351,FALSE,FALSE,suburban,SO2
WH4,Westmeath,Mullingar Clonmore,53.516,-7.351,FALSE,FALSE,suburban,NOX
WH4,Westmeath,Mullingar Clonmore,53.516,-7.351,FALSE,FALSE,suburban,C6H6
WW1,Wicklow,Bray,52.913,-6.224,TRUE,TRUE,rural,O3
WX1,Wexford,Carnsore Point,52.177,-6.368,FALSE,FALSE,rural,PM10
WX2,Wexford,Johnstown Castle,52.296,-6.502,FALSE,FALSE,rural,O3
WX3,Wexford,Enniscorthy,52.500,-6.570,TRUE,TRUE,suburban,PM10
WX3,Wexford,Enniscorthy,52.500,-6.570,TRUE,TRUE,suburban,CO
WX3,Wexford,Enniscorthy,52.500,-6.570,TRUE,TRUE,suburban,SO2
WX3,Wexford,Enniscorthy,52.500,-6.570,TRUE,TRUE,suburban,NOX
{
"swagger": "2.0",
"info": {
"title": "Air Quality Open Data API",
"description": "Air Quality Open Data API",
"termsOfService": "terms.html",
"contact": {
"url": "http://www.epa.ie",
"name": "EPA"
},
"license": {
"url": "https://creativecommons.org/licenses/by/4.0/",
"name": "Creative Commons Attribution 4.0 International License (CC BY 4.0)"
},
"version": "1.0"
},
"host": "air-tst.epa.ie",
"basePath": "/api/v1",
"tags" : [ {
"name" : "Aq_measurement"
}],
"schemes": [
"http"
],
"consumes": [
"application/json"
],