Skip to contents

Highway Performance Monitoring System (HPMS) data from 2020 is summarized as the average daily total number of meters driven by passenger vehicles, trucks/busses, and tractor-trailers on interstates, freeways, and expressways within buffer meters of each s2 cell

Usage

get_traffic_summary(x, buffer = 400)

install_traffic(traffic_release = "hpms_2020_f12_aadt-2025-07-16")

Arguments

x

a vector of s2 cell identifers (s2_cell object)

buffer

distance from s2 cell (in meters) to summarize data

traffic_release

name of github release to download traffic data file from

Value

a list the same length as x, which each element having a numeric vector of aadtm_passenger, aadtm_trucks_buses, aadtm_tractor_trailer

Details

Only roads with F_SYSTEM classification of 1 ("interstate") or 2 ("principal arterial - other freeways and expressways") are used. Passenger vehicles (FHWA 1-3) are calculated as the total minus FHWA class 4-7 (single unit) and 8-13 (combo)

Examples

get_traffic_summary(
  s2::as_s2_cell(c("8841b6abd8207619", "8841b4f6affffffb", "8841b39f07f7d899")))
#>  reading traffic data...
#>  reading traffic data... [12.9s]
#> 
#>  finding nearby roadways
#>  finding nearby roadways [4.3s]
#> 
#>  calculating length-based traffic-length totals
#>  calculating length-based traffic-length totals [27ms]
#> 
#> $`8841b6abd8207619`
#>    aadtm_trucks_buses aadtm_tractor_trailer       aadtm_passenger 
#>              10455077              18769359             230570823 
#> 
#> $`8841b4f6affffffb`
#>    aadtm_trucks_buses aadtm_tractor_trailer       aadtm_passenger 
#>               9693259               4764295             149804919 
#> 
#> $`8841b39f07f7d899`
#>    aadtm_trucks_buses aadtm_tractor_trailer       aadtm_passenger 
#>                     0                     0                     0 
#> 
if (FALSE) {
# randomly sample 100 level 18 cells from s2 level-9: 8841b4
# https://igorgatis.github.io/ws2/?cells=8841b4
# use their centroids as the level 30 s2 cells
set.seed(1)
my_s2_cells <-
  s2::s2_covering_cell_ids(s2::s2_cell_polygon(s2::as_s2_cell("8841b4")),
                           min_level = 18, max_level = 18) |>
  unlist()|>
  sample(size = 100)|>
  s2::s2_cell_center()|>
  s2::as_s2_cell()
get_traffic_summary(my_s2_cells) |>
  dplyr::bind_rows()
}