From ffdedcb0a7d3c49dcac40ff057a88c85c1ac55db Mon Sep 17 00:00:00 2001 From: Dustin Carlino Date: Sat, 3 Oct 2020 09:40:15 -0700 Subject: [PATCH] When multiple source lanes can turn left* to multiple destination lanes, only allow the leftmost source lane to turn to any destination lane. As a future improvment, need to handle multiple explicitly tagged left turn lanes, but this gets closer to reality, particularly helping some crazy maneuvers along Mercer in downtown. *or right Also had to update lanes along Madison and fiddle a bit to keep lakeslice running. Spotted some major traffic signal bottlenecks due to stage generation falling back, will iterate on that separately. --- data/MANIFEST.txt | 128 +++++++++--------- data/route_goldenfiles/downtown.txt | 24 ++-- map_model/src/make/turns.rs | 44 +++--- .../goldenfiles/multiple_left_turn_lanes.txt | 15 -- sim/src/mechanics/intersection.rs | 7 +- 5 files changed, 104 insertions(+), 114 deletions(-) diff --git a/data/MANIFEST.txt b/data/MANIFEST.txt index 2c9b8a65ad..fb5e9c161c 100644 --- a/data/MANIFEST.txt +++ b/data/MANIFEST.txt @@ -1,5 +1,5 @@ data/input/berlin/EWR201812E_Matrix.csv,7966d3e37c45e7ffa4ee26bb6c8cec28,https://www.dropbox.com/s/38fl51jxp5iwuz3/EWR201812E_Matrix.csv.zip?dl=0 -data/input/berlin/berlin_center_separate_cycleways.bin,7d39879c917640198077ef32f14d5951,https://www.dropbox.com/s/nas6r3pzesmrbdj/berlin_center_separate_cycleways.bin.zip?dl=0 +data/input/berlin/berlin_center_separate_cycleways.bin,1d188e5144d28182aee7c93af9f039cf,https://www.dropbox.com/s/nas6r3pzesmrbdj/berlin_center_separate_cycleways.bin.zip?dl=0 data/input/berlin/berlin_center_snapped_cycleways.bin,2ff14b60c55ada6154bad1ce71f1ddb5,https://www.dropbox.com/s/n1kdzjv2iq4gewt/berlin_center_snapped_cycleways.bin.zip?dl=0 data/input/berlin/footways.bin,19d6608e9bc85800706e004e4530a81b,https://www.dropbox.com/s/c36724ayytwwpz8/footways.bin.zip?dl=0 data/input/berlin/osm/berlin-latest.osm.pbf,8e7f5ecf37631bb975f062593c5add99,https://www.dropbox.com/s/6lssl37uhbyo7gr/berlin-latest.osm.pbf.zip?dl=0 @@ -8,7 +8,7 @@ data/input/berlin/planning_areas.bin,f1a3bd5118a0e4982b64c2307e01d82a,https://ww data/input/berlin/planning_areas.kml,1bfc2044f1f5f40acdcdded1a644ad22,https://www.dropbox.com/s/9bvbshrtjw14tm7/planning_areas.kml.zip?dl=0 data/input/berlin/service_roads.bin,be06e4b4136771f8e03a2ba7a5f9b8cd,https://www.dropbox.com/s/g4km7xhshigwz8g/service_roads.bin.zip?dl=0 data/input/krakow/footways.bin,017e85fd6da69b67a1a7a790506f52ff,https://www.dropbox.com/s/xxwivqmxev2ecl6/footways.bin.zip?dl=0 -data/input/krakow/krakow_center_separate_cycleways.bin,d602cf0be6dca4a94025675f6acd1c4d,https://www.dropbox.com/s/dqrc5w5jxpv9nfc/krakow_center_separate_cycleways.bin.zip?dl=0 +data/input/krakow/krakow_center_separate_cycleways.bin,9e625090adc30ad177fceef5e411d240,https://www.dropbox.com/s/dqrc5w5jxpv9nfc/krakow_center_separate_cycleways.bin.zip?dl=0 data/input/krakow/krakow_center_snapped_cycleways.bin,03c50c05dcb636229f827879ae2b983e,https://www.dropbox.com/s/03f9g4gubb9x3y3/krakow_center_snapped_cycleways.bin.zip?dl=0 data/input/krakow/osm/krakow_center.osm,b914bbcd42a7f769a40a90970cea35f2,https://www.dropbox.com/s/pf3avtszpw732jd/krakow_center.osm.zip?dl=0 data/input/krakow/osm/malopolskie-latest.osm.pbf,9505917bbacc478177e36605e89b6d77,https://www.dropbox.com/s/vehjfvwx25v1qnd/malopolskie-latest.osm.pbf.zip?dl=0 @@ -17,35 +17,35 @@ data/input/london/footways.bin,95816ac4d77d857c561a61830d1998a0,https://www.drop data/input/london/osm/greater-london-latest.osm.pbf,ef110d0831b482bb7336c82e36b115ed,https://www.dropbox.com/s/wzwjgcd3wsc4sx1/greater-london-latest.osm.pbf.zip?dl=0 data/input/london/osm/southbank.osm,b86babace41d69a9e5b8be2310a725ae,https://www.dropbox.com/s/qip39avqaijvxy6/southbank.osm.zip?dl=0 data/input/london/service_roads.bin,4f651a450d9d6b73618db015c34a03ad,https://www.dropbox.com/s/c477mruya21q9a0/service_roads.bin.zip?dl=0 -data/input/london/southbank_separate_cycleways.bin,3ebb4ec597920017192a3ac23522f8ea,https://www.dropbox.com/s/pahf7kbiuh1j2yr/southbank_separate_cycleways.bin.zip?dl=0 +data/input/london/southbank_separate_cycleways.bin,a91ffd583aedeb93967e18aace47d28a,https://www.dropbox.com/s/pahf7kbiuh1j2yr/southbank_separate_cycleways.bin.zip?dl=0 data/input/london/southbank_snapped_cycleways.bin,6cbbe9d6c102a1d35c17ddd1acd7841a,https://www.dropbox.com/s/l4anoe33yuut4vs/southbank_snapped_cycleways.bin.zip?dl=0 -data/input/raw_maps/ballard.bin,0e9995d25347db805334a93cb0cb5140,https://www.dropbox.com/s/qoa9m2639tc4pt3/ballard.bin.zip?dl=0 +data/input/raw_maps/ballard.bin,91c68fd153435f724d8bfca69977087d,https://www.dropbox.com/s/xjutuwth6oyxiqm/ballard.bin.zip?dl=0 data/input/raw_maps/berlin_center.bin,bd6acbb9a316382d1a18187b6ce132f5,https://www.dropbox.com/s/p8irq9yu8jsqr9f/berlin_center.bin.zip?dl=0 -data/input/raw_maps/downtown.bin,5eb4c395e7114e5aa87d1d62b5a14f04,https://www.dropbox.com/s/frr5jz7284llzv9/downtown.bin.zip?dl=0 -data/input/raw_maps/huge_seattle.bin,8eeb82744ed975061dc6e0ff2c7e973d,https://www.dropbox.com/s/ni8kp2tnba9w81h/huge_seattle.bin.zip?dl=0 +data/input/raw_maps/downtown.bin,b7b974f67692793fadff56e8388b9097,https://www.dropbox.com/s/18adtnqa5syjswx/downtown.bin.zip?dl=0 +data/input/raw_maps/huge_seattle.bin,e8adfa5fa327cfb93114b6845bc2fa95,https://www.dropbox.com/s/4evjdz084hq7sxf/huge_seattle.bin.zip?dl=0 data/input/raw_maps/krakow_center.bin,aa47c82c15ee967a2c288b3524ff166f,https://www.dropbox.com/s/bhkydggxdqklcxg/krakow_center.bin.zip?dl=0 -data/input/raw_maps/lakeslice.bin,56cf99c4479dbe981400063ff9c34fde,https://www.dropbox.com/s/ygbppcxg0r7fxtr/lakeslice.bin.zip?dl=0 +data/input/raw_maps/lakeslice.bin,d36f328c7b312d6a4be7b6d33bc47162,https://www.dropbox.com/s/5qjx3l051o8ibhz/lakeslice.bin.zip?dl=0 data/input/raw_maps/montlake.bin,0c1e537be778036024a8e2847f20bbfc,https://www.dropbox.com/s/9fsnt21ynj2ldgz/montlake.bin.zip?dl=0 -data/input/raw_maps/south_seattle.bin,4dfe69c6d59035d207722789e7563203,https://www.dropbox.com/s/uwuifnxrv1yodwn/south_seattle.bin.zip?dl=0 +data/input/raw_maps/south_seattle.bin,0bafee9da613d59a9af65b4b16223b45,https://www.dropbox.com/s/oh9epdy4c7jspzg/south_seattle.bin.zip?dl=0 data/input/raw_maps/southbank.bin,1e372b963da2c09e711cae6e2d4f481e,https://www.dropbox.com/s/ajlh4z2838l54wd/southbank.bin.zip?dl=0 data/input/raw_maps/tel_aviv.bin,c49e439e73bfd05956bacd3d9dee4de0,https://www.dropbox.com/s/fpv6gd2lz8p5tvj/tel_aviv.bin.zip?dl=0 -data/input/raw_maps/udistrict.bin,3e3605b32aa78c6977b2187b91675006,https://www.dropbox.com/s/ezinud104h9n1wd/udistrict.bin.zip?dl=0 -data/input/raw_maps/west_seattle.bin,7d6f30e9594b37357bc43886bd1f181e,https://www.dropbox.com/s/d8s025hzif0wqho/west_seattle.bin.zip?dl=0 +data/input/raw_maps/udistrict.bin,cade82ad30916859fcb0c206e5c41b2b,https://www.dropbox.com/s/aelextrfsb7lv56/udistrict.bin.zip?dl=0 +data/input/raw_maps/west_seattle.bin,20202f7c72e36c8023c1177306e6783a,https://www.dropbox.com/s/26g0xx72p3gm3te/west_seattle.bin.zip?dl=0 data/input/raw_maps/xian.bin,6bd3b6f92460f4335203b0fb6efe9f91,https://www.dropbox.com/s/rgtbw69tx48ig76/xian.bin.zip?dl=0 -data/input/screenshots/downtown.zip,b6803634830ea23910a114e69bb79662,https://www.dropbox.com/s/qawd35wz62m2acl/downtown.zip.zip?dl=0 -data/input/screenshots/krakow_center.zip,07551faac1737df7149bf346996317e8,https://www.dropbox.com/s/azea6v6mnxbe0vc/krakow_center.zip.zip?dl=0 -data/input/screenshots/lakeslice.zip,fadab2935bbf44292fcef9d902fcd79a,https://www.dropbox.com/s/06mwgdt6orow3rk/lakeslice.zip.zip?dl=0 -data/input/screenshots/montlake.zip,9b84508aa50ec2f2bae296a0d43a7fa8,https://www.dropbox.com/s/eblgq5zj3gflhwx/montlake.zip.zip?dl=0 -data/input/screenshots/southbank.zip,e5fc5e135e7eae80dbe35851931a6a32,https://www.dropbox.com/s/2smj2sw9gq7ajwx/southbank.zip.zip?dl=0 -data/input/screenshots/udistrict.zip,91501aeb393318102b66866442205b86,https://www.dropbox.com/s/nlyxnfy11qszk50/udistrict.zip.zip?dl=0 +data/input/screenshots/downtown.zip,2c2a05f807112cc14e516bea30161d50,https://www.dropbox.com/s/qawd35wz62m2acl/downtown.zip.zip?dl=0 +data/input/screenshots/krakow_center.zip,c5102938d146d530d9caaf94e26e10b1,https://www.dropbox.com/s/azea6v6mnxbe0vc/krakow_center.zip.zip?dl=0 +data/input/screenshots/lakeslice.zip,e3a6eb0007ea537dfe655ee5ed69bb48,https://www.dropbox.com/s/06mwgdt6orow3rk/lakeslice.zip.zip?dl=0 +data/input/screenshots/montlake.zip,23fdc0f77af7c72141677055facc59aa,https://www.dropbox.com/s/59xtbot06ps0ab6/montlake.zip.zip?dl=0 +data/input/screenshots/southbank.zip,ef8ab513c72c9e3e418c3a725d94d363,https://www.dropbox.com/s/f1i64ic454ooxtr/southbank.zip.zip?dl=0 +data/input/screenshots/udistrict.zip,7d86b27cfaf077872b6b45125f13686b,https://www.dropbox.com/s/nlyxnfy11qszk50/udistrict.zip.zip?dl=0 data/input/seattle/N47W122.hgt,0db4e23e51f7680538b0bbbc72208e07,https://www.dropbox.com/s/mmb4mgutwotijdw/N47W122.hgt.zip?dl=0 -data/input/seattle/ballard_separate_cycleways.bin,e8c00c52bf087e08a130121fddfdf12e,https://www.dropbox.com/s/qopnafo3qncj0x9/ballard_separate_cycleways.bin.zip?dl=0 +data/input/seattle/ballard_separate_cycleways.bin,adc34d7fca8431a0e53acc996897ecf1,https://www.dropbox.com/s/qqj2g782q0d425j/ballard_separate_cycleways.bin.zip?dl=0 data/input/seattle/ballard_snapped_cycleways.bin,1f25c6dac0d0c8f01b187031c4bcf58c,https://www.dropbox.com/s/fwfez964qnmgpqi/ballard_snapped_cycleways.bin.zip?dl=0 data/input/seattle/blockface.bin,add872bab9040ae911366328a230f8b5,https://www.dropbox.com/s/rxd2care60tbe75/blockface.bin.zip?dl=0 data/input/seattle/blockface.kml,350bd9e59bf2af4e885a7c0741e6ee6b,https://www.dropbox.com/s/ukknmpjdvilncq9/blockface.kml.zip?dl=0 -data/input/seattle/downtown_separate_cycleways.bin,1bdf982cddad0c9e771775f04b5fd680,https://www.dropbox.com/s/t3mlxpjnl4fe8bq/downtown_separate_cycleways.bin.zip?dl=0 +data/input/seattle/downtown_separate_cycleways.bin,e09a5fc1ba053074baf09937dee2c1fc,https://www.dropbox.com/s/e3u68i20o572mu1/downtown_separate_cycleways.bin.zip?dl=0 data/input/seattle/downtown_snapped_cycleways.bin,ece26188973856f10bcebe54b84b14da,https://www.dropbox.com/s/04udsnariucippl/downtown_snapped_cycleways.bin.zip?dl=0 -data/input/seattle/footways.bin,a4a994b51299cd55b9659b7a4966bd86,https://www.dropbox.com/s/ppiy8z49vli3d4a/footways.bin.zip?dl=0 +data/input/seattle/footways.bin,09c6aca2ad37d007c6bd40b91886ed95,https://www.dropbox.com/s/u4i3138idj1ih7r/footways.bin.zip?dl=0 data/input/seattle/google_transit/agency.txt,75f564fcc06b1950b7b33acf9d61f696,https://www.dropbox.com/s/z0idqw556c8ouu0/agency.txt.zip?dl=0 data/input/seattle/google_transit/block.txt,bc4926e7436fe46b2a48117e2d564c9c,https://www.dropbox.com/s/bemtme7l3sjmr8b/block.txt.zip?dl=0 data/input/seattle/google_transit/block_trip.txt,8d3626586ddbb1a384931215580de078,https://www.dropbox.com/s/kuztkmujnt9pr1v/block_trip.txt.zip?dl=0 @@ -58,66 +58,66 @@ data/input/seattle/google_transit/shapes.txt,aebada05d6d05c78551adb634b748e22,ht data/input/seattle/google_transit/stop_times.txt,1f1d148b266142b72ab24816d76a9cee,https://www.dropbox.com/s/zvg6o7olxagd3rt/stop_times.txt.zip?dl=0 data/input/seattle/google_transit/stops.txt,da1ff7000efdf2166d861479a69d80a4,https://www.dropbox.com/s/w4g0leglckiv4es/stops.txt.zip?dl=0 data/input/seattle/google_transit/trips.txt,e8efe1d2e130e248942188284d88ab09,https://www.dropbox.com/s/lw0hhnqttns2h8z/trips.txt.zip?dl=0 -data/input/seattle/huge_seattle_separate_cycleways.bin,a8851968e121ca577e54aeb53fdf7d0e,https://www.dropbox.com/s/soddll26r7cj0fm/huge_seattle_separate_cycleways.bin.zip?dl=0 -data/input/seattle/huge_seattle_snapped_cycleways.bin,620b615c1c1bf434463c14045d3ac56d,https://www.dropbox.com/s/n613496yq3f4kcq/huge_seattle_snapped_cycleways.bin.zip?dl=0 -data/input/seattle/lakeslice_separate_cycleways.bin,bf2dc3c74caeefa0c702c03b6bb28a6b,https://www.dropbox.com/s/2up2b7m8tami4yc/lakeslice_separate_cycleways.bin.zip?dl=0 +data/input/seattle/huge_seattle_separate_cycleways.bin,3f22cda2d64de4934b6e9b3db5cbad66,https://www.dropbox.com/s/96zvqrunfrn3r1j/huge_seattle_separate_cycleways.bin.zip?dl=0 +data/input/seattle/huge_seattle_snapped_cycleways.bin,8ec684df2622622e5b30a4cab5bfed68,https://www.dropbox.com/s/n613496yq3f4kcq/huge_seattle_snapped_cycleways.bin.zip?dl=0 +data/input/seattle/lakeslice_separate_cycleways.bin,d734eed64434b1c5240dd46b571ac12e,https://www.dropbox.com/s/kj88ogdg43ab2qp/lakeslice_separate_cycleways.bin.zip?dl=0 data/input/seattle/lakeslice_snapped_cycleways.bin,30916279d151f97fd7ff6653eaef8719,https://www.dropbox.com/s/5uf52oy8qubzzcl/lakeslice_snapped_cycleways.bin.zip?dl=0 -data/input/seattle/montlake_separate_cycleways.bin,4c6c6925f41312c86b3ed4e4abedef32,https://www.dropbox.com/s/rpc345ztmsx9ai4/montlake_separate_cycleways.bin.zip?dl=0 +data/input/seattle/montlake_separate_cycleways.bin,bf6471546c2431b8a5aaacf74538dd05,https://www.dropbox.com/s/h2r73o7zff22ych/montlake_separate_cycleways.bin.zip?dl=0 data/input/seattle/montlake_snapped_cycleways.bin,bad5e9c0a0ca11b8e73d79e47ab903a2,https://www.dropbox.com/s/yqv2zvt66ceyaij/montlake_snapped_cycleways.bin.zip?dl=0 data/input/seattle/offstreet_parking.bin,a33c05e8962dfe10a7a14b9eb6413803,https://www.dropbox.com/s/7j2gwb18685kd5u/offstreet_parking.bin.zip?dl=0 data/input/seattle/offstreet_parking.kml,e24d1c308ca739df73621846c7b7847c,https://www.dropbox.com/s/dkkkpywob7cdo57/offstreet_parking.kml.zip?dl=0 -data/input/seattle/osm/ballard.osm,b9e0889bdcbb17380a8e6a1c440722af,https://www.dropbox.com/s/wsva30pfzmqevk9/ballard.osm.zip?dl=0 -data/input/seattle/osm/downtown.osm,77b87784c4162d6360e460eba5259ab6,https://www.dropbox.com/s/kx9txt5rgtpp63j/downtown.osm.zip?dl=0 -data/input/seattle/osm/huge_seattle.osm,6503d949b660b731f160342ce540bd21,https://www.dropbox.com/s/z0c183htp54i5hq/huge_seattle.osm.zip?dl=0 -data/input/seattle/osm/lakeslice.osm,5f55338ca66c4035c3d5d97db071bcee,https://www.dropbox.com/s/phga7kagrt30buu/lakeslice.osm.zip?dl=0 -data/input/seattle/osm/montlake.osm,41fc02cd60b8173433971aaaf620cba4,https://www.dropbox.com/s/jqjn0d8ehlubijx/montlake.osm.zip?dl=0 -data/input/seattle/osm/south_seattle.osm,f8265f1738b3df32360aaeccf44f893c,https://www.dropbox.com/s/oonzen5ymajh8sr/south_seattle.osm.zip?dl=0 -data/input/seattle/osm/udistrict.osm,7c6ed0776f8889bb2b4d0fd5a398e8e6,https://www.dropbox.com/s/1z0j5uahn173ble/udistrict.osm.zip?dl=0 -data/input/seattle/osm/washington-latest.osm.pbf,07f1697b55e076486dc05bd2c0288e82,https://www.dropbox.com/s/h1nobmjc0q19uj4/washington-latest.osm.pbf.zip?dl=0 -data/input/seattle/osm/west_seattle.osm,c5bfdf99f6b51194eaffdbcdc8c49ffe,https://www.dropbox.com/s/s3c1ayp9c50iyrw/west_seattle.osm.zip?dl=0 -data/input/seattle/parcels.bin,5c3c4121f09e71c9f6572849d6c64143,https://www.dropbox.com/s/6p4ojx32rwntb4w/parcels.bin.zip?dl=0 +data/input/seattle/osm/ballard.osm,f1fabfda271614393aee8c9aa4797afa,https://www.dropbox.com/s/8zj58c49mjcsvwc/ballard.osm.zip?dl=0 +data/input/seattle/osm/downtown.osm,390d049823a5be08b10eb62e8321d922,https://www.dropbox.com/s/h8uwqmpca37np5o/downtown.osm.zip?dl=0 +data/input/seattle/osm/huge_seattle.osm,041c05c0ef2b5b5344ba99c0370fc7f2,https://www.dropbox.com/s/tmwoduf748xrekz/huge_seattle.osm.zip?dl=0 +data/input/seattle/osm/lakeslice.osm,4b4109d25092414404b26325933e6a4d,https://www.dropbox.com/s/p4uiu2kfg3h2jby/lakeslice.osm.zip?dl=0 +data/input/seattle/osm/montlake.osm,54d1a86b873ba135f3220ddd89899bb7,https://www.dropbox.com/s/yrxuk3oz8fxnlk8/montlake.osm.zip?dl=0 +data/input/seattle/osm/south_seattle.osm,aeafea7b1d390389f0ea75a30954008e,https://www.dropbox.com/s/2218txoe568sdbh/south_seattle.osm.zip?dl=0 +data/input/seattle/osm/udistrict.osm,41d0109c61665a53b5cd1bd11acf0363,https://www.dropbox.com/s/o7gwp3vzgsrhbz8/udistrict.osm.zip?dl=0 +data/input/seattle/osm/washington-latest.osm.pbf,948d49da8aae15d99bd36e95c7c27ef2,https://www.dropbox.com/s/b160fhf3tfo8ucn/washington-latest.osm.pbf.zip?dl=0 +data/input/seattle/osm/west_seattle.osm,d8a7e897774db567728f9a70337ef376,https://www.dropbox.com/s/wt578gwg42ml9ow/west_seattle.osm.zip?dl=0 +data/input/seattle/parcels.bin,9cd91b7fa68b13634b21be7abfa0e654,https://www.dropbox.com/s/m454cixa7nbhq2m/parcels.bin.zip?dl=0 data/input/seattle/parcels_urbansim.txt,db63d7d606e8702d12f9399e87e6a00f,https://www.dropbox.com/s/6g8rbsf200dssj3/parcels_urbansim.txt.zip?dl=0 -data/input/seattle/popdat.bin,525a06f36b67810b3afc4d1cfdcae813,https://www.dropbox.com/s/u8uq0rz1jnx5hz3/popdat.bin.zip?dl=0 -data/input/seattle/service_roads.bin,92f1056d581d7e31640af8d2b02e80c2,https://www.dropbox.com/s/aejg97xmhh2qkno/service_roads.bin.zip?dl=0 -data/input/seattle/south_seattle_separate_cycleways.bin,acf294054b1e11a5f2082e4bf41cc161,https://www.dropbox.com/s/smu9lswzjptlvwf/south_seattle_separate_cycleways.bin.zip?dl=0 +data/input/seattle/popdat.bin,592592ec7bd0dadc7b09ee96a4d086a7,https://www.dropbox.com/s/fe8xsfhuan7w7dj/popdat.bin.zip?dl=0 +data/input/seattle/service_roads.bin,550f1e72408b63781596ec26b6daa1d0,https://www.dropbox.com/s/0konam8z33ulepy/service_roads.bin.zip?dl=0 +data/input/seattle/south_seattle_separate_cycleways.bin,08f10b7f1eb5543a877073815da0515c,https://www.dropbox.com/s/sn0c359kq4zezbl/south_seattle_separate_cycleways.bin.zip?dl=0 data/input/seattle/south_seattle_snapped_cycleways.bin,92bb9e7d7b8d89e63ecb4d9fe54e3b7f,https://www.dropbox.com/s/lcu1u73kubxty9k/south_seattle_snapped_cycleways.bin.zip?dl=0 data/input/seattle/trips_2014.csv,d4a8e733045b28c0385fb81359d6df03,https://www.dropbox.com/s/5ppravwmk6bf20d/trips_2014.csv.zip?dl=0 -data/input/seattle/udistrict_separate_cycleways.bin,f3eb6e24e86fe691d4d072108ae45f7b,https://www.dropbox.com/s/mysheebjygzrkpi/udistrict_separate_cycleways.bin.zip?dl=0 -data/input/seattle/udistrict_snapped_cycleways.bin,bcea0f2da9f979c814db74d63482f9cf,https://www.dropbox.com/s/zpznqax43fxl7xp/udistrict_snapped_cycleways.bin.zip?dl=0 -data/input/seattle/west_seattle_separate_cycleways.bin,a5438a196845f8fd86088ce88239d5d5,https://www.dropbox.com/s/3nbk0gs8duno9zd/west_seattle_separate_cycleways.bin.zip?dl=0 +data/input/seattle/udistrict_separate_cycleways.bin,e43032fab6b06416ffb6cdd3c1b59b84,https://www.dropbox.com/s/nz551yfdosw19ww/udistrict_separate_cycleways.bin.zip?dl=0 +data/input/seattle/udistrict_snapped_cycleways.bin,937654a8be61da06486d3c5c5304132c,https://www.dropbox.com/s/zpznqax43fxl7xp/udistrict_snapped_cycleways.bin.zip?dl=0 +data/input/seattle/west_seattle_separate_cycleways.bin,0c9c531dc3a61c628b5e4beec9199a61,https://www.dropbox.com/s/nhjdr9u4wnm7xf0/west_seattle_separate_cycleways.bin.zip?dl=0 data/input/seattle/west_seattle_snapped_cycleways.bin,4a8e438b0795360aa7fec1ebacd64233,https://www.dropbox.com/s/f7dz2e4o6k4c2ix/west_seattle_snapped_cycleways.bin.zip?dl=0 data/input/tel_aviv/footways.bin,4fb70e32d0cc3ddeaa8924c240bc9d5b,https://www.dropbox.com/s/ka38f1kwjgm0fpo/footways.bin.zip?dl=0 data/input/tel_aviv/osm/israel-and-palestine-latest.osm.pbf,d5b0d6a26bfdedd32cc5c9c26e6fd426,https://www.dropbox.com/s/ehwhbhp03zuy1qn/israel-and-palestine-latest.osm.pbf.zip?dl=0 data/input/tel_aviv/osm/tel_aviv.osm,eeb7f3813a33f754eceed13766a3c236,https://www.dropbox.com/s/kqvn0iifhmmcjve/tel_aviv.osm.zip?dl=0 data/input/tel_aviv/service_roads.bin,216407d6f112683e81973fbb11af6403,https://www.dropbox.com/s/7rscshpat7dyzxv/service_roads.bin.zip?dl=0 -data/input/tel_aviv/tel_aviv_separate_cycleways.bin,dbcfb0b474fa744bbcfe417a6ab6166b,https://www.dropbox.com/s/p62d1gum2e04rp9/tel_aviv_separate_cycleways.bin.zip?dl=0 -data/input/tel_aviv/tel_aviv_snapped_cycleways.bin,9d2377846fbc40501bee851e1d555930,https://www.dropbox.com/s/wq2oco1u22gzwou/tel_aviv_snapped_cycleways.bin.zip?dl=0 +data/input/tel_aviv/tel_aviv_separate_cycleways.bin,ec0245236866ded8a2724d30d4c94325,https://www.dropbox.com/s/p62d1gum2e04rp9/tel_aviv_separate_cycleways.bin.zip?dl=0 +data/input/tel_aviv/tel_aviv_snapped_cycleways.bin,7fc1a48c5684bf817d41f1bd18c00335,https://www.dropbox.com/s/wq2oco1u22gzwou/tel_aviv_snapped_cycleways.bin.zip?dl=0 data/input/xian/footways.bin,425becbab867631415fe49edcf8f9694,https://www.dropbox.com/s/6hf4t4ovk1m1wi3/footways.bin.zip?dl=0 data/input/xian/osm/china-latest.osm.pbf,0108807f1dc321d5de5579622ac3f4cf,https://www.dropbox.com/s/qewwxtioocbv3ld/china-latest.osm.pbf.zip?dl=0 data/input/xian/osm/xian.osm,4084c665ad947bb40173a43cb33fdec8,https://www.dropbox.com/s/j5qwt33bs077sd2/xian.osm.zip?dl=0 data/input/xian/service_roads.bin,c9a1a296817cfbd6c64dbe0d3389c40a,https://www.dropbox.com/s/wm4ga2kay4v4ija/service_roads.bin.zip?dl=0 data/system/cities/seattle.bin,8da14a93b17f336cc8ee6e0bdbd84fcc,https://www.dropbox.com/s/ibvdbbdjdi233mr/seattle.bin.zip?dl=0 -data/system/maps/ballard.bin,d825619f3a6ca9712a7b48d4ec9c500b,https://www.dropbox.com/s/uablvvit3397i2x/ballard.bin.zip?dl=0 -data/system/maps/berlin_center.bin,47ff46d7c6e4f68bd549d592804d7e0a,https://www.dropbox.com/s/tmdrewfqd2usk8r/berlin_center.bin.zip?dl=0 -data/system/maps/downtown.bin,16d926e1edc151104f50ea199c4f395f,https://www.dropbox.com/s/jy46osee5ye374l/downtown.bin.zip?dl=0 -data/system/maps/huge_seattle.bin,483393355e9b5902fe4437225eade2f9,https://www.dropbox.com/s/t6cjng4dtv281nj/huge_seattle.bin.zip?dl=0 -data/system/maps/krakow_center.bin,950d602d1f02467d5d676cefe026ab31,https://www.dropbox.com/s/33jhskqceqw96qy/krakow_center.bin.zip?dl=0 -data/system/maps/lakeslice.bin,b2717a4f8784b3ec2c0479848da72734,https://www.dropbox.com/s/n33n09o4v3cb13u/lakeslice.bin.zip?dl=0 -data/system/maps/montlake.bin,45138dbbb2bb36ced999bb3fc65e97f2,https://www.dropbox.com/s/qjs6hd48m8leiot/montlake.bin.zip?dl=0 -data/system/maps/south_seattle.bin,5ddac6ecb938f81c93276939a1bd8e7c,https://www.dropbox.com/s/2poezd8vzc5oter/south_seattle.bin.zip?dl=0 -data/system/maps/southbank.bin,bf76074045a61b9542cd6724871c4865,https://www.dropbox.com/s/9wrz7u4tp5zijhy/southbank.bin.zip?dl=0 -data/system/maps/tel_aviv.bin,3e06ccd82eb53157dd97d9310a3590e2,https://www.dropbox.com/s/2ljqnkvhowwj7lp/tel_aviv.bin.zip?dl=0 -data/system/maps/udistrict.bin,6fa7ada9427089dde9a57827d023aec2,https://www.dropbox.com/s/kommp2bnog0hnet/udistrict.bin.zip?dl=0 -data/system/maps/west_seattle.bin,bbe60f278c14a534eff5294196d986e0,https://www.dropbox.com/s/wncsgu38lluwsg0/west_seattle.bin.zip?dl=0 -data/system/maps/xian.bin,58b48ea8f5dbfa367b671639ae2c3762,https://www.dropbox.com/s/g80x7d26ce3htw3/xian.bin.zip?dl=0 -data/system/prebaked_results/lakeslice/weekday.bin,4446b154e6552004df466ef5f26d1375,https://www.dropbox.com/s/5vtfbhportkgvsw/weekday.bin.zip?dl=0 +data/system/maps/ballard.bin,cf1ee807cf67453ce0d92fd7ae2353a0,https://www.dropbox.com/s/xxdgxmjg7h3bine/ballard.bin.zip?dl=0 +data/system/maps/berlin_center.bin,0e1e361ee45589810b44b7d69f08ebd5,https://www.dropbox.com/s/ku1n7i6e3mv1tu5/berlin_center.bin.zip?dl=0 +data/system/maps/downtown.bin,7c4a5f424502f2bb9d6fc93bf02523ac,https://www.dropbox.com/s/pef9adhbitunea5/downtown.bin.zip?dl=0 +data/system/maps/huge_seattle.bin,402973a2f7e820dd654fdecc71775bbf,https://www.dropbox.com/s/nwl7c5v9ypn34fi/huge_seattle.bin.zip?dl=0 +data/system/maps/krakow_center.bin,4d883a4e9bf320746989dbcf8c3ac1c8,https://www.dropbox.com/s/cc0o6xlmqidexvg/krakow_center.bin.zip?dl=0 +data/system/maps/lakeslice.bin,b05e4da0cd528753211aa5bb41c7fc94,https://www.dropbox.com/s/5nxu70vt5lcdqh1/lakeslice.bin.zip?dl=0 +data/system/maps/montlake.bin,6cdf3d134bc3714ca2b9b536a7b11517,https://www.dropbox.com/s/3sq35evuakzr7oj/montlake.bin.zip?dl=0 +data/system/maps/south_seattle.bin,a789ebb3f6d55e98069acad329c167a5,https://www.dropbox.com/s/2y1qqa7sxekrpwa/south_seattle.bin.zip?dl=0 +data/system/maps/southbank.bin,7aa6c94501fd745cbe9122702d46ff0c,https://www.dropbox.com/s/67zc7x6gdyqtomg/southbank.bin.zip?dl=0 +data/system/maps/tel_aviv.bin,839283d1d221db99227645a462f6dc68,https://www.dropbox.com/s/sz1xf73f914twz5/tel_aviv.bin.zip?dl=0 +data/system/maps/udistrict.bin,155ec2d919200447f278e78cbe2adc53,https://www.dropbox.com/s/129tidti59dynzh/udistrict.bin.zip?dl=0 +data/system/maps/west_seattle.bin,e867cc142ecf22d2dbd888a1cb76fd41,https://www.dropbox.com/s/ftqt1adtkd0vhdy/west_seattle.bin.zip?dl=0 +data/system/maps/xian.bin,35b50a1a8d33101c55947e4d5ee8985d,https://www.dropbox.com/s/ydl6tfzt2k60to5/xian.bin.zip?dl=0 +data/system/prebaked_results/lakeslice/weekday.bin,c72928da563ecfe0a2dbc7dd78fcc969,https://www.dropbox.com/s/z3cv2mv9xldmh6p/weekday.bin.zip?dl=0 data/system/prebaked_results/montlake/car vs bike contention.bin,4be92c76d13cc688eb2c88e583926943,https://www.dropbox.com/s/jefg0ikjy9dsrdd/car%20vs%20bike%20contention.bin.zip?dl=0 -data/system/prebaked_results/montlake/weekday.bin,d36eb0dbcb6928525b40404e9d1f0d13,https://www.dropbox.com/s/q7465f7tzjnxkz8/weekday.bin.zip?dl=0 -data/system/scenarios/ballard/weekday.bin,74fbda7283ccb630dec0e8dab9200819,https://www.dropbox.com/s/n9pbbb3d1v8wur5/weekday.bin.zip?dl=0 -data/system/scenarios/downtown/weekday.bin,04e7b2f5757a5cae264e0b53a9411f50,https://www.dropbox.com/s/1x9ql18axwq4zty/weekday.bin.zip?dl=0 -data/system/scenarios/huge_seattle/weekday.bin,5ef7098b124eb38777720eb01a63b8fc,https://www.dropbox.com/s/0ce9skh7qfplxvv/weekday.bin.zip?dl=0 -data/system/scenarios/lakeslice/weekday.bin,61df47b89d5a2d53ba2a5ab78eb642e2,https://www.dropbox.com/s/pkb3ati8szpul51/weekday.bin.zip?dl=0 -data/system/scenarios/montlake/weekday.bin,0608845d21f007a11c80e458088edf5f,https://www.dropbox.com/s/0lfgwfzs3r6o6b4/weekday.bin.zip?dl=0 -data/system/scenarios/south_seattle/weekday.bin,071de71a550bb578165c687bc4bdf20c,https://www.dropbox.com/s/1zjov3c2ukl68hb/weekday.bin.zip?dl=0 -data/system/scenarios/udistrict/weekday.bin,2c94a85f8295c6fe67c9ba910338cfa2,https://www.dropbox.com/s/hh59duaelsrdgki/weekday.bin.zip?dl=0 -data/system/scenarios/west_seattle/weekday.bin,3ea114963741ba3948f661adc71be3fe,https://www.dropbox.com/s/166qk1mma35rlax/weekday.bin.zip?dl=0 +data/system/prebaked_results/montlake/weekday.bin,bdd6e5e5cd345adf7febb52cf088ae6b,https://www.dropbox.com/s/dzz0lt9u2yefond/weekday.bin.zip?dl=0 +data/system/scenarios/ballard/weekday.bin,28bc1a439ae3008e79ff4f50774f75ae,https://www.dropbox.com/s/emxahg3n09bs1gx/weekday.bin.zip?dl=0 +data/system/scenarios/downtown/weekday.bin,37ccb2ade5a2df0665d7595c58958932,https://www.dropbox.com/s/rdbm9qs1jcw2xyi/weekday.bin.zip?dl=0 +data/system/scenarios/huge_seattle/weekday.bin,f8944e98e476b34fad6fea276f38a52c,https://www.dropbox.com/s/56bbhtwdpfi3vfd/weekday.bin.zip?dl=0 +data/system/scenarios/lakeslice/weekday.bin,d504c553d229025409e92cdbccbaa35a,https://www.dropbox.com/s/k7er10f3nthzfbf/weekday.bin.zip?dl=0 +data/system/scenarios/montlake/weekday.bin,6df30a7feb9e5cca4135382ae8dcee00,https://www.dropbox.com/s/cphkbndeha97swr/weekday.bin.zip?dl=0 +data/system/scenarios/south_seattle/weekday.bin,3f34507bea320ed907f53684a4060401,https://www.dropbox.com/s/2jyg4rwajjm4o1w/weekday.bin.zip?dl=0 +data/system/scenarios/udistrict/weekday.bin,3cf0ec9a2d71cbf2b8baef75084199c4,https://www.dropbox.com/s/pjtwygwmgi0drbg/weekday.bin.zip?dl=0 +data/system/scenarios/west_seattle/weekday.bin,803bfb65a004e0959da3a341bf1726f2,https://www.dropbox.com/s/0njzv1xz4k0f5ew/weekday.bin.zip?dl=0 diff --git a/data/route_goldenfiles/downtown.txt b/data/route_goldenfiles/downtown.txt index 4082c90800..ce35683dab 100644 --- a/data/route_goldenfiles/downtown.txt +++ b/data/route_goldenfiles/downtown.txt @@ -1,12 +1,12 @@ -https://www.openstreetmap.org/relation/8624462 from Lane #8145 to None - 3rd Ave & Madison St: Position(Lane #17279, 64.6298m) driving, Position(Lane #17278, 64.6692m) sidewalk - 3rd Ave & Union St: Position(Lane #12767, 86.6295m) driving, Position(Lane #12768, 86.6407m) sidewalk -https://www.openstreetmap.org/relation/8624463 from Lane #8145 to None - 3rd Ave & Madison St: Position(Lane #17279, 64.6298m) driving, Position(Lane #17278, 64.6692m) sidewalk - 3rd Ave & Union St: Position(Lane #12767, 86.6295m) driving, Position(Lane #12768, 86.6407m) sidewalk -https://www.openstreetmap.org/relation/9338838 from Lane #8145 to None - 3rd Ave & Madison St: Position(Lane #17279, 64.6298m) driving, Position(Lane #17278, 64.6692m) sidewalk - 3rd Ave & Union St: Position(Lane #12767, 86.6295m) driving, Position(Lane #12768, 86.6407m) sidewalk -https://www.openstreetmap.org/relation/9341184 from Lane #8145 to None - 3rd Ave & Madison St: Position(Lane #17279, 64.6298m) driving, Position(Lane #17278, 64.6692m) sidewalk - 3rd Ave & Union St: Position(Lane #12767, 86.6295m) driving, Position(Lane #12768, 86.6407m) sidewalk +https://www.openstreetmap.org/relation/8624462 from Lane #8140 to None + 3rd Ave & Madison St: Position(Lane #17242, 64.6298m) driving, Position(Lane #17241, 64.6692m) sidewalk + 3rd Ave & Union St: Position(Lane #12730, 86.6295m) driving, Position(Lane #12731, 86.6407m) sidewalk +https://www.openstreetmap.org/relation/8624463 from Lane #8140 to None + 3rd Ave & Madison St: Position(Lane #17242, 64.6298m) driving, Position(Lane #17241, 64.6692m) sidewalk + 3rd Ave & Union St: Position(Lane #12730, 86.6295m) driving, Position(Lane #12731, 86.6407m) sidewalk +https://www.openstreetmap.org/relation/9338838 from Lane #8140 to None + 3rd Ave & Madison St: Position(Lane #17242, 64.6298m) driving, Position(Lane #17241, 64.6692m) sidewalk + 3rd Ave & Union St: Position(Lane #12730, 86.6295m) driving, Position(Lane #12731, 86.6407m) sidewalk +https://www.openstreetmap.org/relation/9341184 from Lane #8140 to None + 3rd Ave & Madison St: Position(Lane #17242, 64.6298m) driving, Position(Lane #17241, 64.6692m) sidewalk + 3rd Ave & Union St: Position(Lane #12730, 86.6295m) driving, Position(Lane #12731, 86.6407m) sidewalk diff --git a/map_model/src/make/turns.rs b/map_model/src/make/turns.rs index 532b41287e..170bc5d734 100644 --- a/map_model/src/make/turns.rs +++ b/map_model/src/make/turns.rs @@ -332,32 +332,36 @@ fn remove_merging_turns(map: &Map, input: Vec, turn_type: TurnType) -> Vec continue; } - // TODO Handle >1 left/right turn lane. - if group.iter().map(|t| t.id.dst).collect::>().len() > 1 { - turns.extend(group); - continue; - } - - // We have multiple lanes all with a turn to the same destination lane. Most likely, only + // We have multiple lanes all with a turn to the same destination road. Most likely, only // the rightmost or leftmost can actually make the turn. + // TODO If OSM turn restrictions explicitly have something like "left|left|", then there + // are multiple source lanes! let road = map.get_parent(group[0].id.src); - if turn_type == TurnType::Right { - turns.push( - group - .into_iter() - .max_by_key(|t| road.dir_and_offset(t.id.src).1) - .unwrap(), - ); + let src = if turn_type == TurnType::Right { + group + .iter() + .max_by_key(|t| road.dir_and_offset(t.id.src).1) + .unwrap() + .id + .src } else if turn_type == TurnType::Left { - turns.push( - group - .into_iter() - .min_by_key(|t| road.dir_and_offset(t.id.src).1) - .unwrap(), - ); + group + .iter() + .min_by_key(|t| road.dir_and_offset(t.id.src).1) + .unwrap() + .id + .src } else { unreachable!() + }; + for t in group { + if t.id.src == src { + turns.push(t); + } } + + // That left or rightmost lane can turn into all lanes on the destination road. Tempting to + // remove this, but it may remove some valid U-turn movements (like on Mercer). } turns } diff --git a/map_tests/goldenfiles/multiple_left_turn_lanes.txt b/map_tests/goldenfiles/multiple_left_turn_lanes.txt index 0c3bac54e1..192e998870 100644 --- a/map_tests/goldenfiles/multiple_left_turn_lanes.txt +++ b/map_tests/goldenfiles/multiple_left_turn_lanes.txt @@ -10,34 +10,19 @@ TurnID(Lane #6, Lane #19, Intersection #0) is a Left TurnID(Lane #7, Lane #1, Intersection #0) is a Straight TurnID(Lane #7, Lane #2, Intersection #0) is a Straight TurnID(Lane #7, Lane #3, Intersection #0) is a Straight -TurnID(Lane #7, Lane #17, Intersection #0) is a Left -TurnID(Lane #7, Lane #18, Intersection #0) is a Left -TurnID(Lane #7, Lane #19, Intersection #0) is a Left TurnID(Lane #8, Lane #1, Intersection #0) is a Straight TurnID(Lane #8, Lane #2, Intersection #0) is a Straight TurnID(Lane #8, Lane #3, Intersection #0) is a Straight -TurnID(Lane #8, Lane #17, Intersection #0) is a Left -TurnID(Lane #8, Lane #18, Intersection #0) is a Left -TurnID(Lane #8, Lane #19, Intersection #0) is a Left TurnID(Lane #9, Lane #5, Intersection #0) is a Crosswalk TurnID(Lane #9, Lane #10, Intersection #0) is a SharedSidewalkCorner TurnID(Lane #10, Lane #9, Intersection #0) is a SharedSidewalkCorner TurnID(Lane #10, Lane #15, Intersection #0) is a Crosswalk -TurnID(Lane #11, Lane #1, Intersection #0) is a Right -TurnID(Lane #11, Lane #2, Intersection #0) is a Right -TurnID(Lane #11, Lane #3, Intersection #0) is a Right TurnID(Lane #11, Lane #17, Intersection #0) is a Straight TurnID(Lane #11, Lane #18, Intersection #0) is a Straight TurnID(Lane #11, Lane #19, Intersection #0) is a Straight -TurnID(Lane #12, Lane #1, Intersection #0) is a Right -TurnID(Lane #12, Lane #2, Intersection #0) is a Right -TurnID(Lane #12, Lane #3, Intersection #0) is a Right TurnID(Lane #12, Lane #17, Intersection #0) is a Straight TurnID(Lane #12, Lane #18, Intersection #0) is a Straight TurnID(Lane #12, Lane #19, Intersection #0) is a Straight -TurnID(Lane #13, Lane #1, Intersection #0) is a Right -TurnID(Lane #13, Lane #2, Intersection #0) is a Right -TurnID(Lane #13, Lane #3, Intersection #0) is a Right TurnID(Lane #13, Lane #17, Intersection #0) is a Straight TurnID(Lane #13, Lane #18, Intersection #0) is a Straight TurnID(Lane #13, Lane #19, Intersection #0) is a Straight diff --git a/sim/src/mechanics/intersection.rs b/sim/src/mechanics/intersection.rs index 3cd0a6f46d..1b8ec75a05 100644 --- a/sim/src/mechanics/intersection.rs +++ b/sim/src/mechanics/intersection.rs @@ -781,13 +781,14 @@ impl SignalState { // TODO Sometimes a traffic signal is surrounded by tiny lanes with almost no capacity. Workaround // for now. fn allow_block_the_box(osm_node_id: i64) -> bool { - // 23rd and Madison, Madison and John, Boren and 12th, Boren and Yesler - osm_node_id == 53211694 - || osm_node_id == 53211693 + // 23rd and Madison, Madison and John, Boren and 12th, Boren and Yesler, Lake Wash and Madison + osm_node_id == 53211693 || osm_node_id == 53214134 || osm_node_id == 53214133 || osm_node_id == 53165712 || osm_node_id == 281487826 || osm_node_id == 53209840 || osm_node_id == 4249361353 + || osm_node_id == 987334546 + || osm_node_id == 848817336 }