Skip to main content

Transportation Guide

Every time you ask for directions, hail a ride, or check a map, you're relying on a model of how the world's roads, rails, and waterways connect. The Overture transportation theme is such a model: a global, open dataset of paths people and vehicles travel, built from OpenStreetMap and enhanced with data from TomTom and other local and regional authoritative data sources.

The dataset is simple at its core — just two feature types, segment and connector — but expressive enough to capture highway speed limits that change by time of day, one-way streets that allow buses to go the wrong way, and weight-restricted bridges with axle limits. Three subtypes within segment cover road, rail, and water transportation.

The rest of this page covers the feature types and subtypes, describes the dataset and how to access it, and points to tools and libraries for working with the data. The deeper topics are covered in the rest of the guide:

  • Segments and connectors: The building blocks of the network. Segments are the paths; connectors are the junctions where they meet. This page covers how they combine to form a routable graph, along with orientation, heading, and how Overture decides where to split a road.
  • Linear referencing: How properties can apply to just part of a segment — say, the first 500 meters — without chopping the geometry in two. Includes calculation methods and code examples.
  • Scoping and travel modes: The rule system that makes properties conditional. A speed limit might apply only to trucks, only on weekdays, or only in the forward direction. Scoping is how all of that gets expressed.
  • Roads: The details specific to road segments — access restrictions, turn restrictions, speed limits, and more.

You might use Overture transportation data for mapping, routing, navigation, or geocoding street intersections. For the full schema details, see the reference documentation.

Feature types

The Overture transportation schema defines two feature types:

  • The segment type has a LineString geometry that represents the center-line of a path repeatedly traversed by people or objects. Segment properties describe both the physical properties (e.g. road surface and width) and non-physical properties (e.g. access restriction rules) of that path.
  • The connector type has a Point geometry that represents the physical positions where two or more segments meet. While topology is defined by the connectors field within the segment type, the connector type provides a convenient, queryable list of those connection points. Connectors do not have properties beyond geometry and the common properties required for all Overture features.

A more detailed overview of these feature types can be found in segments and connectors.

Subtypes, classes, and subclasses

Transportation segments are divided into three subtypes: rail, water, and road. These subtypes are further divided into a variety of different classes based on usage captured in the table below.

Class and subclass feature counts
subtypeclasssubclassfeature count, March 2026
railfunicularNULL1,354
raillight_railNULL16,766
railmonorailNULL3,066
railnarrow_gaugeNULL30,345
railstandard_gaugeNULL1,461,792
railsubwayNULL54,987
railtramNULL59,385
railunknownNULL390,616
roadbridlewayNULL102,186
roadcyclewaycycle_crossing64,492
roadcyclewayNULL1,325,142
roadfootwaycrosswalk2,426,146
roadfootwaysidewalk3,945,829
roadfootwayNULL16,944,293
roadliving_streetNULL3,404,804
roadmotorwaylink648,337
roadmotorwayNULL439,095
roadpathNULL13,963,796
roadpedestrianNULL473,165
roadprimarylink503,321
roadprimaryNULL6,820,001
roadresidentialNULL126,985,903
roadsecondarylink397,889
roadsecondaryNULL10,876,018
roadservicealley1843,302
roadservicedriveway17,643,423
roadserviceparking_aisle6,556,473
roadserviceNULL34,096,464
roadstepsNULL1,971,731
roadtertiarylink304,286
roadtertiaryNULL20,253,458
roadtrackNULL25,956,126
roadtrunklink569,758
roadtrunkNULL3,516,259
roadunclassifiedNULL29,951,857
roadunknownNULL8,959,680
waterNULLNULL28,710

Data dictionary

All Overture data, including transportation data, is distributed as GeoParquet, a column-based data structure. Below you'll find tables with column-by-column descriptions of the properties for the segment and connector feature types.

Column definitions in the transportation theme
columntypedescription
idstringA feature ID. This may be an ID associated with the Global Entity Reference System (GERS) if—and-only-if the feature represents an entity that is part of GERS.
geometrybinaryThe line representation of the segment's location. Segment's geometry which MUST be a LineSting as defined by GeoJSON schema.
bboxstructArea defined by two longitudes and two latitudes: latitude is a decimal number between -90.0 and 90.0; longitude is a decimal number between -180.0 and 180.0.
versionintegerVersion number of the feature, incremented in each Overture release where the geometry or attributes of this feature changed.
sourcesstructThe array of source information for the properties of a given feature, with each entry being a source object which lists the property in JSON Pointer notation and the dataset that specific value came from. All features must have a root level source which is the default source if a specific property's source is not specified.
subtypestringThe broad category of transportation segment.
classstringCaptures the kind of road and its position in the road network hierarchy.
namesstructProperties defining the names of a feature.
connectorsstructArray of connector IDs identifying the connectors this segment is physically connected to linearly referenced with their location. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments which share the same connector.
routesstructRoutes this segment belongs to.
subclass_rulesstructDefines the portion of a road that the subclass applies to.
access_restrictionsstructRules governing access to this road segment or lane.
level_rulesstructDefines the Z-order, i.e. stacking order, of the road segment.
destinationsstructDescribes objects that can be reached by following a transportation segment in the same way those objects are described on signposts or ground writing that a traveller following the segment would observe in the real world. This allows navigation systems to refer to signs and observable writing that a traveller actually sees.
prohibited_transitionsstructDefines where traveling from the segment to another is disallowed for navigation. This covers things situations prohibited turns or a transition from road to bike lane disallowing cars.
road_surfacestructDefines the surface material on a road such as paved, asphalt, or unpaved.
road_flagsstructAdditional properties relevant to roads such as is_bridge or is_under_construction.
speed_limitsstructDefines the speed limit of the road segment.
width_rulesstructDefines the width of the road segment for rendering.
subclassstringSpecifies the usage of a length of road.
rail_flagsstructAdditional properties relevant to rail such as is_tunnel or is_freight.
filenamestringName of the file being queried.
themestringName of the Overture theme being queried.
typestringName of the Overture feature type being queried.

Data access and retrieval

Overture's transportation theme data is freely available on both Amazon S3 and Microsoft Azure Blob Storage at these locations:

providerlocation
Amazon S3
s3://overturemaps-us-west-2/release/2026-03-18.0/theme=transportation/type=segment/*
Azure Blob Storage
https://overturemapswestus2.blob.core.windows.net/release/2026-03-18.0/theme=transportation/type=segment/*

We recommend downloading only the Overture data you need. If you have a particular geographic area of interest, there are several options for using a simple bounding box to extract data and output a GeoJSON file.

First, follow the setup guide for the Python Client.

Set type to either segment or connector and simply alter the bbox value to download a particular area.

overturemaps download --bbox=12.46,41.89,12.48,41.91 -f geojson --type=segment -o rome_segments.geojson

Querying transportation data

Querying by properties in DuckDB

These examples use data properties to filter the data in useful ways using DuckDB.

The class column can be used to pull out subsets of the road data. Similarly, you could use subtype to select only water, rail, or road features. This example extracts only the parking_aisle features within the bounding box.

LOAD spatial; -- noqa
LOAD httpfs; -- noqa
-- Access the data on AWS in this example
SET s3_region='us-west-2';

COPY (
SELECT
*
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-03-18.0/theme=transportation/type=segment/*')
WHERE
class = 'parking_aisle' AND
bbox.xmin > 13.0897 AND bbox.xmax < 13.6976 AND
bbox.ymin > 52.3100 AND bbox.ymax < 52.7086
)
TO 'berlin_parking_aisles.parquet';

Querying by properties in Athena

Athena can allow for faster querying of the transportation layer than DuckDB given the size of the data. These examples are designed for Athena, but could be reworked for DuckDB with some tweaking.

To properly return a linear referenced feature like a speed limit, we will need to query all the possible values of the feature as the queried value may only exist on one portion of the line. In this example, we're extracting roads with any speed limit max_speed value of 27 and unit of mph using the any_match function.

This same general query would also work for querying other similar columns such as prohibited_transitions and access_restrictions.

SELECT
id,
speed_limits,
ST_GEOMFROMBINARY(geometry) AS geometry
FROM v2026_03_18_0
WHERE type = 'segment'
AND ANY_MATCH(
speed_limits,
speed_limit->speed_limit.max_speed.value = 27
AND speed_limit.max_speed.unit = 'mph'
)

Tools and libraries

transportation-splitter

Overture Splitter
Conceptual diagram of the splitter tool output. The numbers following 1234@ represent start_lr and end_lr values.

The transportation-spitter tool transforms Overture road data into simpler sub-segments. It will optionally divide features at each connector point and at each change of a scoped based property, depending on configuration. Depending on your needs and map stack, the resulting dataset may be easier to manipulate than the original Overture data as each segment will only have connections at either end and have one set of properties for its entire length.

Since a GERS ID will no longer be unique with this output, the resulting data will have two additional columns: start_lr and end_lr which are linear references describing which section of the original feature this new segment comes from.

Splitter example

To help visualize this process better, here is a real-world example of a residential street in OpenStreetMap, Overture, and after being run through the splitter tool.

OpenStreetMap Splitter Example
In OpenStreetMap this residential road is represented by two different features with the same tags with feature 1 having an additional restricted access tag.

More information and feedback

The tool requires a Spark environment to run and has been tested using Azure Databricks and AWS Glue. For setup information the transportation-spitter GitHub will contain the most up-to-date information as the tool is in active development still.

If you have feedback, questions, etc. on the tool you can create an issue on the GitHub.

Get support

Overture is an open project and we welcome feedback, questions, and bug reports through our public GitHub repositories.

Where to go. Use GitHub Discussions for general questions, workflow help, feature suggestions, or broader conversations about Overture. Use GitHub Issues in the data repository or the schema repository for specific bug reports: missing entities, geometry problems, duplicate records, or country-specific data concerns.

What to expect. We review incoming issues regularly and try to respond within a few business days, but we can't guarantee a resolution timeline. Issues that affect data integrity or block common workflows get higher priority.

Filing a good issue. The more detail you include, the faster we can help. When reporting a data problem, please include: the Overture release version you're using, a query or code snippet that reproduces the issue, specific entity IDs or bounding boxes where you see the problem, and any relevant screenshots or map views. If you can share a minimal reproducible example, that goes a long way.