Skip to main content

Transportation

Overview

Overture Maps transportation theme is the collection of features and attributes that describe the infrastructure and conventions of how people and objects travel around the world. Transportation data includes highways, footways, cycleways, railways, ferry routes, and public transportation. The dataset contains two features types: connector and segment.

feature typePrimary sourceFeature count, July 2024 release
connectorOpenStreetMap~355 million
segmentOpenStreetMap~310 million

Use cases

You might use Overture Maps transportation data and schema for:

  • mapping: rendering a map of connected roads and paths.
  • routing: calculating optimal routes from place to place.
  • navigation: generating granular instructions on the maneuvers needed to follow a route.
  • analytics: transportation-related analysis including traffic safety analysis and disaster planning.
  • geocoding: getting the coordinates of street intersections (geocodes) or the street intersection near specific coordinates (reverse geocodes).

Key concepts

  • Shape and connectivity. The transportation theme schema captures the shape and connectivity of the transportation network using segment and connector features. The schema design allows the segmentation process to promote shape stability and ultimately feature ID stability. Read more on the shape and connectivity page.

  • Scoped and rule-based properties. The transportation theme schema allows property values to be specified for granular scopes at the sub-feature level. For example:

    • a speed limit on a road segment might be scoped to apply only to part of the road geometry using geometric scoping.
    • the directionality of a segment, controlling the direction or directions in which traffic can flow along the segment geometry, may be specified to change at different times of day using temporal scoping.
    • the categories of people and vehicles who are allowed to travel on a segment can be controlled using subjective scoping.
    • a real-world attribute that varies under changing environmental conditions can be modeled using environmental scoping.

Read more about these concepts on the scoped and rule-based properties page.

  • Roads. The transportation theme schema models any kind of road, street or path, including dedicated walking and cycling paths, as road segments. Roads are currently the most developed part of the transportation schema. Read more about roads on the roads page.

  • Travel modes. The transportation theme supports a fuzzy concept called travel mode which can be used as a way of controlling the scope of scoped and rule-based properties. Read more about the travel modes concept and how travel modes interact with other scoping properties on the travel modes page.

Dataset Description

All Overture data, including transportation data, is distributed as GeoParquet, a column-based data structure. Below you'll find a table with column-by-column descriptions of the properties in the transportation feature type.

Schema for GeoParquet files in the transportation theme
column_namecolumn_typeDescription
idVARCHARA 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.
geometryBLOBThe 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.
sourcesSTRUCT[]The 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.
subtypeVARCHARThe broad category of transportation segment.
classVARCHARCaptures the kind of road and its position in the road network hierarchy.
subclassVARCHARSpecifies the usage of a length of road.
subclass_rulesSTRUCT[]Defines the portion of a road that the subclass applies to.
namesSTRUCT[]Properties defining the names of a feature.
connector_idsVARCHAR[]Deprecated: List of connector IDs identifying the connectors this segment is physically connected to. 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.
connectorsSTRUCT[]Array 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.
routesSTRUCT[]Routes this segment belongs to.
access_restrictionsSTRUCT[]Rules governing access to this road segment or lane.
level_rulesSTRUCT[]Defines the Z-order, i.e. stacking order, of the road segment.
prohibited_transitionsSTRUCT[]Defines 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_surfaceSTRUCT[]Defines the surface material on a road such as paved, asphalt, or unpaved.
road_flagsSTRUCT[]Additional properties relevant to roads such as is_bridge or is_under_construction.
speed_limitsSTRUCT[]Defines the speed limit of the road segment.
width_rulesSTRUCT[]Defines the width of the road segment for rendering.
destinationsSTRUCT[]Describes the transitions from one segment to another on the way to a specified location. This data is primarily used for routing.

Subtypes

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

Class and subclass feature counts
subtypeclasssubclassFeature count, August 2024 release
rail1,894,140
roadbridleway94,649
roadcyclewaycycle_crossing44,280
roadcycleway1,174,065
roadfootwaycrosswalk1,756,875
roadfootwaysidewalk2,810,219
roadfootway14,203,339
roadliving_street2,999,247
roadmotorwaylink623,142
roadmotorway423,706
roadpath12,531,561
roadpedestrian4,461,28
roadprimarylink466,752
roadprimary6,460,325
roadresidential123,137,670
roadsecondarylink364,836
roadsecondary10,362,384
roadservicealley1,512,815
roadservicedriveway14,792,664
roadserviceparking_aisle5,877,422
roadservice31,361,555
roadsteps1,649,650
roadtertiarylink277,297
roadtertiary19,033,943
roadtrack23,639,360
roadtrunklink530,490
roadtrunk3,321,652
roadunclassified28,555,304
roadunknown398,522
water27,198

Data access and retrieval

The latest transportation data can be obtained from AWS or Azure as GeoParquet files at the following locations.

ProviderLocation
Amazon S3
s3://overturemaps-us-west-2/release/2024-09-18.0/theme=transportation/type=segment/
Azure Blob Storage
https://overturemapswestus2.blob.core.windows.net/release/2024-09-18.0/theme=transportation/type=segment/

Data usage guidelines

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 places data and output a GeoJSON file.

To quickly view and download modest amounts of data, you can use the Overture Maps Explorer website.

To download data: Pan to the area you are interested in, turn off the other layers, then click Download Visible.

This will download the area visible on your screen.

Data manipulation and analysis

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/2024-09-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 v2024_09_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 orginal 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 set up 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.

Schema reference