mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-12-25 07:25:47 +03:00
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:
parent
7d6b720099
commit
641c908051
1564
data/MANIFEST.json
1564
data/MANIFEST.json
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 65000
|
"street_parking_spot_length": 65000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 65000
|
"street_parking_spot_length": 65000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 65000
|
"street_parking_spot_length": 65000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": false,
|
"bikes_can_use_bus_lanes": false,
|
||||||
"inferred_sidewalks": false,
|
"inferred_sidewalks": false,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": false,
|
"bikes_can_use_bus_lanes": false,
|
||||||
"inferred_sidewalks": false,
|
"inferred_sidewalks": false,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Left",
|
"driving_side": "Left",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 65000
|
"street_parking_spot_length": 65000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 65000
|
"street_parking_spot_length": 65000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": {
|
"onstreet_parking": {
|
||||||
"SomeAdditionalWhereNoData": {
|
"SomeAdditionalWhereNoData": {
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": false
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"driving_side": "Right",
|
"driving_side": "Right",
|
||||||
"bikes_can_use_bus_lanes": true,
|
"bikes_can_use_bus_lanes": true,
|
||||||
"inferred_sidewalks": true,
|
"inferred_sidewalks": true,
|
||||||
"street_parking_spot_length": 80000
|
"street_parking_spot_length": 80000,
|
||||||
|
"turn_on_red": true
|
||||||
},
|
},
|
||||||
"onstreet_parking": "JustOSM",
|
"onstreet_parking": "JustOSM",
|
||||||
"public_offstreet_parking": "None",
|
"public_offstreet_parking": "None",
|
||||||
|
@ -111,6 +111,7 @@ pub fn oneshot(
|
|||||||
bikes_can_use_bus_lanes: true,
|
bikes_can_use_bus_lanes: true,
|
||||||
inferred_sidewalks: true,
|
inferred_sidewalks: true,
|
||||||
street_parking_spot_length: Distance::meters(8.0),
|
street_parking_spot_length: Distance::meters(8.0),
|
||||||
|
turn_on_red: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
onstreet_parking: convert_osm::OnstreetParking::JustOSM,
|
onstreet_parking: convert_osm::OnstreetParking::JustOSM,
|
||||||
|
@ -133,6 +133,7 @@ pub async fn osm_to_raw(name: &str, timer: &mut Timer<'_>, config: &ImporterConf
|
|||||||
bikes_can_use_bus_lanes: true,
|
bikes_can_use_bus_lanes: true,
|
||||||
inferred_sidewalks: true,
|
inferred_sidewalks: true,
|
||||||
street_parking_spot_length: Distance::meters(8.0),
|
street_parking_spot_length: Distance::meters(8.0),
|
||||||
|
turn_on_red: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
onstreet_parking: convert_osm::OnstreetParking::Blockface(
|
onstreet_parking: convert_osm::OnstreetParking::Blockface(
|
||||||
|
@ -282,7 +282,7 @@ fn three_way_three_stage(i: &Intersection, map: &Map) -> Option<ControlTrafficSi
|
|||||||
// Three-stage with protected lefts, right turn on red
|
// Three-stage with protected lefts, right turn on red
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![
|
vec![
|
||||||
vec![
|
vec![
|
||||||
@ -320,7 +320,7 @@ fn four_way_four_stage(i: &Intersection, map: &Map) -> Option<ControlTrafficSign
|
|||||||
let mut ts = new(i.id);
|
let mut ts = new(i.id);
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![
|
vec![
|
||||||
vec![
|
vec![
|
||||||
|
@ -9,7 +9,7 @@ use std::collections::{BTreeSet, HashSet};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ControlTrafficSignal, DrivingSide, Intersection, IntersectionCluster, IntersectionID, Map,
|
ControlTrafficSignal, DrivingSide, Intersection, IntersectionCluster, IntersectionID, Map,
|
||||||
MovementID, RoadID, Stage, StageType, TurnPriority, TurnType,
|
MovementID, RoadID, Stage, StageType, TurnPriority, TurnType, MapConfig
|
||||||
};
|
};
|
||||||
use geom::Duration;
|
use geom::Duration;
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ fn degenerate(map: &Map, i: &Intersection) -> Option<ControlTrafficSignal> {
|
|||||||
let mut ts = new(i.id);
|
let mut ts = new(i.id);
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![vec![(vec![r1, r2], TurnType::Straight, PROTECTED)]],
|
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
|
// Two-stage with no protected lefts, right turn on red, turning cars yield to peds
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![
|
vec![
|
||||||
vec![
|
vec![
|
||||||
@ -242,7 +242,7 @@ fn four_way_four_stage(map: &Map, i: &Intersection) -> Option<ControlTrafficSign
|
|||||||
let mut ts = new(i.id);
|
let mut ts = new(i.id);
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![
|
vec![
|
||||||
vec![
|
vec![
|
||||||
@ -275,7 +275,7 @@ fn four_way_two_stage(map: &Map, i: &Intersection) -> Option<ControlTrafficSigna
|
|||||||
let mut ts = new(i.id);
|
let mut ts = new(i.id);
|
||||||
make_stages(
|
make_stages(
|
||||||
&mut ts,
|
&mut ts,
|
||||||
map.config.driving_side,
|
&map.config,
|
||||||
i,
|
i,
|
||||||
vec![
|
vec![
|
||||||
vec![
|
vec![
|
||||||
@ -356,17 +356,17 @@ const YIELD: bool = false;
|
|||||||
|
|
||||||
fn make_stages(
|
fn make_stages(
|
||||||
ts: &mut ControlTrafficSignal,
|
ts: &mut ControlTrafficSignal,
|
||||||
driving_side: DrivingSide,
|
map_config: &MapConfig,
|
||||||
i: &Intersection,
|
i: &Intersection,
|
||||||
stage_specs: Vec<Vec<(Vec<RoadID>, TurnType, bool)>>,
|
stage_specs: Vec<Vec<(Vec<RoadID>, TurnType, bool)>>,
|
||||||
) {
|
) {
|
||||||
for specs in stage_specs {
|
for specs in stage_specs {
|
||||||
let mut stage = Stage::new();
|
let mut stage = Stage::new();
|
||||||
let mut explicit_crosswalks = false;
|
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
|
// The heuristics are written assuming right turns are easy and lefts are hard, so
|
||||||
// invert in the UK.
|
// invert in the UK.
|
||||||
if driving_side == DrivingSide::Left {
|
if map_config.driving_side == DrivingSide::Left {
|
||||||
if turn_type == TurnType::Right {
|
if turn_type == TurnType::Right {
|
||||||
turn_type = TurnType::Left;
|
turn_type = TurnType::Left;
|
||||||
} else if turn_type == TurnType::Left {
|
} else if turn_type == TurnType::Left {
|
||||||
@ -382,9 +382,19 @@ fn make_stages(
|
|||||||
continue;
|
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(
|
stage.edit_movement(
|
||||||
movement,
|
movement,
|
||||||
if protected {
|
if *protected {
|
||||||
TurnPriority::Protected
|
TurnPriority::Protected
|
||||||
} else {
|
} else {
|
||||||
TurnPriority::Yield
|
TurnPriority::Yield
|
||||||
|
@ -34,6 +34,8 @@ pub struct MapConfig {
|
|||||||
/// value can be smaller than the hardcoded maximum car length; cars may render on top of each
|
/// 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.
|
/// other, but otherwise the simulation doesn't care.
|
||||||
pub street_parking_spot_length: Distance,
|
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)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq)]
|
||||||
@ -173,6 +175,7 @@ impl Map {
|
|||||||
bikes_can_use_bus_lanes: true,
|
bikes_can_use_bus_lanes: true,
|
||||||
inferred_sidewalks: true,
|
inferred_sidewalks: true,
|
||||||
street_parking_spot_length: Distance::meters(8.0),
|
street_parking_spot_length: Distance::meters(8.0),
|
||||||
|
turn_on_red: true,
|
||||||
},
|
},
|
||||||
pathfinder: Pathfinder::empty(),
|
pathfinder: Pathfinder::empty(),
|
||||||
pathfinder_dirty: false,
|
pathfinder_dirty: false,
|
||||||
|
@ -124,6 +124,7 @@ impl RawMap {
|
|||||||
bikes_can_use_bus_lanes: true,
|
bikes_can_use_bus_lanes: true,
|
||||||
inferred_sidewalks: true,
|
inferred_sidewalks: true,
|
||||||
street_parking_spot_length: Distance::meters(8.0),
|
street_parking_spot_length: Distance::meters(8.0),
|
||||||
|
turn_on_red: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ fn import_map(path: String) -> Map {
|
|||||||
bikes_can_use_bus_lanes: true,
|
bikes_can_use_bus_lanes: true,
|
||||||
inferred_sidewalks: true,
|
inferred_sidewalks: true,
|
||||||
street_parking_spot_length: Distance::meters(8.0),
|
street_parking_spot_length: Distance::meters(8.0),
|
||||||
|
turn_on_red: false,
|
||||||
},
|
},
|
||||||
onstreet_parking: convert_osm::OnstreetParking::JustOSM,
|
onstreet_parking: convert_osm::OnstreetParking::JustOSM,
|
||||||
public_offstreet_parking: convert_osm::PublicOffstreetParking::None,
|
public_offstreet_parking: convert_osm::PublicOffstreetParking::None,
|
||||||
|
Loading…
Reference in New Issue
Block a user