NBI Hydrolocation Considerations

Slide layout : This deck has one axis, use any key to advance.
: This deck is narrative-oriented
Items linked/bordered in green are cited in the tooltip on hover.
Items linked/bordered in blue are hyperlinked to relevant resources.
Photos are Allowed | Questions are Encouraged
: ~5 minutes | Last updated:07/17/2026 04:21:58
! PLEASE !
Interrupt me and ask questions or clarifications.
I’m here to talk with you now, not to these slides.
My preferred (FOSS) flavor of slidedecks, revealjs, has intuitive but none the less unconventional PowerPoint presentation controls:
F.
space, N, or the down arrow key, not the right arrow to advance slidesM to open to the menu, Press O for the slide deck overview, Press B to black out the presentation screen, Press S for a speaker view.Alt/Opt + click on the slide to zoom in. Increase text size with Alt/Opt + +, Alt/Opt + - to decrease, and Alt/Opt + 0 reset to the default scale.C to declare victory and head home.2
The National Bridge Inventory (NBI) is our nations way of accounting for and coarsely administering the nations critical bridges. This inventory is used by state and federal partners and provides “the Recording and Coding Guide for the Structure Inventory and Appraisal of the Nation’s Bridges…” as administered by the US Federal Highway Administration (FHWA). This data can be accessed (in ASCII form) from here.
To isolate the specific structures we care about (highway bridges over water), we have to decode the NBI’s specific alphanumeric tagging system.
| Field Name | Description | Our Filter Criteria |
|---|---|---|
LAT_016 / LONG_017 |
Coordinates | Formatted as DDMMSSss; requires parsing. |
CULVERT_COND_062 |
Culvert Status | Keep 'N' (Not a culvert - we want bridges). |
SERVICE_UND_042B |
What is under it? | Keep 5, 6, 7, 8, 9 (Ensures a waterway is beneath). |
SERVICE_ON_042A |
What is on it? | Drop 2, 3, 9 (Removes Rail, Pedestrian, Unknown). |

How do we match a federal point database (NBI) to a crowdsourced line database (OSM)?
bridge=yes.Reprocessing:

Pre-clip is good! - But, brittle tools and tool wiring are bad
Suggestion:
# Read data out of the OSM database
bridges_data <- osmextract::oe_read(
path_to_roadlines,
layer = "lines",
boundary = sf::st_bbox(vpus[vpus$huc2==vpu_unit, ]),
boundary_type = "spat",
extra_tags = c("bridge", "highway"),
quiet = !is_verbose
)
# Pull out all lines tagged as "Bridge"
bridges_sf <- bridges_data[grepl("yes|viaduct|aqueduct|footbridge|suspension_bridge|movable_bridge|railway_bridge",
bridges_data$bridge,
ignore.case = TRUE) &
!is.na(bridges_data$bridge), ]
# Filter to valid bridge codes
nbi_sf <- nbi_sf[(nbi_sf$CULVERT_COND_062 == 'N' &
nbi_sf$SERVICE_UND_042B %in% c('5','6', '7', '8', '9') &
!(nbi_sf$SERVICE_ON_042A %in% c('2', '3', '9'))), ]
Specifications for the National Bridge Inventory w/ Errata#1 03/24 (2024)
See notes (s) and frames for image sources.
