Open Elesbaan70 opened 2 years ago
The lane is at a higher vertical offset than that of the vehicle lanes around it, but the difference does not exceed 3 meters. (The 3-meter limit will prevent false positives on certain types of mass transit.)
what if they are both car lanes?
LaneGroupFlags
can be added to ExtLane
from ExtLaneManager
. unless if you are worried about manager's dependencies and order of operations.
what if they are both car lanes?
That's the point. Two car lanes with a non-vehicle lane between at a higher vertical offset.
LaneGroupFlags
can be added toExtLane
fromExtLaneManager
.
That would produce an insane amount of redundant data. This information is all at the NetInfo
level.
I have decided that managers are not an appropriate pattern for this, and so it will follow the basic design of the displaced lane detection code I have already written.
what if there are two car lanes at different heights with no lanes in between?
what if there are two car lanes at different heights with no lanes in between?
That sounds like a use case this wasn't designed to cover. Do you have any examples?
or this?
maybe in future there will be something like this?
That sounds like a use case this wasn't designed to cover
I mean its not technically median but cars should sill not cross lanes. so yeah sounds like out of scope. I am just want to know about all possibilities. doesn't mean we need to handle them all.
The example where the inner lanes are above grade at the interchange seems like it would be way outside the scope of this project.
The example with the lanes running alongside but below grade looks to me like it should be separate roads.
NYC actually has express lanes that go above or below grade at some intersections. I chose not to include that in this project because there's a lot more involved than just routing and traffic light control.
WIP can be found here: https://github.com/Elesbaan70/TMPE/tree/feature/medians/ext-net-info
NetInfo
objects will be paired with newExtNetInfo
objects to provide extended information. Initially this will be to group car lanes based on medians and directionality. TheExtNetInfo
objects will be generated on first request, and stored in a static instance of a backportedConcurrentDictionary
keyed on theNetInfo
reference.Each car lane will be assigned a set of flags:
Forward
andBackward
do not directly map to the vanilla lane direction. They identify a lane group's prevailing vehicle direction, and may not match a specific lane's direction in some cases.The lanes are organized in these steps:
Forward
/Backward
flags to car lanes.DisplacedInner
andDisplacedOuter
flags.DisplacedInner
norDisplacedOuter
:Express
flag.Standard
flag.Once this is done, a collection of lane group objects are created and stored in the
ExtNetInfo
object. Each lane group contains a collection of car lanes having the sameLaneGroupFlags
. Note there will always be one lane group for one-way roads, and at least two lane groups for two-way roads.Displaced Lanes
"Left" and "right" here assuming you are looking down a segment from its starting end, so that negative positions are on the left and positive positions are on the right.
Note that when the road has a simple configuration with forward lanes on the left and backward lanes on the right, these are not considered displaced lanes. They are inverted, but not displaced.
Forward Lanes
DisplacedOuter
if all of the following conditions are true:DisplacedInner
if all of the following conditions are true:Backward Lanes
Displaced backward lanes are identified by reversing the rules for displaced forward lanes.
Medians
A non-car lane is considered a
Median
if either of these criteria are met:In addition, a
Median
lane cannot overlap any car lane.