350 likes | 461 Views
This document outlines a methodology for analyzing vehicle classification data using loop detector volume and occupancy data on Portland metro freeways. It aims to enhance the accuracy of "green" performance measures by obtaining high-resolution vehicle class data, essential for calculating vehicle miles traveled (VMT) by class. The focus is on utilizing advanced truck counting techniques developed in prior studies to improve estimations of emissions, fuel consumption, and delays, facilitating effective transportation planning and environmental impact assessments.
E N D
Counting Trucks inPORTAL Truck Count Estimates from Loop Detector Volume and Occupancy Data
Objective: • Obtain vehicle class data with high time and space resolution on Portland metro freeways
Why? • “Green” performance measures for PORTAL require VMT by class. • Emission rates, fuel consumption, and value of time all vary significantly with vehicle class. For example, cost of delay in 2007: Autos: $17.58/hr Heavy Trucks: $30.93
Use of Truck Counts More Precise Green Measures
Estimation Methods • 3 papers by Wang and Nihan (U. of Washington) • Truck counts from single-loop detector volume and occupancy data • 2000: regression model for effective vehicle lengths • 2001: 2-step method • 2003: 3-step method that includes period speed • (Used in previous PORTAL project)
Assumptions • Two very important assumptions: • Vehicle speeds constant for each period • At least 2 intervals per period have no LV’s SV = Short Vehicle (under 12 meters) LV = Long Vehicle (over 12 meters) *Both assumptions affected by period length
Raw Data from PORTAL • Raw data for multiple days and stations not easily available through PORTAL web interface • Direct access to PORTAL data possible through R (Thanks to Dr. Monsere for your help!) • Wiki page to guide you: http://wiki.cecs.pdx.edu/bin/view/ItsWeb/PORTALaccessR • (also link through ITSLabAdmin > RArchive )
Setup the Connection Steps: Setup driver Get to know PORTAL structure Use R scripts
R Script Establish Connection • ########################################################## • # • # Connect to PORTAL • # Need PostgreSQL ODBC driver installed on windows and configured • # Using R 2.7.1 (latest version) • # See \Equipment_Software\ODBCdrivers on Marston • # and readme.txt file • # • ########################################################## • #Set up the database connection to PORTAL • #================================= • library(RODBC) • portal <- odbcConnect("portal_ro", uid="portal_ro") # establish connection • sqlQuery(portal,"SET search_path = public, pg_catalog;") # sets the schema to public • # Extract Data • #================================= • hwy <- "I-205" • dirs <- c("NORTH","SOUTH","EAST","WEST") • dir <- dirs[1] • highwayID <- sqlQuery(portal, paste("SELECT highwayid FROM highways WHERE highwayname = '",hwy,"' AND direction = '", dir,"'", sep="")) • station <- "Stafford to I-205 NB" • query <- paste("SELECT stationid, length, milepost FROM stations WHERE highwayid = ",highwayID," AND locationtext = '",station,"'",sep="") • stationinfo <- sqlQuery(portal, query) • stationID <- stationinfo[,"stationid"] • query <- paste("SELECT detectorid, stationid, detectorclass, lanenumber FROM detectors WHERE stationid IN (",paste(stationID, collapse=", "),")",sep=" ") • detectorID <- sqlQuery(portal, query) • ramps <- detectorID[detectorID$detectorclass == 5, "detectorid"] • lanes <- detectorID[detectorID$detectorclass == 1, c("detectorid","lanenumber")] • if (!all(is.element(detectorID$detectorclass,c(1,5)))) print ("Other detector classes present!") • Data <- data.frame() • for (day in 23:23) { • year <- 2008 • month <- 1 • date <- ISOdate(day=day,year=year,month=month) • tablename <- paste("loopdata",format(date,"%Y_%m_%d"),sep="_") • fields <- "*" • query <- paste("SELECT",paste(fields, collapse=", "),"FROM",tablename,"WHERE detectorid IN (",paste(detectorID[,1], collapse=", "),")",sep=" ") • daily <- sqlQuery(portal, query) • Data <- rbind(Data,daily[daily$detectorid %in% lanes$detectorid,]) • } Defining SQL query Enacting SQL query
Wang Algorithm Step 1 • Separate intervals with all SV from those with possible LV • The two intervals with the lowest O/N are assumed to be all SV (EVL = SVmean) • Other interval EVLs calculated by comparing SV intervals’ O/N • Critical EVLs based on normalized distributions of SV and LV EVL = Effective Vehicle Length (per interval) O/N = Occupancy / Volume ratio
Progress If EVLi > EVLcrit, then possible LV’s
Wang Algorithm Step 2 • Estimate period speed (assumed constant) • From summed vol. and occ. of all SV-classified intervals in Step 1 • Uses mean SV length (5.48 meters)
Wang Algorithm Step 3 • Compute LV (trucks) in remaining intervals (non-SV) • Nearest-neighbor rule • Statistically closest “bin” of auto/truck distribution to match the interval’s EVL • 7-truck maximum • (if volume > 7)
Progress Aggregate intervals and periods to hourly vehicle mixes.
Now we have our truck counts... • ...but are they accurate?
Assumption Violation • Constant vehicle speeds violated • Overestimate LV: Low speeds appear as LV • Overestimate Speed: slower SV intervals removed • At least two all-SV intervals per period violated • Underestimate Speed: LV appear as slow SV • Underestimate LV: LV appear as slow SV
Occupancy Resolution 70mph = 103ft/sec 60mph = 88ft/sec 50mph = 73ft/sec 18ft SV 18ft / 88ft/s = 0.20sec = 1.0%occ BUT . . . 18ft / 73ft/s = 0.25sec = 1.2%occ AND . . . 18ft / 103ft/s = 0.18sec = 0.88%occ
So . . . A single short vehicle, rounding to 1 digit:
Differences to Previous PORTAL Implementation • Excluded zero occ., non-zero vol. intervals • 6-ft Loop lengths (instead of 4-ft) • Assumed maximum period speed • Variable period lengths (automated) • Use of ODOT-calculated speeds
Comparison With ATR Highly inaccurate during congestion (mph)
Method Selection • Depending on road conditions, most accurate methods: • 70mph max speed, 5 minute periods • 70mph max speed, automated variable periods • ODOT speeds (70mph max), 5 minute periods • ODOT speeds (70mph max), variable periods But we shouldn’t need the max speeds – is something wrong with the raw data?
Avg. Abs. % Diff: • 70max 22% • 70_VarPer 25% • ODOT 41% • ODOT_VarPer 38% • Prev. PORTAL 32%
Conclusion • These methods are still too inaccurate. • At best, around 20% difference in truck counts, as compared to ATR and manual counts • Some hourly percent errors over 100% • Next step is to ensure accuracy and resolution in volume and occupancy raw data.
Truck Counts in Action! Compared to static fleet: Average: 2% greater ($189) Max: 7% greater ($765)
THANK YOU! • Questions? • Comments?