knitr::opts_chunk$set(
  comment = "#>", 
  echo = T, 
  message = F, 
  warning = F
)
library(eeval)

Jakub Rudek
AGH, Wydział Geodezji Górniczej i Inżynierii Środowiska
Geoinformacja III rok

e-mail: rjakub999@gmail.com


Wstęp


Pakiet utworzony w ramach przedmiotu Metody inwentaryzacji i Szacowanie Emisji.
Służy do obliczania emisji zanieczyszczeń generowanych przez pojazdy z silnikami spalinowymi i wyświetlania wyników na wykresach. Funkcje pakietu korzystają z danych dołączonych do pakietu.
Plik źródłowy z surowymi danymi: 1.A.3.b.i-iv Road Transport Appendix 4 Emission Factors 2019.xlsx nie znajduje się w pakiecie. Został on wstępnie przetworzony i zapisany jako ramka danych wskazniki. Ten obiekt jest dołączony do pakietu i stanowi podstawowe dane do dalszych analiz. Do prawiłdowego działania funkcji pakietu nie można zmieniać formatu danych zawartych w obiekcie wskazniki. Dodatkowo do działania pakietu używany jest obiekt input.

Winieta opisuje następujące zagadnienia:
1. Format danych wejściowych przetwarzanych przez funkcje pakietu.
2. Opis funkcji pakietu i możliwości ich wykorzystania.
3. Przygotowanie własnych danych surowych.


Instalacja pakietu


Repozytorium pakietu znajduje się na portalu github. Do jego pobrania i instalacji potrzebny jest pakiet devtools.

if(!require(devtools)) {install.packages("devtools"); require(devtools)}
# instalcja pakietu eeval
devtools::install_github("rjakub999/eeval")
library(eeval)

Poniżej sposób wywołania ogólnych informacji o pakiecie.

help(package = "eeval")

Do pełnego wykorzystania możliwości pakietu zalecane jest załadowanie dodatkowych pakietów.

library(dplyr)
library(magrittr)
library(qpdf)
library(utils)
library(rlang)
library(stats)
library(ggplot2)

1. Dane wejściowe


Ramka danych wskazniki to dane wejściowe do których odwołuje się funkcja eeval_calc(). Dane te są częścią pakietu, ale można też utworzyć własne wskazniki, co zostało opisane w punkcie 3. W obiekcie wskazniki mamy zapisane dane do algorytmu szacowania emisji z podziałem na różne kategorie pojazdów, rodzaj paliwa, technologię silnika, tryb jazdy, normę dopuszczalnej emisji spalin.

Obiekt input to dane wejściowe, które są argumentem funkcji eeval_calc(). Przykładowy input jest dołaczony do pakietu. W punkcie 2 jest opisane, jak utworzyć go samodzielnie. Zawiera następujące dane:
Natężenie ruchu to wygenerowany losowo wektor o zadanej długosci.
Pozostale dane są wybrane z obiektu wskazniki.

Dane zawarte w pakiecie posiadają dokumentację dostępną w systemie pomocy programu RStudio.
Przykłady wywołania dokumentacji do danych pakietu:

?input
?wskazniki
?eeval_wynik

2. Funkcje pakietu


Funkcje pakietu posiadają dokumentację dostępną w systemie pomocy programu RStudio. Maj one też "samokomentujące" się nazwy. W celu zapoznania się ze szczegółami zachęcam do jej przeglądnięcia po zainstalowaniu pakietu. Przykłady wywołania dokumentacji do funkcji pakietu:

?eeval_input
?eeval_calc
?eeval_draw

Uruchomienie funkcji z parametrami domyślnymi pozwala na szybki start.

## ZESTAW PARAMETROW DOMYSLNYCH -----------------------------------
eeval_wynik <- eeval_calc()
glimpse(eeval_wynik)

Funkcja eeval_draw() automatycznie określa rodzaj generowanych wykresów w zależności od typu zmiennej dla osi x:
dla zmiennej typu numeric rysowane są wykresy punktowe z wygładzonymi liniami
dla zmiennej typu character rysowane są wykresy pudełkowe

eeval_draw()

W celu sprawnego zapoznania się z modyfikacją parametrów funkcji pakietu przygotowałem dwa zestawy parametrów, które pokazują cały "workflow" działania z pakietem.

Uwaga: Każde kolejne uruchomiene funkcji eeval_input() powoduje wygenerowanie innego zestawu danych.

``` {r zestaw2, eval = FALSE}

ZESTAW PARAMETROW nr 2 ------------------------------------------

losowanie danych

input2 <- eeval_input(segm = c("Mini","Small","Medium","Large-SUV-Executive"), n_spl = 300)

obliczenia emisji

eeval_wynik2 <- eeval_calc(dane = input2, kategoria = "Passenger Cars", euro = c("Euro 3", "Euro 4", "Euro 5", "Euro 6 up to 2016"), substancja = c("EC", "CO", "NOx"), mode = "")

rysowanie wykresu

eeval_draw(dane = eeval_wynik2, x = .data$Nat, y = .data$Emisja, z = .data$Pollutant, u = .data$Euro.Standard, nrow = 2, max_y = 2000)

Jak widać dla funkcji `eeval_calc()` parametry euro i substancja możemy podawać jako wektory zawierające kilka wybranych z dostępnych wartości. 

W celu samodzielnego wygenerowania ramki danych `input` musimy wykonać sprawdzenie dostpęnych wartości.
Sprawdzenie jakie są dostępne segmenty pojazdów (Segment) w danej kategorii (Category) możemy wykonać posługując się przykładowym kodem:  

```r
wskazniki %>% 
  filter(Category == "Buses") %>% 
  select(Segment) %>% 
  unique()

Jezeli input3 będzie wygenerowany z wektorem segmentu, ktory nie nalezy do danej kategorii pojazdow to zgłosi nam bład. Odpowiada za to przedostatnia linijka kodu w funkcji eeval_calc()

``` {r zestaw3, eval = FALSE}

ZESTAW PARAMETROW nr 3 ----------------------------------------------

losowanie danych

input3 <- eeval_input(segm = c("Urban Buses Midi <=15 t", "Urban Buses Standard 15 - 18 t", "Urban Buses Articulated >18 t", "Coaches Standard <=18 t"), n_spl = 200)

obliczenia emisji

eeval_wynik3 <- eeval_calc(dane = input3, kategoria = "Buses", euro = c("Euro II", "Euro III", "Euro IV", "Euro V"), substancja = c("EC", "CO", "NOx", "NH3"), mode = "")

rysowanie wykresow

eeval_draw(dane = eeval_wynik3, x = .data$Segment, y = .data$Emisja, z = .data$Pollutant, nrow = 2, max_y = 1000)

***
## 3. Własne dane "surowe".
***
Po zaznajomieniu się z działaniem funkcji pakietu, możemy zacząć zabawę z innymi danymi "surowymi".  

Aktualną wersję pliku surowych danych można pobrać ze strony:
[eea dane](https://www.eea.europa.eu/publications/emep-eea-guidebook-2019/part-b-sectoral-guidance-chapters/1-energy/1-a-combustion/road-transport-appendix-4-emission/view)  

Dokumemntacja do tych danych jest zamieszczona na stronie:
[eea opis](https://www.eea.europa.eu/publications/emep-eea-guidebook-2019/part-b-sectoral-guidance-chapters/1-energy/1-a-combustion/1-a-3-b-i/view)  

**Uwaga:** Jeżeli po kliknięciu na link strona nie otwiera się, to trzeba kliknąć prawym klawiszem na linku i otworzyć go w nowym oknie.  

Następnie można samodzielnie utworzyć obiekt `wskazniki`. W tym celu należy użyć następującego kodu:  

``` {r utworz_wskazn, eval = FALSE}
library("openxlsx")
katalog = "c:/sciezka_do_pliku/"
setwd(katalog)
# przykładowa nazwa pliku - należy ustawić własną
plik_xlsx = "1.A.3.b.i-iv Road Transport Appendix 4 Emission Factors 2019.xlsx"
wskazniki <- openxlsx::read.xlsx(xlsxFile = plik_xlsx, sheet = 2)

wskazniki$Mode[is.na(wskazniki$Mode)] <- ""

wskazniki <-wskazniki %>% 
  select(-`EF.[g/km].or.ECF.[MJ/km]`,
         -`Min.Speed.[km/h]`,
         -`Max.Speed.[km/h]`,
         -`Road.Slope`,
         -`Load`)

colnames(wskazniki)[15:17] <- c("Reduction", "Bio", "Procent")

Teraz wystarczy wygenerować własny input funkcją eeval_input() z odpowiednimi parametrami. W dalszej kolejności możemy obliczać emisje i rysować wykresy.


Pożytecznych działań z pakietem!




rjakub999/eeval documentation built on Dec. 31, 2020, 3:06 a.m.