Skip to main content

Roads

In the Overture transportation theme, a road is any kind of road, street, or path, including a dedicated paths for walking or cycling. (Railways and waterways are separate subtypes in the transportation schema.) Road segments comprise the majority of ground-based transportation segments. Roads are modeled using segment features with the subtype property value set to the value road.

Geometry and granularity

A road segment's geometry is a representation of the road which, in many cases, approximates the physical centerline of the section of road being modeled. Road segments support modeling the road network at a range of granularities. For example, a single road segment can represent:

  • bidirectional street including all of its sidewalks
  • sidewalk by itself
  • one-way street or one direction of a dual carriageway
  • dedicated cycleway
  • hiking path

Class

The class property of a road specifies its general purpose of use and its relative importance within the transportation network. The class property also helps establish reasonable default values. For example, the class sidewalk implies that the default access restrictions for the segment allow access for the travel mode foot and deny access to all other travel modes. Unlike many road segment properties, a road segment's class property does not support geometric scoping (linear referencing). Consequently whenever a linear range of real-world road makes a class transition (for example, between secondary and residential), the Overture transportation segmentation algorithm will generate a segment split.

Every road segment has a class. If the class property is missing from a road segment, the default value unknown is assumed. The unknown road class is meant to be a temporary value until a more specific class is known.

Like many aspects of Overture transportation schema, class is heavily inspired by OpenStreetMap. In this case, it is similar to, but not the same as, OSM's highway=* tag.

Subclass

The subclass property refines the descriptions of segments by:

  • clearly specifying the usage of a length of road, and using linear referencing instead of further segmentation to pinpoint a change in how the road is used
  • properly classifying detailed information from OpenStreetMap

Subclasses require non-overlapping geometries, which will make it easier for routing engines to consume our road data and generate turn-by-turn directions. The class and subclass structures allow us to capture more information about roads from our data sources. For example, we’ve been able to move more than 30 million “unknown” road segments from OSM into subclasses, laying the groundwork for richer and more detailed map displays with Overture data.

Flags

The road_flags property of a segment is a set of named flag values indicating the presence or absence of simple physical characteristics.

For example, a road segment with road_flags = [is_link, is_under_construction] is a link segment that is physically under construction.

Like many road segment properties, the road_flags property supports geometric scoping. Consequently, the applicable road flags may vary along different sub-ranges of a road segment's geometry.

Here's how classes, subclasses, and flags are modeled in the Overture schema:

class: footway
subclass_rules:
- value: sidewalk
between: [0, 0.6]
- value: crosswalk
between: [0.6, 1.0]
road_flags:
- values: [is_bridge]
between: [0.2, 0.3]
- values: [is_under_construction]
between: [0.3, 0.5]

class: service
subclass_rules:
- value: driveway
between: [0, 0.5]

class: primary
subclass: link
subclass_rules:
- value: link

Surface

The road_surface property of a road indicates its physical surface. If omitted, a reasonable default value should be assumed based on the class and subclass.

Like many road segment properties, the road_surface property supports geometric scoping (linear referencing). Consequently, the effective road surface may vary along different sub-ranges of a road segment's geometry.

Restrictions

Access restrictions

Access restrictions on a road segment specify who is allowed to use the road, and under what circumstances.

Every road segment has an implied set of access restrictions defined by its road class and local rules, norms, and customs. (The Overture transportation schema does not specify these implied access restrictions, which are left to the specific application to resolve.)

The implied access restrictions may be modified for the road segment as a whole by providing an explicit value for the property access_restrictions.

It is technically possible to specify a blanket access grant or refusal of access applying to everyone and everything; but where, as is typical, a more precise outcome is needed, one or more rules will be used to specify access restrictions. As with all rule-based properties, if no rule matches the specific facts, then the default restrictions for the road class govern.

---
id: access-restrictions-segment-blanket
type: Feature
geometry:
type: LineString
coordinates:
- [0, 0]
- [0, 1]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: residential
access_restrictions:
- access_type: denied

Turn restrictions

Turn restrictions on a road segment limit the transitions which are allowed from that segment into other physically connected segments.

Every road segment has an implied set of allowed transitions defined by its access restrictions as well as local rules, norms, and customs. An example of a transition restriction implied by an access restriction, if the segment can only be used along the forward heading, then it is implied that no transitions are allowed to any connected segments if travelling along the backward heading. An example of a transition restriction implied by a local rule or norm would be a blanket prohibition on U-turns in a given jurisdiction. (The Overture transportation schema does not specify these local rules, norms, and customs, which are left to the specific application to resolve.)

Overture takes a permissive-by-default approach to transition restrictions. By default, all implied transitions are allowed. The set of allowed transitions may be reduced by adding explicit transition restrictions in the prohibited_transitions property.

Turn restrictions come in two flavors: simple and via: a simple turn restriction allows a simple regulation to be stated, such as "No right turn onto Elm Street"; a via restriction covers more elaborate cases where the sequence of maneuvers is important.

A simple transition restriction prohibiting a right turn.A simple transition restriction prohibiting a right turn.

Prohibited right turn from "source" to "target" segment at connector 2.

Source segment
---
id: overture:transportation:example:simple-turn-restriction-source
type: Feature
geometry:
type: LineString
coordinates:
- [-113.57822030759499, 50.01868388494378]
- [-113.57831482025354, 50.018860947117304]
- [-113.57851814418316, 50.01923724443006]
properties:
theme: transportation
type: segment
version: 5
subtype: road
class: secondary
connectors:
- connector_id: overture:transportation:example:via-turn-restriction-connector1
at: 0
- connector_id: overture:transportation:example:via-turn-restriction-connector2
at: 1
prohibited_transitions:
- sequence:
- segment_id: overture:transportation:example:simple-turn-restriction-target
connector_id: overture:transportation:example:simple-turn-restriction-connector2
final_heading: forward
when: {heading: forward}
Connector 1

This connector is not an important part of the example, since it does not participate in the turn restriction, but it is included to bring real-world context to the example.

---
id: overture:transportation:example:simple-turn-restriction-connector1
type: Feature
geometry:
type: Point
coordinates: [-113.57831482025354, 50.018860947117304]
properties:
theme: transportation
type: connector
version: 0
Exit segment

This segment is not an important part of the example, since all implied transitions are allowed on it. We include it to bring real-world context to the example.

---
id: overture:transportation:example:simple-turn-restriction-exit
type: Feature
geometry:
type: LineString
coordinates:
- [-113.57831482025354, 50.018860947117304]
- [-113.5783121688577, 50.019016827708754]
- [-113.57829228338763, 50.019079861246865]
- [-113.57826444373009, 50.019121599625294]
- [-113.57816369068271, 50.01919400284882]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: secondary
connectors:
- connector_id: overture:transportation:example:via-turn-restriction-connector1
at: 0
- connector_id: overture:transportation:example:via-turn-restriction-connector2
at: 1
Connector 2

The right turn from the source segment (forward heading) to the target segment (forward heading) is prohibited at this connector.

---
id: overture:transportation:example:simple-turn-restriction-connector2
type: Feature
geometry:
type: Point
coordinates: [-113.57851814418316, 50.01923724443006]
properties:
theme: transportation
type: connector
version: 1
Target segment

Traffic heading forward on the source segment may not enter this segment heading forward, i.e. the right turn from the source segment to this segment is prohibited.

---
id: overture:transportation:example:simple-turn-restriction-target
type: Feature
geometry:
type: LineString
coordinates:
- [-113.57851814418316, 50.01923724443006]
- [-113.57837460847787, 50.01919574268962]
- [-113.57812342099429, 50.01919343703648]
- [-113.57803729957116, 50.01923263312719]
- [-113.57766410673773, 50.01923263312719]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: secondary
connectors:
- connector_id: overture:transportation:example:via-turn-restriction-connector1
at: 0
- connector_id: overture:transportation:example:via-turn-restriction-connector2
at: 1
Connector 3

This connector is not an important part of the example, since it does not participate in the turn restriction, but it is included to bring real-world context to the example.

---
id: overture:transportation:example:simple-turn-restriction-connector3
type: Feature
geometry:
type: Point
coordinates: [-113.57816369068271, 50.01919400284882]
properties:
theme: transportation
type: connector
version: 1

Speed limits

Speed limits restrict the speed at which travel is permitted on a road. Typically speed limits specify maximum allowed speeds, but the Overture also allows minimum speed limits to be set and variable speed corridors to be indicated.

Every road segment has an implied speed limit or set of speed limits defined by its road class and local rules, norms, and customs. Note: as with access and turn restrictions, the Overture transportation schema does not attempt to specify these implied speed limits.

The implied speed limits may be configured for the whole road segment by providing an explicit value for the property speed_limits.

As with access restrictions and turn restrictions, speed limits can be specified using rules.

---
id: speed-limits-simple
type: Feature
geometry:
type: LineString
coordinates:
- [-123.09348187774302, 49.280278741717865]
- [-123.0895720621171, 49.280195795155265]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: residential
speed_limits:
- max_speed:
value: 30
unit: km/h