eevalJakub Rudek
AGH, Wydział Geodezji Górniczej i Inżynierii Środowiska
Geoinformacja III rok
e-mail: rjakub999@gmail.com
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.
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.
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)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:
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:
Uruchomienie funkcji z parametrami domyślnymi pozwala na szybki start.
## ZESTAW PARAMETROW DOMYSLNYCH -----------------------------------
eeval_wynik <- eeval_calc()
glimpse(eeval_wynik)#> Rows: 249
#> Columns: 9
#> $ Category <chr> "Passenger Cars", "Passenger Cars", "Passenger Cars",...
#> $ Fuel <chr> "Petrol", "Petrol", "Petrol", "Petrol", "Petrol", "Pe...
#> $ Euro.Standard <chr> "Euro 4", "Euro 4", "Euro 4", "Euro 4", "Euro 4", "Eu...
#> $ Technology <chr> "GDI", "GDI", "GDI", "GDI", "GDI", "GDI", "PFI", "PFI...
#> $ Pollutant <chr> "CO", "CO", "NOx", "NOx", "EC", "EC", "CO", "CO", "NO...
#> $ Mode <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "...
#> $ Segment <chr> "Mini", "Mini", "Mini", "Mini", "Mini", "Mini", "Mini...
#> $ Nat <dbl> 461.5537, 496.5580, 461.5537, 496.5580, 461.5537, 496...
#> $ Emisja <dbl> 100.82312, 108.46957, 20.79996, 22.37743, 736.29406, ...
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
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.
## 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:
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()
## 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)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
Dokumemntacja do tych danych jest zamieszczona na stronie: eea opis
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:
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!