# TODO - Map quality ## Boundary clipping - lakes missing from huge_seattle - just connecting the ends of ways doesnt always work well - maybe increase the Bounds for areas, and let clipping clean up later? - some border intersections have weird OOBish geometry, or the arrows look weird - simplify border node detection, only do it in convert_osm? ## Geometry - bad polyline shifting remains - from the remaining cases, looks like we need to totally remove some tight points and retry - make polygons use the corrections too? - bad polyline shifting causes jagged lane endings in generalized_trim_back - handle small roads again somehow? - reduce degenerate min trim. the disabled fix doesn't look great. - I40, I25, I0 cut corners when merged. disabled fix works, but breaks other things. - try it bigger - deal with loop roads? - model U-turns - degenerate-2's should only have one crosswalk - then make them thinner - car turns often clip sidewalk corners now - draw SharedSidewalkCorners just around the ped path, not arbitrarily thick - dont forget to draw the notches - figure out what to do about yellow center lines - intersections on one-ways look weird - yellow and white lines intersect cars and turn icons and such - who should own drawing them? ## More data - lanes: https://data-seattlecitygis.opendata.arcgis.com/datasets/49d417979fec452981a068ca078e7070_3 - not filled out for most streets - traffic circles: https://data-seattlecitygis.opendata.arcgis.com/datasets/717b10434d4945658355eba78b66971a_6 - https://data-seattlecitygis.opendata.arcgis.com/datasets/sidewalks - disagrees with OSM road centers sometimes - https://data-seattlecitygis.opendata.arcgis.com/datasets/curb-ramps - high quality thick roads: https://seattlecitygis.maps.arcgis.com/apps/webappviewer/index.html?id=86cb6824307c4d63b8e180ebcff58ce2 - OSM has footways - but theyre not marked everywhere - and theyre hard to associate with roads (sometimes need to infer a planter strip) - draw benches, bike racks - render trees - look for current stop sign priorities - https://gis-kingcounty.opendata.arcgis.com/datasets/traffic-signs--sign-point/ - http://guides.lib.uw.edu/research/gis/uw-lib_data has cool stuff, but .lyr?? ## Low-priority geometry issues - if building front path intersects another building, then scrap that building. - or wait, just require bldgs to be even closer to sidewalk first. - need to do polygon vs polygon check! - will need to speed it up with quadtree containing entire buildings. make sure these are easy to use. - can we make OSM buildings with holes? - experiment with https://docs.rs/clipping/0.1.1/clipping/gh/struct.CPolygon.html and https://github.com/21re/rust-geo-booleanop ## More problems to fix - Disconnected map - now that LCing model is simple... - Impossible turns (from a far bus lane to a crazy left) - Buildings intersecting roads, probably because bad lane inference - when this happens, get rid of parking lanes first (one or both sides?) - iterative process... have to redo affected roads and intersections - we havent filtered buildings by proximity to sidewalk yet - if we dont filter at all, we pick up some houseboats! :) should draw water... - undo disabled traffic signal assertion ## Map edits - lane type can affect border intersections - lane type can affect turn idx - assert turns are the same - crash when loading some edits (priori->bikelanez) - edit an intersection first, then change lanes to destroy turns. need to recalculate the policy, preserving edits! - just revert intersection and warn - or store overrides more granularly and warn or do something reasonable ## Release - publish the map data ## Sim bugs/tests needed - do bikes use bike lanes? - test that peds will use buses organically - make sure that we can jump to a ped on a bus and see the bus - park/unpark needs to jump two lanes in the case of crossing a bike lane or something - should only be able to park from the closest lane, though! ## Discrete-event sim model - gridlock - get_car_positions will recurse? - laggy head stuff will be inefficient without prevention? - preventish... dont start turn unless target WILL have capacity - stronger is room_at_end now, but thats too strict - best-case static capacity wont help (we might have longer buses and over-commit) - worst-case static capacity will stop shorter cars from going when they legit could - look at current occupants, find where the back WILL eventually wind up (just add up lengths + following dist, actually), then reserve after that. - cleanup after the cutover - explicit tests making cars park at 0 and max_dist, peds walk to 0 and max_dist - proper intersection policies, by seeing full view - time travel mode can be very smart - dupe code for initially spawning vs spawning when a trip leg starts. - validation (just do it in spawn and return an error?) - getting the path - converting goal into router and such - perf - speed up Scheduler - BinaryHeap - binheapplus not serde - std::cmp::Reverse not serde - so have to manually impl ord - BinaryHeap isnt PartialEq, which sim det stuff needs! - update() is very hard - priority_queue crate... internally uses hash, so serialization and determinism probably borked - dig into individual events, still too many? - for laggy heads, often round down and try slightly too early