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.
- Blanket denial of access.
- Private access, deliveries OK during business hours.
- No motor vehicles except to destination.
- No trucks with ≥ 5 axles.
---
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
---
id: access-restrictions-segment-private-with-deliveries
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
- access_type: allowed
when: { recognized: [as_private] }
- access_type: allowed
when:
using: [to_deliver]
during: Mo-Fr 08:30-16:30
---
id: access-restrictions-segment-motor-vehicles-destination-only
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
when: { mode: [motor_vehicle] }
- access_type: allowed
when: { using: [at_destination] }
---
id: access-restrictions-segment-axle-limit
type: Feature
geometry:
type: LineString
coordinates:
- [0, 0]
- [0, 1]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: motorway
access_restrictions:
- access_type: denied
when:
mode: [hgv]
vehicle:
- dimension: axle_count
comparison: greater_than_equal
value: 5
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.
- Simple restriction.
- Via restriction
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
Source segment
---
id: overture:transportation:example:via-turn-restriction-source
type: Feature
geometry:
type: LineString
coordinates:
- [-71.1100226929593, 42.30156668552357]
- [-71.11055493812631, 42.30157222996385]
- [-71.11102971081017, 42.30157407811038]
- [-71.11143701579662, 42.30156114108277]
- [-71.11197425857047, 42.30152602627953]
- [-71.11234408150312, 42.30149091145671]
- [-71.1126589307566, 42.30147612626226]
- [-71.11301376086777, 42.301494607754876]
- [-71.11320616874515, 42.301516785538524]
properties:
theme: transportation
type: segment
version: 5
subtype: road
class: primary
connectors:
- connector_id: overture:transportation:example:via-turn-restriction-connector1
at: 0
- connector_id: overture:transportation:example:via-turn-restriction-connector2
at: 1
names:
primary: Arborway
prohibited_transitions:
- sequence:
- segment_id: overture:transportation:example:via-turn-restriction-target
connector_id: overture:transportation:example:via-turn-restriction-connector2
- segment_id: overture:transportation:example:via-turn-restriction-via
connector_id: overture:transportation:example:via-turn-restriction-connector1
final_heading: forward
when:
heading: forward
during: Mo-Fr 06:00-09:00, 15:00-19:00
road_surface:
- value: paved
Connector 1
---
id: overture:transportation:example:via-turn-restriction-connector1
type: Feature
geometry:
type: Point
coordinates: [-71.11234408150312, 42.30149091145671]
properties:
theme: transportation
type: connector
version: 1
Via segment
---
id: overture:transportation:example:simple-road2
type: Feature
geometry:
type: LineString
coordinates:
- [-71.11213418200086, 42.3017182333833]
- [-71.11234408150312, 42.30149091145671]
- [-71.11248901211202, 42.3013264259736]
- [-71.11283634581244, 42.30093831245662]
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
names:
primary: Washington Street
road_surface:
- value: paved
Connector 2
---
id: overture:transportation:example:via-turn-restriction-connector2
type: Feature
geometry:
type: Point
coordinates: [-71.11248901211202, 42.3013264259736]
properties:
theme: transportation
type: connector
version: 1
Target segment
---
id: overture:transportation:example:turn-restriction-target
type: Feature
geometry:
type: LineString
coordinates:
- [-71.11325364601365, 42.301374477956756]
- [-71.11278137213321, 42.3013264259736]
- [-71.11248901211202, 42.3013264259736]
- [-71.11157195119078, 42.30139295947919]
- [-71.1109997251666, 42.301428074356636]
- [-71.11058492376937, 42.30143177065813]
- [-71.11002519176327, 42.301415137298676]
properties:
theme: transportation
type: segment
version: 5
subtype: road
class: primary
connectors:
- connector_id: overture:transportation:example:via-turn-restriction-connector1
at: 0
- connector_id: overture:transportation:example:via-turn-restriction-connector2
at: 1
names:
primary: Arborway
road_surface:
- value: paved
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.
- Simple speed limit
- Different speed limit for northbound trucks
- Variable speed corridor
---
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
---
id: speed-limits-variable-max
type: Feature
geometry:
type: LineString
coordinates:
- [0, 0]
- [0, 1]
properties:
theme: transportation
type: segment
version: 2
subtype: road
class: secondary
speed_limits:
- max_speed: {value: 70, unit: "mph"}
- when:
mode: [hgv]
heading: forward
max_speed: {value: 65, unit: "mph"}
---
id: speed-limits-variable-max
type: Feature
geometry:
type: LineString
coordinates:
- [-123.12895930023527, 50.007761789070344]
- [-123.12637500433082, 50.00945836227345]
- [-123.12506896231434, 50.011762034223324]
- [-123.12415195409014, 50.01351203677902]
properties:
theme: transportation
type: segment
version: 1
subtype: road
class: motorway
speed_limits:
- max_speed:
value: 100
unit: km/h
is_max_speed_variable: true