From 729366b62a6d9de7c7f944421e8d28a100f743d5 Mon Sep 17 00:00:00 2001 From: Victor Schappert Date: Mon, 19 Jun 2023 11:00:42 -0700 Subject: [PATCH] Write thorough docs for Roads --- .../docs/reference/transportation/segment.mdx | 15 +- .../themes/transportation/_roads/index.mdx | 11 - .../themes/transportation/_roads/lanes.mdx | 5 - .../docs/themes/transportation/index.mdx | 21 +- .../docs/themes/transportation/roads.mdx | 606 ++++++++++++++++++ .../transportation/shape-connectivity.mdx | 4 +- docusaurus/sidebars.js | 14 +- .../examples/turn-restrictions-example.png | Bin 29346 -> 0 bytes .../static/img/transportation/centerline.svg | 3 + .../static/img/transportation/lane-blocks.svg | 3 + .../transportation/lane-number-01-west.svg | 3 + .../transportation/lane-number-02-north.svg | 3 + .../transportation/lane-number-03-east.svg | 3 + .../transportation/lane-number-04-south.svg | 3 + .../transportation/turn-restriction-01.svg | 3 + .../transportation/turn-restriction-02.svg | 3 + .../access-restriction-01-blanket.yaml | 17 + ...estriction-02-private-with-deliveries.yaml | 22 + ...on-03-motor-vehicles-destination-only.yaml | 19 + .../access-restriction-04-axle-limit.yaml | 21 + .../lanes-resolution-connector.yaml | 11 + .../lanes-resolution-segment-01.yaml | 26 + .../lanes-resolution-segment-02.yaml | 19 + .../docusaurus/speed-limits-01-simple.yaml | 18 + .../speed-limits-02-directional.yaml | 23 + .../speed-limits-03-variable-max.yaml | 21 + .../turn-restriction-01-connector1.yaml | 11 + .../turn-restriction-01-connector2.yaml | 11 + .../turn-restriction-01-connector3.yaml | 11 + .../docusaurus/turn-restriction-01-exit.yaml | 20 + .../turn-restriction-01-source.yaml | 25 + .../turn-restriction-01-target.yaml | 20 + ...ml => turn-restriction-02-connector1.yaml} | 3 +- ...ml => turn-restriction-02-connector2.yaml} | 3 +- ...e.yaml => turn-restriction-02-source.yaml} | 12 +- ...t.yaml => turn-restriction-02-target.yaml} | 2 +- ...-via.yaml => turn-restriction-02-via.yaml} | 4 +- 37 files changed, 966 insertions(+), 53 deletions(-) delete mode 100644 docusaurus/docs/themes/transportation/_roads/index.mdx delete mode 100644 docusaurus/docs/themes/transportation/_roads/lanes.mdx create mode 100644 docusaurus/docs/themes/transportation/roads.mdx delete mode 100644 docusaurus/static/examples/turn-restrictions-example.png create mode 100644 docusaurus/static/img/transportation/centerline.svg create mode 100644 docusaurus/static/img/transportation/lane-blocks.svg create mode 100644 docusaurus/static/img/transportation/lane-number-01-west.svg create mode 100644 docusaurus/static/img/transportation/lane-number-02-north.svg create mode 100644 docusaurus/static/img/transportation/lane-number-03-east.svg create mode 100644 docusaurus/static/img/transportation/lane-number-04-south.svg create mode 100644 docusaurus/static/img/transportation/turn-restriction-01.svg create mode 100644 docusaurus/static/img/transportation/turn-restriction-02.svg create mode 100644 examples/transportation/docusaurus/access-restriction-01-blanket.yaml create mode 100644 examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml create mode 100644 examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml create mode 100644 examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml create mode 100644 examples/transportation/docusaurus/lanes-resolution-connector.yaml create mode 100644 examples/transportation/docusaurus/lanes-resolution-segment-01.yaml create mode 100644 examples/transportation/docusaurus/lanes-resolution-segment-02.yaml create mode 100644 examples/transportation/docusaurus/speed-limits-01-simple.yaml create mode 100644 examples/transportation/docusaurus/speed-limits-02-directional.yaml create mode 100644 examples/transportation/docusaurus/speed-limits-03-variable-max.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-connector1.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-connector2.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-connector3.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-exit.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-source.yaml create mode 100644 examples/transportation/docusaurus/turn-restriction-01-target.yaml rename examples/transportation/docusaurus/{turn-restriction-connector1.yaml => turn-restriction-02-connector1.yaml} (71%) rename examples/transportation/docusaurus/{turn-restriction-connector2.yaml => turn-restriction-02-connector2.yaml} (72%) rename examples/transportation/docusaurus/{turn-restriction-source.yaml => turn-restriction-02-source.yaml} (55%) rename examples/transportation/docusaurus/{turn-restriction-target.yaml => turn-restriction-02-target.yaml} (87%) rename examples/transportation/docusaurus/{turn-restriction-via.yaml => turn-restriction-02-via.yaml} (78%) diff --git a/docusaurus/docs/reference/transportation/segment.mdx b/docusaurus/docs/reference/transportation/segment.mdx index 72040d67..69fd2f70 100644 --- a/docusaurus/docs/reference/transportation/segment.mdx +++ b/docusaurus/docs/reference/transportation/segment.mdx @@ -6,11 +6,11 @@ import SegmentSchema from '!!raw-loader!@site/docs/_schema/transportation/segmen import ExampleSimpleRoad from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/simple-road.yaml'; import ExampleLanes from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-hov.yaml'; import ExampleAccessRestriction from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction.yaml'; -import ExampleTurnRestrictionSource from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-source.yaml'; -import ExampleTurnRestrictionTarget from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-target.yaml'; -import ExampleTurnRestrictionVia from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-via.yaml'; -import ExampleTurnRestrictionConnector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-connector1.yaml'; -import ExampleTurnRestrictionConnector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-connector2.yaml'; +import ExampleTurnRestrictionSource from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; +import ExampleTurnRestrictionTarget from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; +import ExampleTurnRestrictionVia from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; +import ExampleTurnRestrictionConnector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; +import ExampleTurnRestrictionConnector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -63,7 +63,8 @@ A segment may have one of three possible sub-types. A `road` segment represents a section of any kind of road, street, or -path, including a dedicated path for walking or cycling). +path, including a dedicated path for walking or cycling (but excluding +a railway). +
  • + +

    + +**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](roads) page. + +

    + +
  • + ## Schema Reference diff --git a/docusaurus/docs/themes/transportation/roads.mdx b/docusaurus/docs/themes/transportation/roads.mdx new file mode 100644 index 00000000..fb52e5c4 --- /dev/null +++ b/docusaurus/docs/themes/transportation/roads.mdx @@ -0,0 +1,606 @@ +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ExampleAccessRestrictionsBlanketDeny from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml'; +import ExampleAccessRestrictionPrivateAccessWithDeliveries from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml'; +import ExampleAccessRestrictionMotorVehiclesDestinationOnly from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml'; +import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml'; +import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml'; +import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml'; +import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml'; +import ExampleLanesResolutionConnector from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-connector.yaml'; +import ExampleLanesResolutionSegment01 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-segment-01.yaml'; +import ExampleLanesResolutionSegment02 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-segment-02.yaml'; +import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml'; +import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml'; +import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml'; +import ExampleTurnRestriction1Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml'; +import ExampleTurnRestriction1Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; +import ExampleTurnRestriction1Connector3 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; +import ExampleTurnRestriction2Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; +import ExampleTurnRestriction2Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; +import ExampleTurnRestriction2Via from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; +import ExampleTurnRestriction2Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; +import ExampleTurnRestriction2Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; + + +# Roads + +In the Overture Transportation theme, a road is any kind of road, +street, or path, including a dedicated path for walking or cycling +(but excluding a railway). Road segments comprise the majority of +ground-based transportation segments. Roads are modeled using +[Segment](/reference/transportation/segment) features with the `subType` +property value set to the value `road`. + +## Granularity and geometry + +Road segments support modeling the road network at a range of +granularities. For example, a single road segment can represent: + +- A bidirectional street including all of its lanes and sidewalks. +- A sidewalk by itself. +- A one-way street or one direction of a dual carriageway. +- A single lane or single section of a multi-lane highway. +- A dedicated cycleway. +- A hiking path. + +# Centerline and width + +A road segment's geometry represents the centerline of the section of +road being modeled by the segment, with exactly half of the road's width +occurring on each side of the segment at any given point along the +segment geometry. + +
    + +
    + +![Road segment geometry as centerline](/img/transportation/centerline.svg) + +
    + +*A road segment represents the centerline of a path, with half the width on each side.* + +
    +
    + +
    + +If the exact width of a road segment is known, it will be specified in +the segment's `width` property (as a quantity in meters). If the exact +width is not known, the road geometry still represents the centerline, +but the data consumer will need to estimate the width if it is needed. + +## Basic Properties + +### Road class + +The `road.class` property of a road specifies its general purpose of use +and its relative importance within the transportation network. The +`road.class` property also helps establish reasonable default values. +For example, the class `footway` implies that the default +[access restrictions](#access-restrictions) for the segment allow access +for the [travel mode](travel-modes) `foot` and deny access to all other +travel modes. + +Unlike many road segment properties, a road segment's `road.class` +property does not support +[geometric scoping](scoping-rules#geometric-scoping-linear-referencing) +(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](shape-connectivity#segmentation) algorithm will generate +a segment split. + +Every road segment has a class. If the `road.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, +the class tag is heavily inspired by OpenStreetMap. In this +case, it is similar to, but not the same as, +OSM's highway=* tag. + +

    + +### Surface + +The `road.surface` property of a road indicates its physical surface. If +omitted, a reasonable default value should be assumed based on the +`road.class`. + +Like many road segment properties, the `road.surface` property supports +[geometric scoping](scoping-rules#geometric-scoping-linear-referencing) +(linear referencing). Consequently, the effective road surface may vary +along different sub-ranges of a road segment's geometry. + +### Flags + +The `road.flags` property of a road is a set of named flag values +indicating the presence or absence of simple physical characteristics. + +For example, a road segment with +`road.flags = [isLink, isUnderConstruction]` is a link segment, and is +physically under construction. + +Like many road segment properties, the `road.flags` property supports +[geometric scoping](scoping-rules#geometric-scoping-linear-referencing) +(linear referencing). Consequently, the applicable road flags 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](#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 +`road.restrictions.access`. (Access restrictions may also be specified +at the level of individual [lanes](#lanes), as explained elsewhere.) + +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](scoping-rules#rules-and-rule-based-properties) 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. + + + + +{ ExampleAccessRestrictionsBlanketDeny } + + + + + +{ ExampleAccessRestrictionPrivateAccessWithDeliveries } + + + + + +{ ExampleAccessRestrictionMotorVehiclesDestinationOnly } + + + + + +{ ExampleAccessRestrictionAxleLimit } + + + + +### Turn restrictions + +Turn restrictions on a road segment limit the transitions which are +allowed from that segment into other +[physically connected](shape-connectivity#physical-connectivity) +segments segments. + +Every road segment has an *implied* set of allowed transitions +defined by its [directionality](shape-connectivity#direction-and-directionality), +physical connections to other segments, the directionality of the +physically connected segments, as well as local rules, norms, and +customs. (The Overture Transportation schema does not specify these +implied transitions, 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 `road.restrictions.turns` 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](/img/transportation/turn-restriction-01.svg) + +
    + +*Prohibited right turn from "source" to "target" segment at connector 2.* + +
    + +
    + +
    + +
    + +
    +Source segment +{ ExampleTurnRestriction1Source } +
    + +
    +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.* + +{ ExampleTurnRestriction1Connector1 } +
    + +
    +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.* + +{ ExampleTurnRestriction1Exit } + +
    + +
    +Connector 2 + +*The right turn from the source segment (`forward` direction) to the +target segment (`forward` direction) is prohibited at this connector.* + +{ ExampleTurnRestriction1Connector2 } +
    + +
    +Target segment + +*Traffic proceeding `forward` on the source segment may not enter this +segment travelling `forward`, i.e. the right turn from the source +segment to this segment is prohibited.* + +{ ExampleTurnRestriction1Source } +
    + +
    +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.* + +{ ExampleTurnRestriction1Connector3 } +
    + + +
    + +
    + + + + + +
    + +
    + +![A via restriction](/img/transportation/turn-restriction-02.svg) + +
    + +*Prohibited transition from "source" to "target" through `via` segment.* + +
    + +
    + +
    + +
    + +
    +Source segment +{ ExampleTurnRestriction2Source } +
    + +
    +Connector 1 +{ ExampleTurnRestriction2Connector1 } +
    + +
    +Via segment +{ ExampleTurnRestriction2Via } +
    + +
    +Connector 2 +{ ExampleTurnRestriction2Connector2 } +
    + +
    +Target segment +{ ExampleTurnRestriction2Target } +
    + +
    + +
    + + + + +### 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](#road-class) and local rules, norms, and +customs. (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 +`road.restrictions.speedLimits`. (Granular speed limits can also be +specified at the level of individual [lanes](#lanes), as explained +elsewhere.) + +As with access restrictions and turn restrictions, speed limits can be +specified using [rules](scoping-rules#rules-and-rule-based-properties). + + + + +{ ExampleSpeedLimitsSimple } + + + + + + + +🐞 *There is an open issue with the schema that results in this example +not being fully functional in the current release. We are working to +correct it in an upcoming release.* 🐞 + +{ ExampleSpeedLimitsDirectional } + + + + + +{ ExampleSpeedLimitsVariableMax } + + + + +## Lanes + +A road may optionally carry a `road.lanes` property which specifies the +road's *lane block*. The lane block is a list of lane objects describing +the physical structure and rules applicable to the road's lanes at a +granularity sufficient to support the navigation use case. More +generally, instead of directly carrying the lane block, `road.lanes` may +instead contain a list of geometrically and/or temporally scoped +[rules](scoping-rules) for resolving the lane block applicable at any +given place and/or time along the segment. + + + +### Use cases for lanes + +Many Transportation [use cases](/themes/transportation#use-cases) can be +solved either entirely or in large part without examining the lane +structure of the road network. For example, optimal route calculation +can be entirely solved without lane-level information, as can most 2D +map rendering problems. Lane information is most interesting for +granular turn-by-turn or maneuver-by-maneuver navigation applications. + +### Default lane structure + +If the `road.lanes` property is omitted from a road segment, reasonable +default values should be assumed based on `road.class` and the overall +segment [directionality](shape-connectivity#direction-and-directionality). +For example, for a stock two-way road segment of class `primary`, a +reasonable assumption is two lanes, one `forward` and one `backward`. + +### Lane numbering + +The number of lanes at a given place/time on a road segment is equal to +the length of the resolved lanes list. + +Each entry in the resolved lanes list represents one lane on the road. +Order is important. The list captures the lanes in left-to-right order +as they would be observed by a person standing on the physical road +being modeled, facing in the [direction](shape-connectivity#direction-and-directionality) +of the segment geometry. The leftmost lane has index `0`; the rightmost +lane, assuming there are `N` total lanes, has index `N-1`. The example +below illustrates how lane numbering works with example two-lane +segments oriented in the north, west, east, and south directions, +respectively. + +
    + +
    + +
    + +![West-oriented road segment with two lanes](/img/transportation/lane-number-01-west.svg) + +
    + +
    + +![North-oriented road segment with two lanes](/img/transportation/lane-number-02-north.svg) + +
    + +
    + +![East-oriented road segment with two lanes](/img/transportation/lane-number-03-east.svg) + +
    + +
    + +![East-oriented road segment with two lanes](/img/transportation/lane-number-04-south.svg) + +
    + +
    + +
    + + +
    + +
    + +*How lanes are numbered for examples segments with geometry directions due west, north, east, and south.* + +
    + +
    + +
    + +### Lane directionality + +Like the segment as a whole, each lane within a segment has a +directionality, documenting which travel directions are allowed within +the lane, with reference to the +[direction of the segment](shape-connectivity#direction-and-directionality). +Lane directionality is specified by the lane object's `directionality` +property, and the allowed values are the same as for the segment as a +whole. + +The `directionality` property is a mandatory property for lanes, and is +the only mandatory property. + +### Lane restrictions + +Like the segment a whole, each lane within a lane block can have its own +restrictions, for example [access restrictions](#access-restrictions), +[turn restrictions](#turn-restrictions), and +[speed limits](#speed-limits). + +Lane-level restrictions reuse the same concepts as segment-level +restrictions and are typically phrased in the same way, except that the +restriction is stipulated on an individual lane object rather than for +the segment's `road` property as a whole. + +### Lane connectivity + +Lane connectivity refers to the maneuvers available to navigate from the +lane the traveller is currently occupying to a connected lane within the +next lane block in the traveller's current travel direction. Lane +connectivity is a necessary element for granular turn-by-turn +navigation instructions. + +The Overture Transportation schema does not currently support lane +connectivity, but it is something we are actively working on and hoping +to release soon. + +### Resolving the applicable lane block + +If a segment's `road.lanes` property contains a single static block of +lanes, that block defines the lane structure for the whole of the lane +geometry and all times. If, instead, `road.lanes` contains a list of +lane rules, the *determining rule* for any given location and time must +be chosen using the +[rule evaluation algorithm](scoping-rules#rule-evaluation-algorithm) +for rule-based properties. Once the determining rule for a certain scope +is known, its rule block defines the lane structure. + +The example below illustrates lane block resolution for two connected +segments. + +- The blue shaded, or southwesterly, segment is + [oriented](shape-connectivity#direction-and-directionality) toward + the north-east. It has two geometrically-scoped lane resolution + rules. + - The first rule, applying to the first two thirds of the + segment's length, establishes three lanes: one going + `backward` (SW), and two `forward` (NE). + - The second rule, applying to the last third of the segment, + establishes two lanes, one in either direction. +- The orange shaded, or northeasterly, segment is oriented due west. + It has a single static lane block that applies to the whole segment + geometry at all times. + + + + +
    + +
    + +![A segment with two geometrically-scoped lane blocks connected to a segment oriented in the opposite direction](/img/transportation/lane-blocks.svg) + +
    + +*A segment with two [geometrically-scoped](scoping-rules#geometric-scoping-linear-referencing) +lane blocks connected to a segment oriented in the opposite direction.* + +
    + +
    + +
    + +
    + + + +{ ExampleLanesResolutionSegment01 } + + + + + +{ ExampleLanesResolutionConnector } + + + + + + +{ ExampleLanesResolutionSegment02 } + + + +
    diff --git a/docusaurus/docs/themes/transportation/shape-connectivity.mdx b/docusaurus/docs/themes/transportation/shape-connectivity.mdx index 09113efd..6032c07d 100644 --- a/docusaurus/docs/themes/transportation/shape-connectivity.mdx +++ b/docusaurus/docs/themes/transportation/shape-connectivity.mdx @@ -169,7 +169,7 @@ are possible: |-|-| | `forward` | Travel is only allowed in the `forward` direction. | | `backward` | Travel is only allowed in the `backward` direction. | -| `bothWays` | Travel is allowed both `forward` and `backward`. | +| `bothWays` | Travel is allowed both `forward` and `backward` at the same time. | | `alternating` | Travel is one-way and changes between `forward` and `backward` constantly. | | `reversible` | Travel is one-way and changes between `forward` and `backward` infrequently. | @@ -207,7 +207,7 @@ The `subType` property may be one of `road`, `rail`, or `water` but only `road` is currently well defined. A `road` segment models any kind of road, street, or trail, including a dedicated path for walking, cycling, and like activities. For more information about `road` segments, see -**TODO:Link to roads**. +the page on [Roads](roads). ### Level (Z-order) diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 071cb1f3..9258e663 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -67,19 +67,7 @@ const sidebars = { items: [ 'themes/transportation/shape-connectivity', 'themes/transportation/scoping-rules', - //'themes/transportation/travel-modes', - /*{ - type: 'category', - label: 'Roads', - link: { - type: 'doc', - id: 'themes/transportation/roads/index' - }, - collapsed: true, - items: [ - 'themes/transportation/roads/lanes' - ], - }*/ + 'themes/transportation/roads', ] } ] diff --git a/docusaurus/static/examples/turn-restrictions-example.png b/docusaurus/static/examples/turn-restrictions-example.png deleted file mode 100644 index 99e6b5558bfe38e1209e653f0b9c3b862401f148..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29346 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 diff --git a/docusaurus/static/img/transportation/centerline.svg b/docusaurus/static/img/transportation/centerline.svg new file mode 100644 index 00000000..069e5306 --- /dev/null +++ b/docusaurus/static/img/transportation/centerline.svg @@ -0,0 +1,3 @@ + + +
    road centerline
    road centerline
    width
    width
    width
    width
    2
    2
    (
    (
    )
    )
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/lane-blocks.svg b/docusaurus/static/img/transportation/lane-blocks.svg new file mode 100644 index 00000000..83b57adb --- /dev/null +++ b/docusaurus/static/img/transportation/lane-blocks.svg @@ -0,0 +1,3 @@ + + +
    Segment 1
    Segment 1
    Segment 2
    Segment 2
    Lane Block 1
    (Segment 1)
    Lane Block 1<br>(Segment 1)
    Lane Block 2
    (Segment 1)
    Lane Block 2<br>(Segment 1)
    lanes[0]
    lanes[0]
    lanes[1]
    lanes[1]
    lanes[2]
    lanes[2]
    lanes[1]
    lanes[1]
    lanes[0]
    lanes[0]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/lane-number-01-west.svg b/docusaurus/static/img/transportation/lane-number-01-west.svg new file mode 100644 index 00000000..6dea0a17 --- /dev/null +++ b/docusaurus/static/img/transportation/lane-number-01-west.svg @@ -0,0 +1,3 @@ + + +
    lanes[0]
    lanes[0]
    lanes[1]
    lanes[1]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/lane-number-02-north.svg b/docusaurus/static/img/transportation/lane-number-02-north.svg new file mode 100644 index 00000000..662f754b --- /dev/null +++ b/docusaurus/static/img/transportation/lane-number-02-north.svg @@ -0,0 +1,3 @@ + + +
    lanes[0]
    lanes[0]
    lanes[1]
    lanes[1]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/lane-number-03-east.svg b/docusaurus/static/img/transportation/lane-number-03-east.svg new file mode 100644 index 00000000..dae0fadf --- /dev/null +++ b/docusaurus/static/img/transportation/lane-number-03-east.svg @@ -0,0 +1,3 @@ + + +
    lanes[0]
    lanes[0]
    lanes[1]
    lanes[1]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/lane-number-04-south.svg b/docusaurus/static/img/transportation/lane-number-04-south.svg new file mode 100644 index 00000000..a7d005de --- /dev/null +++ b/docusaurus/static/img/transportation/lane-number-04-south.svg @@ -0,0 +1,3 @@ + + +
    lanes[0]
    lanes[0]
    lanes[1]
    lanes[1]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/turn-restriction-01.svg b/docusaurus/static/img/transportation/turn-restriction-01.svg new file mode 100644 index 00000000..e7c0a57a --- /dev/null +++ b/docusaurus/static/img/transportation/turn-restriction-01.svg @@ -0,0 +1,3 @@ + + +
    1
    1
    3
    3
    2
    2
    target segment
    target segment
    source segment
    source segment
    right turn prohibited
    right turn prohibited
    exit segment
    (allowed)
    [Not supported by viewer]
    \ No newline at end of file diff --git a/docusaurus/static/img/transportation/turn-restriction-02.svg b/docusaurus/static/img/transportation/turn-restriction-02.svg new file mode 100644 index 00000000..0f1c9c0e --- /dev/null +++ b/docusaurus/static/img/transportation/turn-restriction-02.svg @@ -0,0 +1,3 @@ + + +
    1
    1
    2
    2
    source segment
    source segment
    via segment
    via segment
    target segment
    target segment
    \ No newline at end of file diff --git a/examples/transportation/docusaurus/access-restriction-01-blanket.yaml b/examples/transportation/docusaurus/access-restriction-01-blanket.yaml new file mode 100644 index 00000000..6a0a07b0 --- /dev/null +++ b/examples/transportation/docusaurus/access-restriction-01-blanket.yaml @@ -0,0 +1,17 @@ +--- +id: access-restrictions-segment-blanket +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T15:04:00-06:00" + subType: road + road: + restrictions: + access: [denied] diff --git a/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml b/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml new file mode 100644 index 00000000..779ae65a --- /dev/null +++ b/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml @@ -0,0 +1,22 @@ +--- +id: access-restrictions-segment-private-with-deliveries +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T16:54:00-06:00" + subType: road + road: + restrictions: + access: + - denied + - allowed: { when: { recognized: [asPrivate] } } + - allowed: + when: { using: [toDeliver] } + during: Mo-Fr 08:30-16:30 diff --git a/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml b/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml new file mode 100644 index 00000000..082f77c6 --- /dev/null +++ b/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml @@ -0,0 +1,19 @@ +--- +id: access-restrictions-segment-motor-vehicles-destination-only +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T16:58:00-06:00" + subType: road + road: + restrictions: + access: + - denied: { when: { mode: [motorVehicle] } } + - allowed: { when: { using: [atDestination] } } diff --git a/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml b/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml new file mode 100644 index 00000000..4ec1462d --- /dev/null +++ b/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml @@ -0,0 +1,21 @@ +--- +id: access-restrictions-segment-axle-limit +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T17:19:00-06:00" + subType: road + road: + restrictions: + access: + - denied: + when: + mode: [hgv] + vehicle: { axleCount: { isAtLeast: 5 } } diff --git a/examples/transportation/docusaurus/lanes-resolution-connector.yaml b/examples/transportation/docusaurus/lanes-resolution-connector.yaml new file mode 100644 index 00000000..c272f76a --- /dev/null +++ b/examples/transportation/docusaurus/lanes-resolution-connector.yaml @@ -0,0 +1,11 @@ +--- +id: lanes-resolution-example-connector +type: Feature +geometry: + type: Point + coordinates: [-21.852776852103545, 22.079931368] +properties: + theme: transportation + type: connector + version: 0 + updateTime: "2023-06-20T13:51:00-06:00" diff --git a/examples/transportation/docusaurus/lanes-resolution-segment-01.yaml b/examples/transportation/docusaurus/lanes-resolution-segment-01.yaml new file mode 100644 index 00000000..36ae50c3 --- /dev/null +++ b/examples/transportation/docusaurus/lanes-resolution-segment-01.yaml @@ -0,0 +1,26 @@ +--- +id: lanes-resolution-example-segment-1 +type: Feature +geometry: + type: LineString + coordinates: # Oriented toward segment 2, roughly NE. + - [-26.383587179327378, 19.309035206] + - [ -23.693418548, 22.079931368] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T13:51:00-06:00" + connectors: [lanes-resolution-example-connector] + subType: road + road: + lanes: # A list of two geometrically-scoped rules for resolving the lane block. + - at: [0, 0.67] + value: + - direction: backward + - direction: forward + - direction: forward + - at: [0.67, 1] + value: + - direction: backward + - direction: forward diff --git a/examples/transportation/docusaurus/lanes-resolution-segment-02.yaml b/examples/transportation/docusaurus/lanes-resolution-segment-02.yaml new file mode 100644 index 00000000..f7890930 --- /dev/null +++ b/examples/transportation/docusaurus/lanes-resolution-segment-02.yaml @@ -0,0 +1,19 @@ +--- +id: lanes-resolution-example-segment-2 +type: Feature +geometry: + type: LineString + coordinates: # Oriented toward segment 1, due west. + - [-21.852776852103545, 22.079931368] + - [ -23.693418548, 22.079931368] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-20T13:51:00-06:00" + connectors: [lanes-resolution-example-connector] + subType: road + road: + lanes: # One static, unchanging lane block. + - direction: forward + - direction: backward diff --git a/examples/transportation/docusaurus/speed-limits-01-simple.yaml b/examples/transportation/docusaurus/speed-limits-01-simple.yaml new file mode 100644 index 00000000..3b28d260 --- /dev/null +++ b/examples/transportation/docusaurus/speed-limits-01-simple.yaml @@ -0,0 +1,18 @@ +--- +id: speed-limits-simple +type: Feature +geometry: + type: LineString + coordinates: + - [-123.09348187774302, 49.280278741717865] + - [-123.0895720621171, 49.280195795155265] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-21T09:53:32-06:00" + subType: road + road: + restrictions: + speedLimits: + - maxSpeed: [30, "km/h"] diff --git a/examples/transportation/docusaurus/speed-limits-02-directional.yaml b/examples/transportation/docusaurus/speed-limits-02-directional.yaml new file mode 100644 index 00000000..c2f23e59 --- /dev/null +++ b/examples/transportation/docusaurus/speed-limits-02-directional.yaml @@ -0,0 +1,23 @@ +--- +id: speed-limits-variable-max +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 0 + updateTime: "2023-06-21T11:46:15-07:00" + subType: road + road: + restrictions: + speedLimits: + - maxSpeed: [70, "mph"] + - #when: TODO: Uncomment and re-introduce `when` once this issue is sorted: schema-wg #155. + mode: [hgv] + # TODO: Uncomment below once this issue is sorted: schema-wg #155. + # proceeding: { inDirection: forward } + maxSpeed: [65, "mph"] diff --git a/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml b/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml new file mode 100644 index 00000000..9fcd684c --- /dev/null +++ b/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml @@ -0,0 +1,21 @@ +--- +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: 0 + updateTime: "2023-06-21T09:57:15-06:00" + subType: road + road: + restrictions: + speedLimits: + - maxSpeed: [100, "km/h"] + isMaxSpeedVariable: true diff --git a/examples/transportation/docusaurus/turn-restriction-01-connector1.yaml b/examples/transportation/docusaurus/turn-restriction-01-connector1.yaml new file mode 100644 index 00000000..1c100a98 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-connector1.yaml @@ -0,0 +1,11 @@ +--- +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 + updateTime: "2023-06-21T14:08:00-07:00" diff --git a/examples/transportation/docusaurus/turn-restriction-01-connector2.yaml b/examples/transportation/docusaurus/turn-restriction-01-connector2.yaml new file mode 100644 index 00000000..2678def4 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-connector2.yaml @@ -0,0 +1,11 @@ +--- +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 + updateTime: "2023-06-21T13:55:00-07:00" diff --git a/examples/transportation/docusaurus/turn-restriction-01-connector3.yaml b/examples/transportation/docusaurus/turn-restriction-01-connector3.yaml new file mode 100644 index 00000000..3b243462 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-connector3.yaml @@ -0,0 +1,11 @@ +--- +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 + updateTime: "2023-06-21T14:10:00-07:00" diff --git a/examples/transportation/docusaurus/turn-restriction-01-exit.yaml b/examples/transportation/docusaurus/turn-restriction-01-exit.yaml new file mode 100644 index 00000000..04844255 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-exit.yaml @@ -0,0 +1,20 @@ +--- +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: 0 + updateTime: "2023-06-21T14:12:56-07:00" + subType: road + connectors: + - overture:transportation:example:simple-turn-restriction-connector1 + - overture:transportation:example:simple-turn-restriction-connector3 diff --git a/examples/transportation/docusaurus/turn-restriction-01-source.yaml b/examples/transportation/docusaurus/turn-restriction-01-source.yaml new file mode 100644 index 00000000..3c6b7971 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-source.yaml @@ -0,0 +1,25 @@ +--- +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: 3 + updateTime: "2023-06-21T13:41:00-07:00" + subType: road + connectors: + - overture:transportation:example:simple-turn-restriction-connector1 + - overture:transportation:example:simple-turn-restriction-connector2 + road: + restrictions: + turns: + - segmentId: overture:transportation:example:simple-turn-restriction-source + connectorId: overture:transportation:example:simple-turn-restriction-connector + direction: forward + toDirection: forward diff --git a/examples/transportation/docusaurus/turn-restriction-01-target.yaml b/examples/transportation/docusaurus/turn-restriction-01-target.yaml new file mode 100644 index 00000000..713f0591 --- /dev/null +++ b/examples/transportation/docusaurus/turn-restriction-01-target.yaml @@ -0,0 +1,20 @@ +--- +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: 0 + updateTime: "2023-06-21T13:42:35-07:00" + subType: road + connectors: + - overture:transportation:example:simple-turn-restriction-connector2 + - overture:transportation:example:simple-turn-restriction-connector3 diff --git a/examples/transportation/docusaurus/turn-restriction-connector1.yaml b/examples/transportation/docusaurus/turn-restriction-02-connector1.yaml similarity index 71% rename from examples/transportation/docusaurus/turn-restriction-connector1.yaml rename to examples/transportation/docusaurus/turn-restriction-02-connector1.yaml index 1b7c5d6a..4b0bfc12 100644 --- a/examples/transportation/docusaurus/turn-restriction-connector1.yaml +++ b/examples/transportation/docusaurus/turn-restriction-02-connector1.yaml @@ -1,5 +1,5 @@ --- -id: overture:transportation:example:turn-restriction-connector1 +id: overture:transportation:example:via-turn-restriction-connector1 type: Feature geometry: type: Point @@ -9,4 +9,3 @@ properties: type: connector version: 0 updateTime: "2023-06-08T12:32:00-06:00" - level: 0 diff --git a/examples/transportation/docusaurus/turn-restriction-connector2.yaml b/examples/transportation/docusaurus/turn-restriction-02-connector2.yaml similarity index 72% rename from examples/transportation/docusaurus/turn-restriction-connector2.yaml rename to examples/transportation/docusaurus/turn-restriction-02-connector2.yaml index 81e0d4ec..affdc2cc 100644 --- a/examples/transportation/docusaurus/turn-restriction-connector2.yaml +++ b/examples/transportation/docusaurus/turn-restriction-02-connector2.yaml @@ -1,5 +1,5 @@ --- -id: overture:transportation:example:turn-restriction-connector2 +id: overture:transportation:example:via-turn-restriction-connector2 type: Feature geometry: type: Point @@ -9,4 +9,3 @@ properties: type: connector version: 0 updateTime: "2023-06-08T12:32:00-06:00" - level: 0 diff --git a/examples/transportation/docusaurus/turn-restriction-source.yaml b/examples/transportation/docusaurus/turn-restriction-02-source.yaml similarity index 55% rename from examples/transportation/docusaurus/turn-restriction-source.yaml rename to examples/transportation/docusaurus/turn-restriction-02-source.yaml index b5734925..b96a1f4e 100644 --- a/examples/transportation/docusaurus/turn-restriction-source.yaml +++ b/examples/transportation/docusaurus/turn-restriction-02-source.yaml @@ -1,5 +1,5 @@ --- -id: overture:transportation:example:turn-restriction-source +id: overture:transportation:example:via-turn-restriction-source type: Feature geometry: type: LineString @@ -13,7 +13,7 @@ properties: updateTime: "2023-06-06T16:42:00-06:00" subType: road connectors: - - overture:transportation:example:turn-restriction-connector1 + - overture:transportation:example:via-turn-restriction-connector1 road: roadNames: common: [ { language: local, value: "Bel-Red Road" } ] @@ -21,13 +21,13 @@ properties: surface: paved restrictions: turns: - - segmentId: overture:transportation:example:turn-restriction-target - connectorId: overture:transportation:example:turn-restriction-connector2 + - segmentId: overture:transportation:example:via-turn-restriction-target + connectorId: overture:transportation:example:via-turn-restriction-connector2 toDirection: forward reason: legal direction: forward during: Mo-Sa 16:00-18:00 via: - - segmentId: overture:transportation:example:turn-restriction-via - connectorId: overture:transportation:example:turn-restriction-connector1 + - segmentId: overture:transportation:example:via-turn-restriction-via + connectorId: overture:transportation:example:via-turn-restriction-connector1 toDirection: forward diff --git a/examples/transportation/docusaurus/turn-restriction-target.yaml b/examples/transportation/docusaurus/turn-restriction-02-target.yaml similarity index 87% rename from examples/transportation/docusaurus/turn-restriction-target.yaml rename to examples/transportation/docusaurus/turn-restriction-02-target.yaml index 3dc5bac4..e26e7ff3 100644 --- a/examples/transportation/docusaurus/turn-restriction-target.yaml +++ b/examples/transportation/docusaurus/turn-restriction-02-target.yaml @@ -14,7 +14,7 @@ properties: updateTime: "2023-06-06T16:44:00-06:00" subType: road connectors: - - overture:transportation:example:turn-restriction-connector2 + - overture:transportation:example:via-turn-restriction-connector2 road: roadNames: common: [ { language: local, value: "N.E 24th Street" } ] diff --git a/examples/transportation/docusaurus/turn-restriction-via.yaml b/examples/transportation/docusaurus/turn-restriction-02-via.yaml similarity index 78% rename from examples/transportation/docusaurus/turn-restriction-via.yaml rename to examples/transportation/docusaurus/turn-restriction-02-via.yaml index 605449eb..476fadb3 100644 --- a/examples/transportation/docusaurus/turn-restriction-via.yaml +++ b/examples/transportation/docusaurus/turn-restriction-02-via.yaml @@ -15,8 +15,8 @@ properties: updateTime: "2023-06-06T16:43:00-06:00" subType: road connectors: - - overture:transportation:example:turn-restriction-connector1 - - overture:transportation:example:turn-restriction-connector2 + - overture:transportation:example:via-turn-restriction-connector1 + - overture:transportation:example:via-turn-restriction-connector2 road: roadNames: common: [ { language: local, value: "Bel-Red Road" } ]