Commit Graph

229 Commits

Author SHA1 Message Date
Dustin Carlino
302ec94e3d Try exporting the zoomed-in rendering of a map to geojson. #440
This approach has some manual effort and it's not capturing everything
yet, but it's a start.
2021-01-01 12:46:25 -08:00
Michael Kirk
acadad8bdf
fetch US census data from a hosted FlatGeoBuf (#432) 2020-12-31 16:20:32 -08:00
Dustin Carlino
312a721e63 Fold the separate seattle_traffic_signals git repo back into this one.
Originally it was split out to organize a separate volunteer mapping
effort, but that never took off, and it's unlikely to happen. When we
have to occasionally update the prebaked signal data for some
intersections, it's unnecessary friction to update the other repo.
2020-12-31 11:01:48 -08:00
Dustin Carlino
df59b477a5 Start importing Bellevue. Treat it as a separate city from Seattle, and
don't even check if Soundcast data covers it yet.

Now regenerate all map data.
2020-12-30 13:21:59 -08:00
Dustin Carlino
64ef2f025a Restore the ability to merge short roads at the RawMap layer and in the
map_editor. It was nuked in 182f5139a5,
when I decided the MapFixes approach wasn't worth it. #114

The restored version doesn't attempt to handle turn restrictions again
yet.
2020-12-28 17:21:20 -08:00
Bruce
3be45b8221
Add a Variable phase (#433)
* Add a Variable phase

Variable provides a min duration, a delay duration, and an additional duration. The maximum cycle time is min + additional. Once min has been exhausted, if there is demand, the cycle is extended by delay until there isn't any demand or the additional duration has been consumed.

#295
2020-12-24 12:33:47 -08:00
Dustin Carlino
6642c6e1a9 Rename the experiment crate in preparation for a Monday release 2020-12-19 10:01:28 -08:00
Dustin Carlino
799adbbdd4 Fix map loader on web. Remote paths wound up with an extra /, breaking
the deduping between remote and statically bundled files, which broke
one of the map loader panels with duplicate buttons.
2020-12-19 09:51:52 -08:00
Dustin Carlino
23dea95da3 Also deploy the OSM viewer and 15 min tool to the web 2020-12-18 12:36:19 -08:00
Michael Kirk
8b9b3ce2b1
census areas import (#425)
#424
2020-12-14 17:48:47 -08:00
Dustin Carlino
3b9246860a Upgrade winit and glutin. No noticeable changes. [rebuild] 2020-12-11 20:47:00 -08:00
Dustin Carlino
7e376de03f Start transforming an abstract schedule into a specific list of trips 2020-12-10 12:28:12 -08:00
Dustin Carlino
77a37f897b Wire together a UI to generate census-based scenarios 2020-12-10 09:35:50 -08:00
Dustin Carlino
f23dacbde7 Start some skeleton code for tomorrow's hackathon 2020-12-09 22:11:05 -08:00
Dustin Carlino
6e6e975923
There's no way it's this easy to add music... (#417) 2020-12-09 13:46:27 -08:00
Michael Kirk
0e759aa934
replace custom logger with env_logger (#414) 2020-12-07 12:58:47 -08:00
Dustin Carlino
83dee1cf59 Write player JSON data to local storage in WASM. Now progress in the
experiment is saved across browser sessions too!
2020-12-07 11:44:56 -08:00
Dustin Carlino
8af6e1343d Serialize game state on native. Figuring out how to do this on web next... 2020-12-07 11:01:43 -08:00
Dustin Carlino
e03f356a0e Depend on upstream usvg and fontdb, now with pure-Rust rustybuzz support
in web!
2020-12-07 10:30:50 -08:00
Dustin Carlino
08d6f6987f Figure out when we pass a building along a road 2020-12-02 18:00:51 -08:00
Dustin Carlino
f57fb8f2f6 Run the experiment on the web 2020-12-02 13:44:10 -08:00
Dustin Carlino
57963126fa Fold number of housing units into Building; ditch the extra file approach. 2020-12-01 12:43:19 -08:00
Dustin Carlino
c6a204332c Score deliveries based on the number of housing units, and color single-family vs apartments to reflect the points 2020-11-30 11:21:20 -08:00
Dustin Carlino
aa4d848a0e Figure out the number of single family and multi-family units per OSM building, from parcel data. Just store it in an extra system file for now. 2020-11-30 10:58:47 -08:00
Dustin Carlino
966ff76cd3 Let it snow...? Needs considerable work, looks awful. 2020-11-28 19:32:03 -08:00
Dustin Carlino
e589f89922 Add a simple progress bar for updater downloads. #410 2020-11-26 16:12:16 -08:00
Dustin Carlino
58b6c66c2b Consolidate console_log setup into abstutil, now that there are multiple binaries that should all have the behavior. 2020-11-26 14:40:05 -08:00
Dustin Carlino
ca83e7e679 Add some basic functionality to the mysterious experiment 2020-11-24 16:33:29 -08:00
Michael Kirk
61cd74767a
draw route to hovered building (#402)
for #393
2020-11-24 11:30:03 -08:00
Dustin Carlino
c450922211 Split out the 15min tool to its own crate. 2020-11-23 17:58:32 -08:00
Dustin Carlino
139d435bd3 Split out the OSM viewer to its own crate, porting over a simple form of current_selection. Temporarily omit the minimap and navigator from it. 2020-11-23 17:58:32 -08:00
Dustin Carlino
ad0d1ae7a4 Split out the OSM parking mapper into a separate app, temporarily
WITHOUT mouseover.
2020-11-23 17:58:32 -08:00
Dustin Carlino
e6d21d81e7 Add the city picker to the experiment, as a way to lift it to map_gui. 2020-11-23 17:58:32 -08:00
Dustin Carlino
859d78f2cf Refactor the CLI flag parsing that all apps will share. 2020-11-23 17:58:32 -08:00
Dustin Carlino
ab2f6fefec Split the controls experiment into a separate binary, get it to draw a
map way more simply than the game
2020-11-23 17:58:32 -08:00
Dustin Carlino
558eb6f716 Extract DrawMap into a separate crate, along with everything else it
depends on.

The goal is to be able to split things like the OSM viewer, parking
mapper, and 15 min tool into separate crates from the game, while still
sharing lots of code.
2020-11-23 17:58:32 -08:00
Dustin Carlino
b9bf23e420 Downgrade tokio. aa966d7533 broke headless and updater. Blocked on https://github.com/seanmonstar/reqwest/issues/1060 2020-11-12 10:31:52 -08:00
Dustin Carlino
aa966d7533 Upgrade a bunch of dependencies 2020-11-11 12:02:53 -08:00
Dustin Carlino
3e7c0e51c4 Set up a test scenario for lane-changing to reproduce #382. The same
problems aren't quite captured, but it's a start.
2020-11-11 11:33:47 -08:00
Dustin Carlino
8ab7855926 Update some throughput plot terminology. Also pin to upstream earcutr, now that a fix is merged. #331 2020-11-10 09:00:05 -08:00
Dustin Carlino
e0a8d82b61 Reorganize polygon files to importer/config, instead of data/input.
Nothing in data/input should be under version control; all of it is
managed by the updater. #326
2020-11-06 10:10:03 -08:00
Dustin Carlino
31fcf1b863 Prototype a UI to view aggregated collisions. #87 2020-11-05 17:53:54 -08:00
Dustin Carlino
ad7a25f7f2 Prototype a simple data format for collision data. Import data for Leeds and London. #87 2020-11-05 16:16:40 -08:00
Dustin Carlino
576e64e246 Consolidate integration tests from the map_tests crate and some of the
stuff smushed into game for some reason
2020-11-05 12:42:52 -08:00
Dustin Carlino
b47121ec8b Make the generic KML viewer also support CSV files containing one (lat, lon) point. More convenient way to explore data for #87 2020-11-04 09:47:19 -08:00
Dustin Carlino
21cd7a197d Run the experimental cycleway snapper phase for Leeds, after adding a
check to skip ways like https://www.openstreetmap.org/way/429285996,
which're unexpectedly loops.
2020-11-03 15:57:21 -08:00
Dustin Carlino
8920c2c0b8 Store gzipped files in S3 and decompress upon loading. A few basic tests
showed this is faster than downloading the uncompressed files, but of
course it probably depends on network speed vs CPU. #326

Also cut over the updater to use gzipped files using flate, instead of
single-file .zip's. [rebuild]
2020-10-31 18:09:48 -07:00
Dustin Carlino
1707b6fe37 Consolidate some PolyLine geometry code, and refactor some geom->geojson
mappings
2020-10-29 12:23:39 -07:00
Dustin Carlino
f187cf4bd8 Add an API call to export intersection geometry to geojson, for experimental streetmix3d integration.
To get an example:
> cargo run --bin headless -- --port=1234
> curl http://localhost:1234/map/get-intersection-geometry?id=291
2020-10-29 12:00:34 -07:00
Dustin Carlino
806d5d59db Just regenerate Cargo.lock; the format changed in rust 1.47, and I don't want a later diff updating deps to create a huge diff 2020-10-26 15:07:51 -07:00
Javed Nissar
c74dcf025f
Update georust (#371) 2020-10-23 10:41:00 -07:00
Dustin Carlino
bb669b7c1a Dump a savestate in the run_scenario tool when interrupted. Useful for
investigating why downtown has 45k live agents by 5pm... #368
2020-10-19 14:52:26 -05:00
Dustin Carlino
422882c03b Ditch cpuprofiler in favor of cargo flamegraph. Add a tool that just
runs a scenario headlessly, since that's easier than sending a few curl
commands to the API. #368
2020-10-15 17:12:38 -05:00
Dustin Carlino
989d5243b1 Move the data/manifest utils to abstutil, so the game crate can know
about all files that exist, even if they're not downloaded locally
(native) or to load other maps (web)
2020-10-08 12:50:18 -07:00
Dustin Carlino
fa4981787d Bake less huge data files into the .wasm. #21
This has the effect of breaking the city loader, because it lists
bundled files to discover other cities. Going to rethink that next.
2020-10-08 11:33:10 -07:00
Dustin Carlino
64bc4ee318
On the web, load different maps by making asynchronous HTTP calls. #21 (#364)
* On the web, load different maps by making asynchronous HTTP calls. #21

This is a very strange, specializd approach; it's unclear how it'll
generalize to reading scenarios and prebaked results. Ideally we could
call abstutil::read_binary as we currently do and somehow hide this async
trickery underneath, but I'm not sure how yet. In the meantime, this
moves us forward with the hack well-contained.

Next steps for web: stop bundling in all of data/system in the .wasm,
now that we can load from HTTP.
2020-10-08 10:51:13 -07:00
Dustin Carlino
536429f37f Fix lakeslice again. Some manually fixed traffic signals weren't
imported, because they referenced way IDs from before the service road
import. That happened after a bad Cargo.lock merge undid the effects of
pinning to the latest seattle_traffic_signals.
2020-10-07 15:06:03 -07:00
Dustin Carlino
34920064ed Fix some Unicode characters crashing in web (ea9ce84336) 2020-10-06 09:17:09 -07:00
Dustin Carlino
41ecd62e69 Support textures on the web as well 2020-10-05 19:50:52 -07:00
Dustin Carlino
bb6dbb0731 Switch from stdweb to websys for #21.
When I added web support in February, it was easier to get started with
stdweb, since it has the nice cargo web tool. However, stdweb is
unmaintained, winit is deprecating support for it, and the next steps
for web (downloading maps dynamically) have better support for web-sys.

With Alvin's guidance, I got
https://github.com/dabreegster/minimal_websys_winit_glow_demo working
first. This PR cuts A/B Street over too.

I tested abst and the widgetry demo in both native and web. The only
major regression from stdweb is the canvas placement and size. I
attempted some fixes, but at this point, I'll leave it as a smaller
followup instead.
2020-10-05 19:50:52 -07:00
Dustin Carlino
ac342445ed Cleanup: Use roxmltree instead of quick-xml to parse kml 2020-10-05 16:25:11 -07:00
Dustin Carlino
178404bd0e Remove unused RNG stuff from abstutil, and start to think about how to tease it apart a bit 2020-10-05 11:48:29 -07:00
Dustin Carlino
fa45590041 Tag E 24th as narrow and assign it narrower width. This still doesn't
quite fix the wacky geometry at Madison/24th, but it gets closer.

Also redo two outdated traffic signals, speeding up lakeslice more.
2020-10-03 18:17:35 -07:00
Dustin Carlino
533fca1f61 Upgrade winit and glutin [rebuild] 2020-10-02 21:31:56 -07:00
Dustin Carlino
f73d9da080 Conjure Traffic Seitan, a tool to make byzantine live map edits, to cause chaos and flush out bugs... 2020-10-01 18:24:35 -07:00
Dustin Carlino
ec114e51e1 Prototype an idea for unit testing the turn generation code. Hardcode a
simple .osm, turn it into a full Map, and inspect the results.
2020-09-30 16:30:28 -07:00
Dustin Carlino
fd212b474c Get wasm running again; cargo web was hitting
https://github.com/koute/cargo-web/issues/217. After adding some
debugging to that tool, discovered the problem was generic-array, pulled
in by the new geo version. Forcing that to the older version fixes
things.
2020-09-29 23:34:10 -07:00
Dustin Carlino
2ddd9a62ff Cleanups for #346:
- Add Distance::min()/max()
- Bring in log crate everywhere
- Consolidate traffic signal validation
2020-09-26 10:11:08 -07:00
Michael Kirk
d7e0225097 roll back lyon to fix crash in widgetry demo 2020-09-24 19:12:39 -07:00
Dustin Carlino
c9fbf67989 Rearrange headless API to explicitly apply edits at the same time as
specifying the scenario to run. #325
2020-09-24 13:14:49 -07:00
Dustin Carlino
597ef473f2 Upgrade most dependencies 2020-09-24 09:36:26 -07:00
Dustin Carlino
a17ef9cc43 Get text rendering to work on WASM! #21
Just a few changes to make usvg not depend on Rustybuzz (which is still
in the middle of becoming a pure Rust library). It probably only works
with English fonts, but for the moment, it moves us forward.
2020-09-20 22:50:22 -07:00
Dustin Carlino
3cc6a8ce12 And finally, a UI to tune offset between two signals! [rebuild] 2020-09-19 11:10:45 -07:00
Dustin Carlino
15af3846b1 Round driving costs for pathfinding more carefully. When we create
uber-turns (sequences of turns through a few intersections) due to OSM
turn restrictions, we have to be a little careful how we sum up the cost
for the entire sequence, only rounding at the end.
2020-09-18 15:39:35 -07:00
Dustin Carlino
3dcdb9ec02 Update OSM data (and fix the stage icon) 2020-09-16 10:29:51 -07:00
Dustin Carlino
6439c026ea Set up the boilerplate for two parking impls 2020-09-15 13:27:56 -07:00
Michael Kirk
c11cecf1ac
log cleanups (#321) 2020-09-10 14:20:35 -07:00
Michael Kirk
f685af47a5
proletariat robot considers resident/worker capacity (#320)
proles: account for work capacity

previously all residents went to work on the map, but if the
neighborhood is mostly residential that meant they were "competing"
heavily for the scarce jobs available on the map.

with this commit, we do a better job of spreading worker/residential
demand to account for what is available, and fill in the gap with
off-map trip origins/desitinations.

e.g. if a neighborhood is mostly residential, we have folks commute off
of map. If a neighborhood is mostly commercial, we have folks commute
into the map.
2020-09-10 14:04:20 -07:00
Michael Kirk
95b01c5f9e
macos fix: flip h-scroll to conventional direction (#310) 2020-09-06 13:10:37 -07:00
Dustin Carlino
787b6046b6 Remove the RAM measurement utility. Only work on Linux, I'm not convinced it's correct, and the information isn't useful to see 2020-09-03 17:19:40 -07:00
Dustin Carlino
b13f5b0f4a Move iotool things into the importer package, but keep separate binaries 2020-09-03 11:49:53 -07:00
Dustin Carlino
db23cf2d57 Update fast_paths, which implemented stall-on-demand and just about HALVED query time! 2020-09-03 11:28:38 -07:00
Michael Kirk
6482f8b0a4
util to convert geojson to osmosis polygon (#309) 2020-09-02 15:29:25 -07:00
Dustin Carlino
f662d9e34f Get rid of PartialEq on all of the Sim structs. It was originally there for a unit test that simulations are deterministic, but that test is long gone. (Determinism is now tested a bit more indirectly, but usefully, by looking for diffs to prebaked results. It could also be done by diffing serialized Sims.) 2020-08-28 14:26:22 -07:00
Dustin Carlino
d8d2877c14 Fix bike lane importing on Bell St. To prevent this from gridlocking
lakeslice (which is still quite sensitive to tiny changes in demand
data), manually retime a signal.
2020-08-27 20:51:49 -07:00
Dustin Carlino
2935d2379b Mechanical rename of ezgui -> widgetry, a much better name to enchant the Rust community. #253 [rebuild] 2020-08-27 10:37:04 -07:00
Kyle Huston
90cf38a522
Fail importer immediately if dependencies are missing and make gunzip etc. configurable (#296)
* Read ImporterConfiguration from .toml file if present. Also check for presence of dependency programs.

* Actually use config.osmconvert instead of hard-coded 'osmconvert'

* Add curl to checked dependencies

* Don't require all fields to be present in importer.toml configuration. Fill in defaults.

* Remove unneeded slice

* Use json for importer config and use serde(default) attribute to simplify application of defaults

* Extract re_dependencies_callable from main.rs and remove dependency on Job

* Revert change to abstutil, use struct-level default attribute

* Add importer.json to .gitignore

* Make gunzip_args string instead of Option<string>
2020-08-27 09:06:14 -07:00
Dustin Carlino
3afdb3f7e2 The JSON format for the map edits changes occasionally. Be backwards
compatible with old edits, automatically transforming them to match the
new format. Part of #216 and necessary to work on #234.
2020-08-22 09:14:01 -07:00
Dustin Carlino
ad423b22e9 Remove the glium backend, now that @michaelkirk has gotten the glow native/wasm backends ship-shape. Got rid of the glutin fallback behavior for now; need to ideally upstream something there for #103 2020-08-20 16:59:54 -07:00
Dustin Carlino
7cbc0fd95c Make a tool to dump the map in JSON. 2020-08-19 12:49:30 -07:00
Dustin Carlino
02569b1642 Get an end-to-end sample experiment working through the API and Python client 2020-08-18 12:52:38 -07:00
Dustin Carlino
a6a454d326 Add a tool to import external traffic demand data. The format and way of
calling the tool (not in the importer?) are just experiments right now.
2020-08-17 12:32:09 -07:00
Dustin Carlino
781f2b61bb update Cargo.lock; the winit patch changed commit hash I think [rebuild] 2020-08-16 17:47:02 -07:00
Dustin Carlino
bef3434ac8 adjust the most egregious traffic signals downtown 2020-08-15 18:35:14 -07:00
Michael Kirk
3ed8b9cf81 Fix glium build, which was broken with: 85ad194d
85ad194d introduced a patched winit.

In the glium build, we were pulling in a second version of winit (the
unpatched version, via glutin). This caused conflicts between the data
types, breaking the build.

Apparently the proper way to specify a patch like this, usable by
transitive dependencies, is via cargo's "patch" specifiers
2020-08-14 15:11:49 -07:00
Dustin Carlino
377e154a1c Refactor the Transition enum, collapsing enum variants that were
combining primitive transitions into sequences.

Brief context on the state/transition system: The game crate is
organized as a stack of states, with the topmost one being active.
Transitions manipulate this stack. For example, the stack might look
like: [main menu, sandbox mode, edit mode, traffic signal editor, signal
picker]
2020-08-14 14:38:50 -07:00
Michael Kirk
e5b08c71c0 Fix HiDPI screens for wasm
Fixes upstream winit bug
2020-08-14 14:13:18 -07:00
Dustin Carlino
25ee39af89 Prepare to flag-guard an experiment to handle uber-turns differently
when allowing a car to start a turn. It causes
https://github.com/dabreegster/abstreet/pull/276#discussion_r470269394
and also the lakeslice scenario to gridlock (a regression that began a
few weeks ago). But keep the flag on for now, to keep the montlake
scenaro running at least.

https://dabreegster.github.io/abstreet/trafficsim/gridlock.html has
notes about the many different causes and in-progress fixes for
gridlock. This experiment hasn't been explained very well yet, but
roughly it treats a cluster of traffic signals as one, so that once a
vehicle gains access through the first light, they guarantee immediate
access through the entire sequence. This interacts with the "don't block
the box" behavior (don't start a turn if you might get stuck in the
intersection) strangely.

While attempting to get this rollback to work, I also had to manually
redraw the traffic lights for a few manually specified intersections.
They became out-of-date a few weeks ago when I cleaned up the OSM
geometry upstream and the referenced IDs changed, and I hadn't bothered
to re-time the signals. Luckily, with the new multi-signal editor,
redrawing the timing was much easier than originally!

Regenerated all data and lots of bus routes vanished. Plan to get back
to that project soon.
2020-08-14 11:33:25 -07:00
Dustin Carlino
1d46845dc9 Upgrade glow. No noticeable change on Linux, might help on Mac. 2020-08-13 08:26:49 -07:00
Dustin Carlino
8ce2568280
turn the headless runner into a demo of a JSON API, for #245 (#268)
turn the headless runner into a demo of a JSON API, for #245
2020-08-11 16:44:19 -07:00