No right on red (#806)

* add turn_on_red config option which is false for nyc

* when making stages, don't add movements that don't share a stage with a protected movement

* Fix a renamed DirectedRoadID field from
cb3693bd7a and the new turn_on_red field
in the test crate

* Update all map config files with the new option

for x in importer/config/*/*/cfg.json; do
	cat $x | jq '.map_config += {turn_on_red: true}' > tmp
	mv -f tmp $x
done

(And then undoing NYC)

* turn on red banned on all non-us maps

* regenerate all maps

Co-authored-by: Marcel Dejean <marcel@dejean.nyc>
Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
This commit is contained in:
Marcel Dejean 2021-11-17 02:06:11 -05:00 committed by GitHub
parent 7d6b720099
commit 641c908051
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
89 changed files with 1052 additions and 954 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 65000
"street_parking_spot_length": 65000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 65000
"street_parking_spot_length": 65000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 65000
"street_parking_spot_length": 65000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": false,
"inferred_sidewalks": false,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": false,
"inferred_sidewalks": false,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Left",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 65000
"street_parking_spot_length": 65000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 65000
"street_parking_spot_length": 65000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": {
"SomeAdditionalWhereNoData": {

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": false
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -4,7 +4,8 @@
"driving_side": "Right",
"bikes_can_use_bus_lanes": true,
"inferred_sidewalks": true,
"street_parking_spot_length": 80000
"street_parking_spot_length": 80000,
"turn_on_red": true
},
"onstreet_parking": "JustOSM",
"public_offstreet_parking": "None",

View File

@ -111,6 +111,7 @@ pub fn oneshot(
bikes_can_use_bus_lanes: true,
inferred_sidewalks: true,
street_parking_spot_length: Distance::meters(8.0),
turn_on_red: true,
},
onstreet_parking: convert_osm::OnstreetParking::JustOSM,

View File

@ -133,6 +133,7 @@ pub async fn osm_to_raw(name: &str, timer: &mut Timer<'_>, config: &ImporterConf
bikes_can_use_bus_lanes: true,
inferred_sidewalks: true,
street_parking_spot_length: Distance::meters(8.0),
turn_on_red: true,
},
onstreet_parking: convert_osm::OnstreetParking::Blockface(

View File

@ -282,7 +282,7 @@ fn three_way_three_stage(i: &Intersection, map: &Map) -> Option<ControlTrafficSi
// Three-stage with protected lefts, right turn on red
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![
vec![
@ -320,7 +320,7 @@ fn four_way_four_stage(i: &Intersection, map: &Map) -> Option<ControlTrafficSign
let mut ts = new(i.id);
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![
vec![

View File

@ -9,7 +9,7 @@ use std::collections::{BTreeSet, HashSet};
use crate::{
ControlTrafficSignal, DrivingSide, Intersection, IntersectionCluster, IntersectionID, Map,
MovementID, RoadID, Stage, StageType, TurnPriority, TurnType,
MovementID, RoadID, Stage, StageType, TurnPriority, TurnType, MapConfig
};
use geom::Duration;
@ -152,7 +152,7 @@ fn degenerate(map: &Map, i: &Intersection) -> Option<ControlTrafficSignal> {
let mut ts = new(i.id);
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![vec![(vec![r1, r2], TurnType::Straight, PROTECTED)]],
);
@ -202,7 +202,7 @@ fn three_way(map: &Map, i: &Intersection) -> Option<ControlTrafficSignal> {
// Two-stage with no protected lefts, right turn on red, turning cars yield to peds
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![
vec![
@ -242,7 +242,7 @@ fn four_way_four_stage(map: &Map, i: &Intersection) -> Option<ControlTrafficSign
let mut ts = new(i.id);
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![
vec![
@ -275,7 +275,7 @@ fn four_way_two_stage(map: &Map, i: &Intersection) -> Option<ControlTrafficSigna
let mut ts = new(i.id);
make_stages(
&mut ts,
map.config.driving_side,
&map.config,
i,
vec![
vec![
@ -356,17 +356,17 @@ const YIELD: bool = false;
fn make_stages(
ts: &mut ControlTrafficSignal,
driving_side: DrivingSide,
map_config: &MapConfig,
i: &Intersection,
stage_specs: Vec<Vec<(Vec<RoadID>, TurnType, bool)>>,
) {
for specs in stage_specs {
let mut stage = Stage::new();
let mut explicit_crosswalks = false;
for (roads, mut turn_type, protected) in specs.into_iter() {
for (roads, mut turn_type, protected) in specs.iter() {
// The heuristics are written assuming right turns are easy and lefts are hard, so
// invert in the UK.
if driving_side == DrivingSide::Left {
if map_config.driving_side == DrivingSide::Left {
if turn_type == TurnType::Right {
turn_type = TurnType::Left;
} else if turn_type == TurnType::Left {
@ -382,9 +382,19 @@ fn make_stages(
continue;
}
// If turn on red is banned, ignore movements when the stage has
// no protected (green) movement from that road
if !map_config.turn_on_red
&& !specs.iter().any(|(other_roads, _, other_protected)|
*other_protected
&& other_roads.contains(&movement.id.from.road))
{
continue;
}
stage.edit_movement(
movement,
if protected {
if *protected {
TurnPriority::Protected
} else {
TurnPriority::Yield

View File

@ -34,6 +34,8 @@ pub struct MapConfig {
/// value can be smaller than the hardcoded maximum car length; cars may render on top of each
/// other, but otherwise the simulation doesn't care.
pub street_parking_spot_length: Distance,
/// If true, turns on red which do not conflict crossing traffic ('right on red') are allowed
pub turn_on_red: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq)]
@ -173,6 +175,7 @@ impl Map {
bikes_can_use_bus_lanes: true,
inferred_sidewalks: true,
street_parking_spot_length: Distance::meters(8.0),
turn_on_red: true,
},
pathfinder: Pathfinder::empty(),
pathfinder_dirty: false,

View File

@ -124,6 +124,7 @@ impl RawMap {
bikes_can_use_bus_lanes: true,
inferred_sidewalks: true,
street_parking_spot_length: Distance::meters(8.0),
turn_on_red: true,
},
}
}

View File

@ -57,6 +57,7 @@ fn import_map(path: String) -> Map {
bikes_can_use_bus_lanes: true,
inferred_sidewalks: true,
street_parking_spot_length: Distance::meters(8.0),
turn_on_red: false,
},
onstreet_parking: convert_osm::OnstreetParking::JustOSM,
public_offstreet_parking: convert_osm::PublicOffstreetParking::None,