Schema
Schemas drift when they live in prose, so this page is generated from the datapackage.json files shipped with the data (following the Data Package standard). What you read here is what the CSVs contain. Two datasets share one model: the core release ships corridors, exits, places, and the links between them, and the reachability release scores exit-place pairs that join back to those tables.
Core tables
Documented against release-2026-07-13-gha-33.
| Name | Description |
|---|---|
| corridors | Contiguous directional interstate corridors. |
| corridor_edges | Graph edges assigned to corridors. |
| corridor_exits | Normalized exits linked to a corridor. |
| exit_aliases | Source exit aliases mapped to normalized exits. |
| places | Reachable places and services. |
| exit_place_links | Spatial proximity links between exits and places. |
| reference_routes | Routes for QA, examples, and exploration. |
corridors
Contiguous directional interstate corridors.
| Column | Type | Description |
|---|---|---|
| corridor_id | integer | Stable identifier for one directional corridor. |
| interstate_name | string | Interstate the corridor belongs to, like I-10. |
| direction_code | string | Canonical travel direction, like east. |
| direction_label | string | Capitalized form of direction_code. |
| geometry_geojson | geojson | Corridor geometry as GeoJSON LineString or MultiLineString text. |
| edge_count | integer | Number of graph edges assigned to the corridor. |
corridor_edges
Graph edges assigned to corridors.
| Column | Type | Description |
|---|---|---|
| edge_id | string | Deterministic edge identifier, like edge/I-35E/10125498410/82123455. |
| corridor_id | integer | Corridor the edge belongs to. |
| interstate_name | string | Interstate of the parent corridor. |
| direction_code | string | Canonical direction of the parent corridor. |
| length_m | number | Edge length in meters. |
| geometry_geojson | geojson | Edge geometry as GeoJSON LineString text. |
corridor_exits
Normalized exits linked to a corridor.
| Column | Type | Description |
|---|---|---|
| exit_id | string | OSM-derived exit identifier, like node/338162665. |
| corridor_id | integer | Corridor the exit sits on. |
| interstate_name | string | Interstate of the parent corridor. |
| direction_code | string | Canonical direction of the parent corridor. |
| sequence_index | integer | Zero-based position of the exit along the corridor. |
| exit_number | string | Posted exit number from OSM, like 1A. May be empty. |
| exit_name | string | Exit name from OSM. May be empty. |
| lat | number | Exit latitude in WGS84. |
| lon | number | Exit longitude in WGS84. |
| geometry_geojson | geojson | Exit location as GeoJSON Point text. |
exit_aliases
Source exit aliases mapped to normalized exits. Ships empty in the current release. The alias-normalization layer is not yet populated.
| Column | Type | Description |
|---|---|---|
| canonical_exit_id | string | Normalized exit that aliases collapse into. |
| source_exit_id | string | Source exit mapped onto the canonical exit. |
places
Reachable places and services.
| Column | Type | Description |
|---|---|---|
| place_id | string | OSM-derived place identifier, like node/10000051746. |
| category | string | Place category, like evCharging or restArea. |
| name | string | Name from OSM. |
| display_name | string | Name prepared for display. |
| brand | string | Brand from OSM. May be empty. |
| geometry_geojson | geojson | Place location as GeoJSON Point text. |
exit_place_links
Spatial proximity links between exits and places.
| Column | Type | Description |
|---|---|---|
| exit_id | string | Exit side of the link. Joins corridor_exits.exit_id. |
| place_id | string | Place side of the link. Joins places.place_id. |
| category | string | Category of the linked place. |
| distance_m | number | Distance from exit to place in meters. |
| rank | integer | Proximity rank of the place for this exit, starting at 1. |
reference_routes
Routes for QA, examples, and exploration. Only corridors that meet the route-builder thresholds are emitted. Short corridors may appear in corridors.csv without a matching reference route.
| Column | Type | Description |
|---|---|---|
| reference_route_id | string | Deterministic route identifier. |
| interstate_name | string | Interstate the route follows, like I-10. |
| direction_code | string | Compact direction code, like EB. |
| direction_label | string | Readable direction, like Eastbound. |
| display_name | string | Route name, like I-10 Eastbound. |
| distance_m | number | Route distance in meters. |
| duration_s | number | Estimated drive time in seconds. |
| point_count | integer | Number of coordinates in the route geometry. |
| geometry_geojson | geojson | Route geometry as GeoJSON LineString or MultiLineString text. |
Reachability tables
Reachability is computed with OSRM routing and documented against
score-20260715-1351876. Scores run 0 to 100, higher is easier
to reach, and every row joins back to the core tables through
exit_id and place_id.
| Name | Description |
|---|---|
| reachability | OSRM driving distance, duration, and a score per exit-place pair. |
| osrm_snap_hints | Snapped coordinates and routing hints for incremental scoring runs. |
reachability
OSRM driving distance, duration, and a score per exit-place pair.
| Column | Type | Description |
|---|---|---|
| exit_id | string | Exit being scored. Joins corridor_exits.exit_id in the core release. |
| place_id | string | Place being scored. Joins places.place_id in the core release. |
| route_distance_m | integer | OSRM driving distance in meters. Empty when the pair is unreachable. |
| route_duration_s | integer | OSRM driving time in seconds. Empty when the pair is unreachable. |
| reachable | boolean | Whether OSRM found a driving route between the pair (t or f). |
| reachability_score | number | 0 to 100, higher is easier to reach. Penalized by route distance and exit-to-place offset. 0 when unreachable. |
| reachability_confidence | number | Confidence in the score from 0 to 1. Decreases with route distance. |
| provider | string | Routing engine that scored the pair, currently osrm. |
| provider_dataset_version | string | Provider dataset version when recorded. May be empty. |
| updated_at | datetime | When the pair was scored, UTC. |
osrm_snap_hints
Snapped coordinates and routing hints for incremental scoring runs.
| Column | Type | Description |
|---|---|---|
| source_scope | string | Source scope for the endpoint, like product. |
| endpoint_kind | string | Kind of snapped endpoint, like exit. |
| endpoint_id | string | OSM-derived identifier of the endpoint. |
| dataset_key | string | Key for the snapping dataset and config that produced the hint. |
| input_lon | number | Original longitude before snapping, WGS84. |
| input_lat | number | Original latitude before snapping, WGS84. |
| snapped_lon | number | Longitude snapped onto the routable road network. |
| snapped_lat | number | Latitude snapped onto the routable road network. |
| hint | string | Opaque OSRM hint token reused to skip re-snapping on later runs. |
| snapped_distance_m | number | Distance moved from the input point to the snapped point in meters. |
| updated_at | datetime | When the hint was produced, UTC. |
Formats
Both datasets favor files you can open right now: plain CSV, GPX, and GeoJSON, with transparent lineage. Parquet and GeoParquet packaging will follow once the release path is stable.
