Problem
The highways pack (highways-conus, built by pyEfis/tools/build_highway_db.py from the Geofabrik gis_osm_roads_free_1 layer) keeps only fclass + bbox + vertices. The source carries tunnel, bridge, ref, oneway and layer, all dropped at build. Consequences in the SVS: a tunnel draws as a road across the ridge it goes under (Colorado extract: 19 motorway + 6 trunk + 10 link tunnel segments, Eisenhower-Johnson on I-70 among them; California: 70 motorway tunnel segments), and with the planned terrain-following ribbons a bridge would sag into the valley it spans (4.4k bridge segments in CO, 18k in CA).
Proposal
build_highway_db.py writes two new columns: flags INTEGER (bit 0 tunnel, bit 1 bridge, from the shapefile tunnel / bridge fields equal to T) and ref TEXT (e.g. I 35E, US 75, for route shields on the map later). Schema version bump in HighwayDB.SCHEMA_VERSION.
HighwayDB (pyEfis) reads them when present (PRAGMA table_info) and returns flags = 0, ref = None on old packs; nothing becomes required by the manifest.
- SVS consumers: drop tunnel segments (the road ends at each portal); bridges skip terrain subdivision (straight and level between abutments).
- Rebuild
highways-conus with the flags via work/build_na_roads.py (workstation job; the Geofabrik download is the expensive part, the build is minutes), publish as 2026q3r1, docs/roads.md updated, bench pyefis-data update. Class set stays motorway/trunk (+links) unless Bill decides to widen it.
Definition of done
- builder tests for the columns and the old-pack fallback (pyEfis
tests/tools/test_build_highway_db.py)
HighwayDB on the current pack returns flags = 0
- SVS test: a tunnel polyline yields no vertices
- pack
2026q3r1 built, signed, published; pack_meta attribution (ODbL) unchanged
- a Glenwood Canyon capture shows I-70 ending at the Hanging Lake tunnel portals
Refs #17 (builder guards, California). Data side of the pyEfis SVS road-ribbon issue.
Problem
The highways pack (
highways-conus, built bypyEfis/tools/build_highway_db.pyfrom the Geofabrikgis_osm_roads_free_1layer) keeps onlyfclass+ bbox + vertices. The source carriestunnel,bridge,ref,onewayandlayer, all dropped at build. Consequences in the SVS: a tunnel draws as a road across the ridge it goes under (Colorado extract: 19 motorway + 6 trunk + 10 link tunnel segments, Eisenhower-Johnson on I-70 among them; California: 70 motorway tunnel segments), and with the planned terrain-following ribbons a bridge would sag into the valley it spans (4.4k bridge segments in CO, 18k in CA).Proposal
build_highway_db.pywrites two new columns:flags INTEGER(bit 0 tunnel, bit 1 bridge, from the shapefiletunnel/bridgefields equal toT) andref TEXT(e.g.I 35E,US 75, for route shields on the map later). Schema version bump inHighwayDB.SCHEMA_VERSION.HighwayDB(pyEfis) reads them when present (PRAGMA table_info) and returnsflags = 0, ref = Noneon old packs; nothing becomes required by the manifest.highways-conuswith the flags viawork/build_na_roads.py(workstation job; the Geofabrik download is the expensive part, the build is minutes), publish as2026q3r1,docs/roads.mdupdated, benchpyefis-data update. Class set stays motorway/trunk (+links) unless Bill decides to widen it.Definition of done
tests/tools/test_build_highway_db.py)HighwayDBon the current pack returnsflags = 02026q3r1built, signed, published;pack_metaattribution (ODbL) unchangedRefs #17 (builder guards, California). Data side of the pyEfis SVS road-ribbon issue.