gtfs2emis is an R package to estimate the emission levels of public transport vehicles based on General Transit Feed Specification (GTFS) data. The package requires two main inputs: i) public transport data in GTFS standard format; and ii) some basic information on fleet characteristics such as vehicle age, technology, fuel, and Euro stage. As it stands, the package estimates several pollutants (see table below) at high spatial and temporal resolutions. Pollution levels can be calculated for specific transport routes, trips, time of the day, or for the transport system as a whole. The output with emission estimates can be extracted in different formats, supporting analysis of how emission levels vary across space, time, and by fleet characteristics. A full description of the methods used in the gtfs2emis model is presented in Vieira, Pereira and Andrade (2022).
You can install gtfs2emis
:
# From CRAN
install.packages("gtfs2emis")
library(gtfs2emis)
# or use the development version with latest features
::remove.packages('gtfs2emis')
utils::install_github("ipeaGIT/gtfs2emis")
devtoolslibrary(gtfs2emis)
The gtfs2emis
package has two core functions.
transport_model()
converts GTFS data into a GPS-like
table with the space-time positions and speeds of public transport
vehicles. The only input required is a GTFS.zip
feed.
emission_model()
estimates hot-exhaust emissions
based on four inputs:
transport_model()
;data.frame
with info on fleet characteristics;string
indicating which emission factor model should
be considered;string
indicating which pollutants should be
estimated.To help users analyze the output from emission_model()
,
the gtfs2emis
package has few functions:
emis_to_dt()
to convert the output of
emission_model()
from list
to
data.table
.emis_summary()
to aggregate emission estimates by the
time of the day, vehicle type, or road segment.emis_grid()
to spatially aggregate emission estimates
using any custom spatial grid or polygons.To illustrate functionality, the package includes small sample data
sets of the public transport and fleet of Curitiba (Brazil), Detroit
(USA), and Dublin (Ireland). Estimating the emissions of a given public
transport system using gtfs2emis
can be done in three
simple steps, as follows.
The first step is to use the transport_model()
function
to convert GTFS data into a GPS-like table, so that we can get the
space-time position and speed of each vehicle of the public transport
system at high spatial and temporal resolutions.
# read GTFS.zip
<- system.file("extdata/irl_dub_gtfs.zip", package = "gtfs2emis")
gtfs_file <- gtfstools::read_gtfs(gtfs_file)
gtfs
# generate transport model
<- transport_model(gtfs_data = gtfs,spatial_resolution = 100,parallel = TRUE) tp_model
The second step is to prepare a data.frame
with some
characteristics of the public transport fleet. Note that different
emission factor models may require information on different fleet
characteristics, such as vehicle age, type, Euro standard, technology,
and fuel. This can be either: - A simple table with the overall
composition of the fleet. In this case, the gtfs2emis
will
assume that fleet is homogeneously distributed across all routes; OR - A
detailed table that (1) brings info on the characteristics of each
vehicle and, (2) tells the probability with which each vehicle type is
allocated to each transport route.
Here is what a simple fleet table to be used with the EMEP-EEA emission factor model looks like:
<- system.file("extdata/irl_dub_fleet.txt", package = "gtfs2emis")
fleet_file
<- read.csv(fleet_file)
fleet_df
fleet_df#> veh_type euro fuel N fleet_composition tech
#> 1 Ubus Std 15 - 18 t III D 10 0.00998004 -
#> 2 Ubus Std 15 - 18 t IV D 296 0.29540918 SCR
#> 3 Ubus Std 15 - 18 t V D 148 0.14770459 SCR
#> 4 Ubus Std 15 - 18 t VI D 548 0.54690619 DPF+SCR
In the final step, the emission_model()
function to
estimate hot exhaust emissions of our public transport system. Here, the
user needs to pass the results from transport_model()
, some
fleet data as described above, and select which emission factor model
and pollutants should be considered (see the options available below).
The output from emission_model()
is a list
with several vectors
and data.frames
with
emission estimates and related information such as vehicle variables
(fuel
, age
, tech
,
euro
, fleet_composition
), travel variables
(slope
, load
, gps
) or pollution
(EF
, emi
).
<- emission_model(tp_model = tp_model
emi_list ef_model = "ef_europe_emep"
, fleet_data = fleet_df
, pollutant = c("NOx","PM10")
,
)
names(emi_list)
#> [1] "pollutant" "veh_type" "euro"
#> [4] "fuel" "tech" "slope"
#> [7] "load" "speed" "EF"
#> [10] "emi" "fleet_composition" "tp_model"
Currently, the gtfs2emis
package provides a
computational method to estimate running exhaust emissions factors based
on the following emission factor models:
Source | Pollutants |
---|---|
CETESB | CH4, CO, CO2, ETOH, FC (Fuel Consumption), FS (Fuel Sales), gCO2/KWH, gD/KWH, HC, KML, N2O, NH3, NMHC, NO, NO2, NOx, PM10 and RCHO |
EMFAC2017/CARB | CH4, CO, CO2, N2O, NOx, PM10, PM25, ROG (Reactive Organic Gases), SOX, and TOG (Total Organic Gases) |
EMEP/EEA | CH4, CO, CO2, EC, FC, N2O, NH3, NOx, PM10, SPN23 (#kWh), and VOC |
MOVES3/EPA | CH4, CO, CO2, EC, HONO, N2O, NH3, NH4, NO, NO2, NO3, NOx, PM10, PM25, SO2, THC, TOG, and VOC |
Source | Buses | Characteristics |
---|---|---|
CETESB | Micro, Standard, Articulated | Age, Fuel, EURO standard |
EMEP/EAA | Micro, Standard, Articulated | Fuel, EURO standard, technology, load, slope |
EMFAC2017/CARB | Urban Buses | Age, Fuel |
MOVES3/EPA | Urban Buses | Age, Fuel |
gtfs2emis
also provides emissions estimates from tire,
brake and surface wear using the EMEP/EEA
model. The function estimates emissions of particulate matter (PM),
encompassing black carbon (BC), which arises from distinct sources
(tire, brake, and road surface wear). The focus is on primary particles,
which refer to those that are directly emitted, rather than those
generated from the re-suspension of previously deposited material.
Check out the guides for learning everything there is to know about all the different features:
There are several others transport emissions models available for
different purposes (see below). As of today, gtfs2emis
is
the only method with the capability to estimate emissions of public
transport systems using GTFS data.
citation("gtfs2emis")
#> To cite gtfs2emis in publications use:
#>
#> Vieira, J. P. B., Pereira, R. H. M., & Andrade, P. R. (2023). Estimating
#> Public Transport Emissions from General Transit Feed Specification Data.
#> Transportation Research Part D: Transport and Environment. Volume 119,
#> 103757. https://doi.org/10.1016/j.trd.2023.103757
#>
#> A BibTeX entry for LaTeX users is
#>
#> @article{vieira2023estimating,
#> title = {Estimating Public Transport Emissions from {{General Transit Feed Specification}} Data},
#> author = {Vieira, Jo{\~a}o Pedro Bazzo and Pereira, Rafael H. M. and Andrade, Pedro R.},
#> year = {2023},
#> month = jun,
#> journal = {Transportation Research Part D: Transport and Environment},
#> volume = {119},
#> pages = {103757},
#> issn = {1361-9209},
#> doi = {10.1016/j.trd.2023.103757},
#> urldate = {2023-05-06},
#> langid = {english},
#> keywords = {Emission factors,Emission models,GTFS,Gtfs2emis,Public transport emissions,Urban bus}
#> }
The gtfs2emis package is developed by a team at the Institute for Applied Economic Research (IPEA) in collaboration from the National Institute for Space Research (INPE), both from Brazil.