Skip to content

A package for road traffic data processing and fundamental diagram estimation

License

Notifications You must be signed in to change notification settings

iarokr/roadtraffic

Repository files navigation

roadtraffic

PyPI version PyPI - Python Version Build roadraffic tests

Overview

The roadtraffic Python package for traffic data processing and fundamental diagram estimation. A fundamental diagram is estimated using convex regression with the help of the pyStoNED package. The mosek solver is used for the estimation. For the academic purposes, you can obtain a free academic license for the solver. You can also use the free NEOS server for the estimation, but the computational time will be longer.

Currently only data from Finnish roads, collected through this package is supported. The source of data is Fintraffic / digitraffic.fi, license CC 4.0 BY.

The package works on the raw data. The data can be aggregated over time and road direction/lane. The aggregated data is then bagged for computational efficiency. The estimation of the fundamental diagram is done on the bagged data. The availability of raw data depends on the traffic measurement station. The earliest data are from 1995. New data are available every day at 3 am (Helsinki time zone). The developers of the package are not affiliated with Fintraffic and can't influence the availability or quality of the data.

Installation

The installation of the package is avalable through the PyPI:

    pip install roadtraffic

Basic usage

The package offers an opportunity to work with Finnish traffic data. You can select a traffic measurement station (TMS or LAM, in Finnish) from the official metadata using tmsNumber field or the map taking the integer part or lamid field.

Let's take as an example the traffic management station number 162, located on Kehä II in Espoo, Finland and load, process the data and estimate the model for September 10-11, 2019.

# Import dependencies
from roadtraffic import fintraffic 

# Traffic measurement station of interest
tms_id = 162

# Initiate the list of days (tuples) of interest (Sep 10-11, 2019)
days_list = [
    (2019, 253),
    (2019, 254),
]

# Specify the road direction
# Information about the direction could be obtained from the metadata or the map
direction = 1

# Initiate the class for Fintraffic data
tms = fintraffic.TrafficMeasurementStation(tms_id, days_list)

# Load raw data for the selected period
tms.raw.load()

# Clean data for the direction
tms.raw.clean(direction=direction)

# Aggregate data
tms.raw_to_agg(aggregation_time_period='5', aggregation_time_period_unit='min')

# Bag data
tms.agg_to_bag(num_bags_density=40, num_bags_flow=200)

# Estimate the model for the median
tms.bag.estimate_model("quantile", [0.5], email="test@test.test") # you can specify your email to receive the log file

# Obtain the results
tms.bag.models.get_estimate(0.5)

# Estimate the model for the mean
tms.bag.estimate_model("mean", email="test@test.test")

# Obtain the results
tms.bag.models.get_estimate("mean")

Authors

  • Iaroslav Kriuchkov, Doctoral Researcher at Aalto University School of Business, Finland
  • Timo Kuosmanen, Professor at Turku University School of Economics, Finland

License

roadtraffic is licensed under the GNU GPLv3 License - see the LICENSE file for details

About

A package for road traffic data processing and fundamental diagram estimation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages