recalculate stop signs when lanes change; construction->driving was

breaking the west seattle bridge. fixes #68. include a built-in proposal
to fix the bridge. ;)
This commit is contained in:
Dustin Carlino 2020-06-23 17:46:35 -07:00
parent d707969af5
commit 684bf72dde
4 changed files with 1810 additions and 7 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
# West Seattle mitigations
_Draft, updated May 14, 2020 by Dustin Carlino (<dabreegster@gmail.com>)_
_Draft, updated June 23, 2020 by Dustin Carlino (<dabreegster@gmail.com>)_
In March 2020, the West Seattle bridge was closed due to cracks forming. As of
May, COVID-19's impact on commuting means the area still hasn't seen how the
@ -55,7 +55,8 @@ Once the simulation is running smoothly, A/B Street can be used to make changes
part of the road into a bus lane -- and evaluate the effects on individual trips
and aggregate groups.
## Next steps
## Repair the bridge
It'd be useful to first get a baseline with the high bridge restored. Should now
be possible using edits.
Community proposals now includes a "repair the bridge" option, which should
restore things to how they were before March 2020. This is useful as a baseline,
to explore what traffic patterns were like before the closure.

View File

@ -353,7 +353,8 @@ impl Proposals {
buttons.push(
Btn::text_bg2(&edits.proposal_description[0])
.tooltip(Text::new())
.build(ctx, &name, None),
.build(ctx, &name, None)
.margin_below(10),
);
}

View File

@ -1375,8 +1375,13 @@ fn recalculate_turns(
// TODO Deal with turn_lookup
match i.intersection_type {
// Stop sign policy doesn't depend on incoming lane types. Leave edits alone.
IntersectionType::StopSign => {}
IntersectionType::StopSign => {
// Stop sign policy usually doesn't depend on incoming lane types, except when changing
// to/from construction. To be safe, always regenerate. Edits to stop signs are rare
// anyway. And when we're smarter about preserving traffic signal changes in the face
// of lane changes, we can do the same here.
map.stop_signs.insert(id, ControlStopSign::new(map, id));
}
IntersectionType::TrafficSignal => {
map.traffic_signals
.insert(id, ControlTrafficSignal::new(map, id, timer));