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()
}