Skip to content

Commit d73366b

Browse files
Remove lanes
1 parent 3ef238e commit d73366b

25 files changed

+8
-1018
lines changed

counterexamples/transportation/segment/road/bad-road-invalid-min-occupancy-value.json

Lines changed: 0 additions & 35 deletions
This file was deleted.

counterexamples/transportation/segment/road/bad-road-invalid-min-occupancy.json

Lines changed: 0 additions & 39 deletions
This file was deleted.

docs/schema/concepts/by-theme/transportation/roads.mdx

Lines changed: 3 additions & 274 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples
1414
import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml';
1515
import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml';
1616
import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml';
17-
import ExampleLanesResolutionConnector from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-connector.yaml';
18-
import ExampleLanesResolutionSegment01 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-segment-01.yaml';
19-
import ExampleLanesResolutionSegment02 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/lanes-resolution-segment-02.yaml';
2017
import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml';
2118
import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml';
2219
import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml';
@@ -39,10 +36,9 @@ in many cases, approximates the physical centerline of the section of
3936
road being modeled. Road segments support modeling the road network at a range of
4037
granularities. For example, a single road segment can represent:
4138

42-
- bidirectional street including all of its lanes and sidewalks
39+
- bidirectional street including all of its sidewalks
4340
- sidewalk by itself
4441
- one-way street or one direction of a dual carriageway
45-
- single lane or single section of a multi-lane highway
4642
- dedicated cycleway
4743
- hiking path
4844

@@ -108,8 +104,7 @@ resolve.)
108104

109105
The implied access restrictions may be modified for the road segment as
110106
a whole by providing an explicit value for the property
111-
`access_restrictions`. (Access restrictions may also be specified
112-
at the level of individual [lanes](#lanes), as explained elsewhere.)
107+
`access_restrictions`.
113108

114109
It is technically possible to specify a blanket access grant or refusal
115110
of access applying to everyone and everything; but where, as is typical,
@@ -328,9 +323,7 @@ limits.
328323

329324
The implied speed limits may be configured for the whole road segment by
330325
providing an explicit value for the property
331-
`speed_limits`. Note: granular speed limits can also be
332-
specified at the level of individual [lanes](#lanes), as explained
333-
elsewhere.
326+
`speed_limits`.
334327

335328
As with access restrictions and turn restrictions, speed limits can be specified using [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties).
336329

@@ -353,267 +346,3 @@ As with access restrictions and turn restrictions, speed limits can be specified
353346

354347
</TabItem>
355348
</Tabs>
356-
357-
## Lanes
358-
359-
A road may optionally carry a `lanes` property which, if present, contains
360-
a list of rules that can be used to resolve the applicable traffic lane block
361-
for the road. A lane block is a list of lane objects. Each lane object in the
362-
block describes the physical structure and properties applicable to one the
363-
road's traffic lanes at a granularity sufficient to support the navigation use
364-
case. Note that the `lanes` property applies to traffic lanes, not to
365-
parking lanes.
366-
367-
### Use cases for lanes
368-
369-
Many transportation use cases can be solved either entirely or in large part without examining the lane
370-
structure of the road network. For example, optimal route calculation
371-
can be entirely solved without lane-level information, as can most 2D
372-
map rendering problems. Lane information is most interesting for
373-
granular turn-by-turn or maneuver-by-maneuver navigation applications.
374-
375-
### Default lane structure
376-
377-
If the `lanes` property is omitted from a road segment, reasonable
378-
default values should be assumed based on `class` and the
379-
road-level [access restrictions](#access-restrictions). For example, for
380-
a stock two-way road segment of class `primary` with no heading-scoped
381-
access restrictions, a reasonable assumption is two lanes, one
382-
`forward` and one `backward`.
383-
384-
### Lane numbering
385-
386-
The number of lanes at a given place and time on a road segment is equal to
387-
the length of the lanes list within the resolved lane block.
388-
389-
Each entry in the resolved lanes list represents one lane on the road.
390-
Order is important. The list captures the lanes in left-to-right order
391-
as they would be observed by a person standing on the physical road being modeled, facing in the [direction](/schema/concepts/by-theme/transportation/shape-connectivity#directionality)
392-
of the segment geometry. The leftmost lane has index `0`; the rightmost
393-
lane, assuming there are N total lanes, has index N-1. The example
394-
below illustrates how lane numbering works with example two-lane
395-
segments oriented in the north, west, east, and south directions,
396-
respectively.
397-
398-
<figure>
399-
400-
<div style={{ display: "flex", alignItems: "center" }}>
401-
402-
<div style={{ width: "27%", float: "left", textAlign: "center" }}>
403-
404-
<ThemedImage
405-
alt='West-oriented road segment with two lanes.'
406-
sources={{
407-
light: useBaseUrl('/img/transportation/lane-number-01-west-light.png'),
408-
dark: useBaseUrl('/img/transportation/lane-number-01-west-dark.png'),
409-
}}
410-
/>
411-
412-
</div>
413-
414-
<div style={{ width: "10px", float: "left" }}/>
415-
416-
<div style={{ width: "23%", float: "left", textAlign: "center" }}>
417-
418-
<ThemedImage
419-
alt='North-oriented road segment with two lanes.'
420-
sources={{
421-
light: useBaseUrl('/img/transportation/lane-number-02-north-light.png'),
422-
dark: useBaseUrl('/img/transportation/lane-number-02-north-dark.png'),
423-
}}
424-
/>
425-
426-
</div>
427-
428-
<div style={{ width: "10px", float: "left" }}/>
429-
430-
<div style={{ width: "27%", float: "left", textAlign: "center" }}>
431-
432-
<ThemedImage
433-
alt='East-oriented road segment with two lanes.'
434-
sources={{
435-
light: useBaseUrl('/img/transportation/lane-number-03-east-light.png'),
436-
dark: useBaseUrl('/img/transportation/lane-number-03-east-dark.png'),
437-
}}
438-
/>
439-
440-
</div>
441-
442-
<div style={{ width: "10px", float: "left" }}/>
443-
444-
<div style={{ width: "23%", float: "left", textAlign: "center" }}>
445-
446-
<ThemedImage
447-
alt='South-oriented road segment with two lanes.'
448-
sources={{
449-
light: useBaseUrl('/img/transportation/lane-number-04-south-light.png'),
450-
dark: useBaseUrl('/img/transportation/lane-number-04-south-dark.png'),
451-
}}
452-
/>
453-
454-
</div>
455-
456-
<div style={{ clear: "both" }}/>
457-
458-
</div>
459-
460-
461-
<figcaption>
462-
463-
<div style={{textAlign: 'center'}}>
464-
465-
*How lanes are numbered for examples segments with geometry directions due west, north, east, and south.*
466-
467-
</div>
468-
469-
</figcaption>
470-
471-
</figure>
472-
473-
### Lane directionality
474-
475-
Each lane within a segment has a directionality, documenting which
476-
travel directions are allowed within the lane, with reference to the [orientation of the segment](/schema/concepts/by-theme/transportation/shape-connectivity#start-end-and-orientation). Lane directionality is specified by the lane object's `directionality`
477-
property. The allowed values are:
478-
479-
<figure>
480-
481-
<div style={{width: '100%', display: 'flex', justifyContent: 'center'}}>
482-
483-
| Directionality | Meaning |
484-
|-|-|
485-
| `forward` | Travel is only allowed along the `forward` heading. |
486-
| `backward` | Travel is only allowed along the `backward` heading. |
487-
| `both_ways` | Travel is allowed both `forward` and `backward` at the same time. |
488-
| `alternating` | Travel is one-way and changes between `forward` and `backward` constantly. |
489-
| `reversible` | Travel is one-way and changes between `forward` and `backward` infrequently. |
490-
491-
</div>
492-
493-
<figcaption>
494-
495-
<div style={{textAlign: 'center'}}>
496-
497-
*Allowed values for lane `directionality`.*
498-
499-
</div>
500-
501-
</figcaption>
502-
</figure>
503-
504-
The `directionality` property is a mandatory property for lanes, and is
505-
the only mandatory property.
506-
507-
When the allowed travel heading changes based on a regular schedule,
508-
the appropriate "definite" directionalities (`forward`, `backward`, and
509-
`both_ways`) should be used along with [temporal scoping](/schema/concepts/scoping-rules#temporal-scoping-opening-hours) at the lane block level.
510-
511-
When the allowed travel heading changes based on unpredictable local
512-
factors, such that allowed heading at any given time can only be known
513-
by an observer actually present at the real-world location, the
514-
appropriate indefinite directionality (`alternating` or `reversible`)
515-
should be used.
516-
517-
### Lane restrictions
518-
519-
Like the segment a whole, each lane within a lane block can have its own
520-
restrictions, for example [access restrictions](#access-restrictions),
521-
[turn restrictions](#turn-restrictions) and
522-
[speed limits](#speed-limits).
523-
524-
Lane-level restrictions reuse the same concepts as segment-level
525-
restrictions and are typically phrased in the same way, except that the
526-
restriction is stipulated on an individual lane object rather than for
527-
the segment's `road` property as a whole.
528-
529-
### Lane connectivity
530-
531-
Lane connectivity refers to the maneuvers available to navigate from the
532-
lane the traveller is currently occupying to a connected lane within the
533-
next lane block in the traveller's current travel direction. Lane
534-
connectivity is a necessary element for granular turn-by-turn
535-
navigation instructions.
536-
537-
The Overture transportation schema does not currently support lane
538-
connectivity, but it is something we are actively working on and hoping
539-
to release soon.
540-
541-
### Resolving the applicable lane block
542-
543-
The traffic lane structure of a road segment can be different at different
544-
points along the segment, or at different times of the day, or both.
545-
Consequently, instead of having a static lane block, road segments carry a list of lane block [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties)
546-
in the optional `lanes` property.
547-
548-
- A rule may be scoped [geometrically](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing),
549-
which allows linear referencing to be used to specify the portion of the
550-
segment geometry where the lane block exists.
551-
- A rule may also be scoped [temporally](/schema/concepts/scoping-rules#temporal-scoping-opening-hours), which allows the time of day that the lane block exists to be specified. Temporal scoping is useful for modeling cases like lanes which are used
552-
for parking at off hours and traffic during peak hours. In such a case,
553-
the lane block rule would be scoped to peak hours.
554-
555-
As with all rule-based properties in the Overture schema, the [rule evaluation algorithm](/schema/concepts/scoping-rules#rule-evaluation-algorithm) must be applied to determine which lane block rule, if any, is
556-
applicable at a given place and time along the road segment. Once the
557-
determining rule for a certain scope is known, its rule block defines
558-
the lane structure within that scope.
559-
560-
The example below illustrates lane block resolution for two connected
561-
segments.
562-
563-
- The blue shaded, or southwesterly, segment is [oriented](/schema/concepts/by-theme/transportation/shape-connectivity#directionality) toward the north-east. It has two geometrically-scoped lane block rules:
564-
- The first rule, applying to the first two thirds of the
565-
segment's length, establishes three lanes: one going
566-
`backward` (SW), and two `forward` (NE).
567-
- The second rule, applying to the last third of the segment,
568-
establishes two lanes, one in either direction.
569-
- The green shaded, or northeasterly, segment is oriented due west. It
570-
has a single static lane block that applies to the whole segment
571-
geometry at all times.
572-
573-
<Tabs>
574-
<TabItem value="diagram" label="Diagram" default>
575-
576-
<div style={{ textAlign: "center" }}>
577-
578-
<figure>
579-
580-
<ThemedImage
581-
alt='A segment with two geometrically-scoped lane blocks connected to a segment oriented in the opposite direction.'
582-
sources={{
583-
light: useBaseUrl('/img/transportation/lane-blocks-light.png'),
584-
dark: useBaseUrl('/img/transportation/lane-blocks-dark.png'),
585-
}}
586-
/>
587-
588-
<figcaption>
589-
590-
*A segment with two [geometrically-scoped](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing) lane blocks connected to a segment oriented in the opposite direction.*
591-
592-
</figcaption>
593-
594-
</figure>
595-
596-
</div>
597-
598-
</TabItem>
599-
600-
<TabItem value="segment1" label="Segment 1 Data">
601-
602-
<CodeBlock language="yaml">{ ExampleLanesResolutionSegment01 }</CodeBlock>
603-
604-
</TabItem>
605-
606-
<TabItem value="connector" label="Connector Data">
607-
608-
<CodeBlock language="yaml">{ ExampleLanesResolutionConnector }</CodeBlock>
609-
610-
</TabItem>
611-
612-
613-
<TabItem value="segment2" label="Segment 2 Data">
614-
615-
<CodeBlock language="yaml">{ ExampleLanesResolutionSegment02 }</CodeBlock>
616-
617-
</TabItem>
618-
619-
</Tabs>

docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ back toward the start of the segment.
204204
-->
205205
206206
207-
🚧 We are developing a segment-level directionality concept similar to [lane directionality](/schema/concepts/by-theme/transportation/roads#lane-directionality) to indicate what travel headings are allowed or prohibited along the segment. This effort is
207+
🚧 We are developing a segment-level directionality concept to indicate what travel headings are allowed or prohibited along the segment. This effort is
208208
ongoing, so please check back soon.
209209
210210
### Sub-types

0 commit comments

Comments
 (0)