Skip to content
Snippets Groups Projects
Commit 348a16f9 authored by Jean-Marie Lepioufle's avatar Jean-Marie Lepioufle
Browse files

public

parents
No related branches found
No related tags found
No related merge requests found
Package: eea.nilu
Type: Package
Version: 0.0.1
Authors@R: c(person("Jean-Marie", "Lepioufle", , "jml@nilu.no", role=c("aut","cre")))
Title: hackairr
Description: Extracting data from eea.nilu API.
eea.nilu API provides access to air quality timeseries in Europe.
Depends:
R (>= 3.2.3)
Imports:
utils,
httr,
dplyr,
rapiclient
Remotes: git::https://git.nilu.no/rextapi/rapiclient.git
Suggests:
knitr
License: GPL-3
Encoding: UTF-8
VignetteBuilder: knitr
LazyData: false
RoxygenNote: 6.1.1
# Generated by roxygen2: do not edit by hand
export(api)
export(get_short_e1a_data)
export(get_short_e2a_data)
export(get_short_metadata_data)
#' api
#'
#' api
#' @param ... authentication parameters
#' @keywords api
#' @export
#' @examples
#' \dontrun{
#' api()
#' }
api <- function(...){
api_object(...)
}
api_object <- function(...){
name_api <- "eea.nilu"
register_api <- "https://eea-api.nilu.no/"
client_api <- rapiclient::get_api(url = "https://eea-api.nilu.no/swagger/v1/swagger.json",type="swagger")
operations <- rapiclient::get_operations(client_api,...)
object <- local({
register <- function(openURL=TRUE){
if(openURL){
utils::browseURL(register_api)
} else return(register_api)
}
help <- function(name=NULL){
if (!is.null(name)) {
utils::str(operations[name])
} else names(operations)
}
e1a <- function(...) {
res <- operations$e1a(...)
res <- httr::content(res)
return(res)
}
e2a <- function(...) {
res <- operations$e2a(...)
res <- httr::content(res)
return(res)
}
metadata <- function(...) {
res <- operations$metadata(...)
res <- httr::content(res)
return(res)
}
summary <- function(){
print(paste0(name_api," client api"))
}
environment()
})
lockEnvironment(object, TRUE)
structure(object, class=c("api", class(object)))
}
#' get_short_e1a_data
#' get_short_e1a_data
#' @param eeaObj eeaObj
#' @param Pollutant Pollutant
#' @param From From date
#' @param To To date
#' @param Resolution timeResolution
#' @param StationEoi StationEoi
#' @keywords eea.nilu
#' @export
get_short_e1a_data <- function(eeaObj,Pollutant,From,To,Resolution,StationEoi) {
res <- short_e1a_data_init()
for (i in 1:length(Pollutant)){
for (j in 1:length(StationEoi)){
tmp <- eeaObj$e1a(Pollutant=Pollutant[i],
From=From,
To=To,
Resolution=Resolution,
StationEoi=StationEoi[j])
if(!is.null(tmp)) {
nrows <- length(tmp)
for ( k in 1:nrows) {
df <- build_e1a_data_df(tmp=tmp,indice=k)
res <- rbind(res,df)
}
}
}
}
return(res)
}
build_e1a_data_df <- function(tmp,indice){
res <- short_e1a_data_df(tmp=tmp,indice=indice)
return(res)
}
short_e1a_data_init <- function(){
df <- data.frame(from = character(0),
to = character(0),
ID = character(0),
CO_NAME = character(0),
value = numeric(0),
unit = character(0),
timeResolution = character(0),
validity = numeric(0),
verification = numeric(0),
samplingPoint = character(0)
)
return(df)
}
short_e1a_data_df <- function(tmp,indice){
df <- data.frame(from = ifelse(is.null(tmp[[indice]]$fromTime),NA,tmp[[indice]]$fromTime),
to = ifelse(is.null(tmp[[indice]]$toTime),NA,tmp[[indice]]$toTime),
ID = ifelse(is.null(tmp[[indice]]$stationEoi),NA,tmp[[indice]]$stationEoi),
CO_NAME = ifelse(is.null(tmp[[indice]]$pollutant),NA,tmp[[indice]]$pollutant),
value = ifelse(is.null(tmp[[indice]]$value),NA,tmp[[indice]]$value),
unit = ifelse(is.null(tmp[[indice]]$unit),NA,tmp[[indice]]$unit),
timeResolution = ifelse(is.null(tmp[[indice]]$resolution),NA,tmp[[indice]]$resolution),
validity = ifelse(is.null(tmp[[indice]]$validity),NA,tmp[[indice]]$validity),
verification = ifelse(is.null(tmp[[indice]]$verification),NA,tmp[[indice]]$verification),
samplingPoint = ifelse(is.null(tmp[[indice]]$samplingPoint),NA,tmp[[indice]]$samplingPoint))
return(df)
}
#' get_short_e2a_data
#' get_short_e2a_data
#' @param eeaObj eeaObj
#' @param Pollutant Pollutant
#' @param HoursBack HoursBack
#' @param Country Country
#' @param Resolution timeResolution
#' @param StationEoi StationEoi
#' @param SamplingPoint SamplingPoint
#' @keywords eea.nilu
#' @export
get_short_e2a_data <- function(eeaObj,Pollutant,HoursBack,Country=NULL,Resolution,StationEoi,SamplingPoint=NULL) {
res <- short_e2a_data_init()
for (i in 1:length(Pollutant)){
for (j in 1:length(StationEoi)){
tmp <- eeaObj$e2a(Pollutant=Pollutant[i],
HoursBack=HoursBack,
Country=Country,
Resolution=Resolution,
StationEoi=StationEoi[j],
SamplingPoint = SamplingPoint)
if(!is.null(tmp)) {
nrows <- length(tmp)
for ( k in 1:nrows) {
df <- build_e2a_data_df(tmp=tmp,indice=k)
res <- rbind(res,df)
}
}
}
}
return(res)
}
build_e2a_data_df <- function(tmp,indice){
res <- short_e2a_data_df(tmp=tmp,indice=indice)
return(res)
}
short_e2a_data_init <- function(){
df <- data.frame(from = character(0),
to = character(0),
ID = character(0),
CO_NAME = character(0),
value = numeric(0),
unit = character(0),
timeResolution = character(0),
validity = numeric(0),
verification = numeric(0),
samplingPoint = character(0)
)
return(df)
}
short_e2a_data_df <- function(tmp,indice){
df <- data.frame(from = ifelse(is.null(tmp[[indice]]$fromTime),NA,tmp[[indice]]$fromTime),
to = ifelse(is.null(tmp[[indice]]$toTime),NA,tmp[[indice]]$toTime),
ID = ifelse(is.null(tmp[[indice]]$stationEoi),NA,tmp[[indice]]$stationEoi),
CO_NAME = ifelse(is.null(tmp[[indice]]$pollutant),NA,tmp[[indice]]$pollutant),
value = ifelse(is.null(tmp[[indice]]$value),NA,tmp[[indice]]$value),
unit = ifelse(is.null(tmp[[indice]]$unit),NA,tmp[[indice]]$unit),
timeResolution = ifelse(is.null(tmp[[indice]]$resolution),NA,tmp[[indice]]$resolution),
validity = ifelse(is.null(tmp[[indice]]$validity),NA,tmp[[indice]]$validity),
verification = ifelse(is.null(tmp[[indice]]$verification),NA,tmp[[indice]]$verification),
samplingPoint = ifelse(is.null(tmp[[indice]]$samplingPoint),NA,tmp[[indice]]$samplingPoint))
return(df)
}
#' get_short_metadata_data
#' get_short_metadata_data
#' @param eeaObj eeaObj
#' @param StationEoi station ids
#' @param west west
#' @param south south
#' @param east east
#' @param north north
#' @keywords eea.nilu
#' @export
get_short_metadata_data <- function(eeaObj,StationEoi=NULL,west=NULL,south=NULL,east=NULL,north=NULL) {
res <- short_meta_data_init()
if (!is.null(StationEoi)) {
for ( i in 1:length(StationEoi)) {
tmp <- eeaObj$metadata(StationEoi=StationEoi[i])
if(!is.null(tmp)) {
df <- short_meta_data_df(tmp=tmp,indice=1)
res <- rbind(res,df)
}
}
} else if ((!is.null(west)) && (!is.null(south)) && (!is.null(east)) && (!is.null(north))){
#jhlkj
# res <- rbind(res,df)
}
return(res)
}
build_meta_data_df <- function(tmp,indice){
res <- short_meta_data_df(tmp=tmp,indice=indice)
return(res)
}
short_meta_data_init <- function(){
df <- data.frame(namespace = character(0),
country = character(0),
network = character(0),
station = character(0),
stationEoi = character(0),
latitude = character(0),
longitude = character(0),
projection = character(0),
samplingPoint = character(0),
stationType = character(0),
stationArea = character(0),
fromTime = character(0),
toTime = character(0)
)
return(df)
}
short_meta_data_df <- function(tmp,indice){
df <- data.frame(namespace = ifelse(is.null(tmp[[indice]]$namespace),NA,tmp[[indice]]$namespace),
country = ifelse(is.null(tmp[[indice]]$country),NA,tmp[[indice]]$country),
network = ifelse(is.null(tmp[[indice]]$network),NA,tmp[[indice]]$network),
station = ifelse(is.null(tmp[[indice]]$station),NA,tmp[[indice]]$station),
stationEoi = ifelse(is.null(tmp[[indice]]$stationEoi),NA,tmp[[indice]]$stationEoi),
latitude = ifelse(is.null(tmp[[indice]]$latitude),NA,tmp[[indice]]$latitude),
longitude = ifelse(is.null(tmp[[indice]]$longitude),NA,tmp[[indice]]$longitude),
projection = ifelse(is.null(tmp[[indice]]$projection),NA,tmp[[indice]]$projection),
samplingPoint = ifelse(is.null(tmp[[indice]]$samplingPoint),NA,tmp[[indice]]$samplingPoint),
stationType = ifelse(is.null(tmp[[indice]]$stationType),NA,tmp[[indice]]$stationType),
stationArea = ifelse(is.null(tmp[[indice]]$stationArea),NA,tmp[[indice]]$stationArea),
fromTime = ifelse(is.null(tmp[[indice]]$fromTime),NA,tmp[[indice]]$fromTime),
toTime = ifelse(is.null(tmp[[indice]]$toTime),NA,tmp[[indice]]$toTime)
)
return(df)
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/eea.nilu.R
\name{api}
\alias{api}
\title{api}
\usage{
api(...)
}
\arguments{
\item{...}{authentication parameters}
}
\description{
api
}
\examples{
\dontrun{
api()
}
}
\keyword{api}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_data.R
\name{get_short_e1a_data}
\alias{get_short_e1a_data}
\title{get_short_e1a_data
get_short_e1a_data}
\usage{
get_short_e1a_data(eeaObj, Pollutant, From, To, Resolution, StationEoi)
}
\arguments{
\item{eeaObj}{eeaObj}
\item{Pollutant}{Pollutant}
\item{From}{From date}
\item{To}{To date}
\item{Resolution}{timeResolution}
\item{StationEoi}{StationEoi}
}
\description{
get_short_e1a_data
get_short_e1a_data
}
\keyword{eea.nilu}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_data.R
\name{get_short_e2a_data}
\alias{get_short_e2a_data}
\title{get_short_e2a_data
get_short_e2a_data}
\usage{
get_short_e2a_data(eeaObj, Pollutant, HoursBack, Country = NULL,
Resolution, StationEoi, SamplingPoint = NULL)
}
\arguments{
\item{eeaObj}{eeaObj}
\item{Pollutant}{Pollutant}
\item{HoursBack}{HoursBack}
\item{Country}{Country}
\item{Resolution}{timeResolution}
\item{StationEoi}{StationEoi}
\item{SamplingPoint}{SamplingPoint}
}
\description{
get_short_e2a_data
get_short_e2a_data
}
\keyword{eea.nilu}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_meta.R
\name{get_short_metadata_data}
\alias{get_short_metadata_data}
\title{get_short_metadata_data
get_short_metadata_data}
\usage{
get_short_metadata_data(eeaObj, StationEoi = NULL, west = NULL,
south = NULL, east = NULL, north = NULL)
}
\arguments{
\item{eeaObj}{eeaObj}
\item{StationEoi}{station ids}
\item{west}{west}
\item{south}{south}
\item{east}{east}
\item{north}{north}
}
\description{
get_short_metadata_data
get_short_metadata_data
}
\keyword{eea.nilu}
---
title: "core_api"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{core_api}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r setup, include = FALSE}
library(eea.nilu)
knitr::opts_chunk$set(collapse = T, comment = "#>")
```
## Core api
```R
eea <- eea.nilu::api()
eea$e1a(Pollutant="pm10",From="2017-01-1",To="2017-01-02",Resolution="hour",StationEoi="NO0057A")
eea$e2a(Pollutant="pm10",HoursBack="6",Resolution="hour",StationEoi="NO0057A")
eea$metadata(StationEoi="NO0057A")
```
## other functions
```R
eea <- eea.nilu::api()
tmp <- eea.nilu::get_short_e1a_data(eea,Pollutant="pm10",From="2017-01-1",To="2017-01-02",Resolution="hour",StationEoi="NO0057A")
head(tmp)
tmp <- eea.nilu::get_short_e1a_data(eea,Pollutant=c("no2","pm10"),From="2017-01-1",To="2017-01-02",Resolution="hour",StationEoi=c("NO0057A","NO0095A"))
head(tmp)
tail(tmp)
tmp <- eea.nilu::get_short_e2a_data(eea,Pollutant=c("no2","pm10"),HoursBack=6,Resolution="hour",StationEoi=c("NO0057A","NO0095A"))
head(tmp)
tail(tmp)
tmp <- eea.nilu::get_short_metadata_data(eea,StationEoi="NO0057A")
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment