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", "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",

View File

@ -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",

View File

@ -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": {

View File

@ -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",

View File

@ -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": {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": {

View File

@ -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": {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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,

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, 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(

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 // 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![

View File

@ -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

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 /// 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,

View File

@ -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,
}, },
} }
} }

View File

@ -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,