From e15efa9002ba590ca1b8ce4211e3fe0d7c4fea40 Mon Sep 17 00:00:00 2001 From: Dustin Carlino Date: Thu, 5 Nov 2020 14:58:28 -0800 Subject: [PATCH] Organize raw maps by city. With this, data/input/ is totally namespaced by city! Nothing prevents us from having a map named "downtown" in multiple cities now. #326 --- .gitignore | 3 +- abstutil/src/abst_paths.rs | 5 +- book/src/howto/new_city.md | 10 ++-- data/MANIFEST.json | 112 ++++++++++++++++++------------------- sim/src/make/load.rs | 4 +- updater/src/main.rs | 39 +------------ 6 files changed, 64 insertions(+), 109 deletions(-) diff --git a/.gitignore b/.gitignore index 6c63012c94..aa26d2576e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,14 +20,13 @@ data/input/seattle/popdat.bin data/input/seattle/trips_2014.csv data/input/*/osm +data/input/*/raw_maps data/input/*/footways.bin data/input/*/service_roads.bin data/input/*/*_separate_cycleways.bin data/input/*/*_snapped_cycleways.bin data/input/*/screenshots/*.zip -data/input/raw_maps - data/player data/system/berlin diff --git a/abstutil/src/abst_paths.rs b/abstutil/src/abst_paths.rs index bf53314621..a17b78e27d 100644 --- a/abstutil/src/abst_paths.rs +++ b/abstutil/src/abst_paths.rs @@ -195,8 +195,5 @@ pub fn path_popdat() -> String { } pub fn path_raw_map(name: &MapName) -> String { - path(format!("input/raw_maps/{}.bin", name.map)) -} -pub fn path_all_raw_maps() -> String { - path("input/raw_maps") + path(format!("input/{}/raw_maps/{}.bin", name.city, name.map)) } diff --git a/book/src/howto/new_city.md b/book/src/howto/new_city.md index 870785e792..7890287085 100644 --- a/book/src/howto/new_city.md +++ b/book/src/howto/new_city.md @@ -67,18 +67,16 @@ use it as well. required by osmconvert. 5. Create a new module in `importer/src/` for your city, copying - `importer/src/krakow.rs` as a guide. Edit that file in the obvious way. The + `importer/src/tel_aviv.rs` as a guide. Edit that file in the obvious way. The main thing you'll need is a .osm or .osm.pbf file to download that contains your city. The clipping polygon will be applied to that. 6. Update `importer/src/main.rs` to reference your new module, following - `krakow` as an example. + `tel_aviv` as an example. -7. Update `map_belongs_to_city` in `updater/src/main.rs` +7. Run it: `./import.sh --city=your_city --raw --map` -8. Run it: `./import.sh --city=your_city --raw --map` - -9. Update `.gitignore`, following `krakow` as an example. +8. Update `.gitignore`, following `krakow` as an example. Send a PR with your changes! I'll generate everything and make it work with `updater`, so most people don't have to build everything from scratch. diff --git a/data/MANIFEST.json b/data/MANIFEST.json index 22f2dfd173..77f4711531 100644 --- a/data/MANIFEST.json +++ b/data/MANIFEST.json @@ -24,6 +24,10 @@ "checksum": "1bfc2044f1f5f40acdcdded1a644ad22", "size_bytes": 3054511 }, + "data/input/berlin/raw_maps/berlin_center.bin": { + "checksum": "0045c35aada8114ba1c2cf0113708b2f", + "size_bytes": 9955976 + }, "data/input/berlin/service_roads.bin": { "checksum": "be06e4b4136771f8e03a2ba7a5f9b8cd", "size_bytes": 445108 @@ -40,6 +44,10 @@ "checksum": "9505917bbacc478177e36605e89b6d77", "size_bytes": 117776270 }, + "data/input/krakow/raw_maps/krakow_center.bin": { + "checksum": "d355436d13a89b6c6462a5aa4eb6720b", + "size_bytes": 14988445 + }, "data/input/krakow/screenshots/krakow_center.zip": { "checksum": "c176076e6f60f03741ca44b0bfdf8545", "size_bytes": 14238180 @@ -60,6 +68,10 @@ "checksum": "0de99323ac548f889860f597704b2910", "size_bytes": 33826429 }, + "data/input/leeds/raw_maps/leeds_center.bin": { + "checksum": "38ec311a319b9ccca42c09172d2a8e59", + "size_bytes": 41794121 + }, "data/input/leeds/service_roads.bin": { "checksum": "8588e5f3dda5d53903da869026ba1773", "size_bytes": 1376915 @@ -76,6 +88,10 @@ "checksum": "b86babace41d69a9e5b8be2310a725ae", "size_bytes": 18059372 }, + "data/input/london/raw_maps/southbank.bin": { + "checksum": "a6e3939121a21b99518f481865ef7ee0", + "size_bytes": 3317757 + }, "data/input/london/screenshots/southbank.zip": { "checksum": "6a8b17f4f8abf68a3e7248bffc59a455", "size_bytes": 3936498 @@ -84,62 +100,6 @@ "checksum": "4f651a450d9d6b73618db015c34a03ad", "size_bytes": 99666 }, - "data/input/raw_maps/ballard.bin": { - "checksum": "9321228f47483f7a14b2747e5ea84885", - "size_bytes": 21648115 - }, - "data/input/raw_maps/berlin_center.bin": { - "checksum": "0045c35aada8114ba1c2cf0113708b2f", - "size_bytes": 9955976 - }, - "data/input/raw_maps/downtown.bin": { - "checksum": "a01147203819f1b6f4ea893af4300c44", - "size_bytes": 7774126 - }, - "data/input/raw_maps/huge_seattle.bin": { - "checksum": "77a10eb129d0d5ce61d79192bd55b996", - "size_bytes": 123426278 - }, - "data/input/raw_maps/krakow_center.bin": { - "checksum": "d355436d13a89b6c6462a5aa4eb6720b", - "size_bytes": 14988445 - }, - "data/input/raw_maps/lakeslice.bin": { - "checksum": "5362657bbcdac16ac22aadf58f2a769c", - "size_bytes": 9984817 - }, - "data/input/raw_maps/leeds_center.bin": { - "checksum": "38ec311a319b9ccca42c09172d2a8e59", - "size_bytes": 41794121 - }, - "data/input/raw_maps/montlake.bin": { - "checksum": "60776c41875cad8f79354dff8c4d3d47", - "size_bytes": 1883008 - }, - "data/input/raw_maps/south_seattle.bin": { - "checksum": "e29c6adc12d97b5b2b8beb643271dcfd", - "size_bytes": 23677722 - }, - "data/input/raw_maps/southbank.bin": { - "checksum": "a6e3939121a21b99518f481865ef7ee0", - "size_bytes": 3317757 - }, - "data/input/raw_maps/tel_aviv.bin": { - "checksum": "b6faf60108d82d7308cc15e7edd26f30", - "size_bytes": 12342170 - }, - "data/input/raw_maps/udistrict.bin": { - "checksum": "8dca7ce30cb5e6fa6417f8c2ce737fe2", - "size_bytes": 4393153 - }, - "data/input/raw_maps/west_seattle.bin": { - "checksum": "4ed2b3505bd9ce9ca8158c174b8925e7", - "size_bytes": 25821468 - }, - "data/input/raw_maps/xian.bin": { - "checksum": "944535618cda403d0613ed485ef18072", - "size_bytes": 12038513 - }, "data/input/seattle/N47W122.hgt": { "checksum": "0db4e23e51f7680538b0bbbc72208e07", "size_bytes": 25934402 @@ -260,6 +220,38 @@ "checksum": "592592ec7bd0dadc7b09ee96a4d086a7", "size_bytes": 430666022 }, + "data/input/seattle/raw_maps/ballard.bin": { + "checksum": "9321228f47483f7a14b2747e5ea84885", + "size_bytes": 21648115 + }, + "data/input/seattle/raw_maps/downtown.bin": { + "checksum": "a01147203819f1b6f4ea893af4300c44", + "size_bytes": 7774126 + }, + "data/input/seattle/raw_maps/huge_seattle.bin": { + "checksum": "77a10eb129d0d5ce61d79192bd55b996", + "size_bytes": 123426278 + }, + "data/input/seattle/raw_maps/lakeslice.bin": { + "checksum": "5362657bbcdac16ac22aadf58f2a769c", + "size_bytes": 9984817 + }, + "data/input/seattle/raw_maps/montlake.bin": { + "checksum": "60776c41875cad8f79354dff8c4d3d47", + "size_bytes": 1883008 + }, + "data/input/seattle/raw_maps/south_seattle.bin": { + "checksum": "e29c6adc12d97b5b2b8beb643271dcfd", + "size_bytes": 23677722 + }, + "data/input/seattle/raw_maps/udistrict.bin": { + "checksum": "8dca7ce30cb5e6fa6417f8c2ce737fe2", + "size_bytes": 4393153 + }, + "data/input/seattle/raw_maps/west_seattle.bin": { + "checksum": "4ed2b3505bd9ce9ca8158c174b8925e7", + "size_bytes": 25821468 + }, "data/input/seattle/screenshots/downtown.zip": { "checksum": "4552a34fffb0c47b121f532d882964e8", "size_bytes": 14841175 @@ -296,6 +288,10 @@ "checksum": "eeb7f3813a33f754eceed13766a3c236", "size_bytes": 43912053 }, + "data/input/tel_aviv/raw_maps/tel_aviv.bin": { + "checksum": "b6faf60108d82d7308cc15e7edd26f30", + "size_bytes": 12342170 + }, "data/input/tel_aviv/service_roads.bin": { "checksum": "216407d6f112683e81973fbb11af6403", "size_bytes": 208181 @@ -312,6 +308,10 @@ "checksum": "4084c665ad947bb40173a43cb33fdec8", "size_bytes": 26198743 }, + "data/input/xian/raw_maps/xian.bin": { + "checksum": "944535618cda403d0613ed485ef18072", + "size_bytes": 12038513 + }, "data/input/xian/service_roads.bin": { "checksum": "c9a1a296817cfbd6c64dbe0d3389c40a", "size_bytes": 249765 diff --git a/sim/src/make/load.rs b/sim/src/make/load.rs index 3c445aa5e1..6b8b887afe 100644 --- a/sim/src/make/load.rs +++ b/sim/src/make/load.rs @@ -103,9 +103,7 @@ impl SimFlags { scenario.instantiate(&mut sim, &map, &mut rng, timer); (map, sim, rng) - } else if self.load.starts_with(&abstutil::path_all_raw_maps()) - || self.load.contains("/maps/") - { + } else if self.load.contains("/raw_maps/") || self.load.contains("/maps/") { timer.note(format!("Loading map {}", self.load)); let map = Map::new(self.load.clone(), timer); diff --git a/updater/src/main.rs b/updater/src/main.rs index 1ba568c7f2..4ece7a5c47 100644 --- a/updater/src/main.rs +++ b/updater/src/main.rs @@ -201,29 +201,6 @@ fn generate_manifest() -> Manifest { } fn filter_manifest(mut manifest: Manifest, cities: Cities) -> Manifest { - // TODO Temporary hack until directories are organized better - fn map_belongs_to_city(map: &str, city: &str) -> bool { - match city { - "seattle" => { - map == "ballard" - || map == "downtown" - || map == "lakeslice" - || map == "montlake" - || map == "south_seattle" - || map == "udistrict" - || map == "west_seattle" - } - "huge_seattle" => map == "huge_seattle", - "krakow" => map == "krakow_center", - "leeds" => map == "leeds_center", - "berlin" => map == "berlin_center", - "xian" => map == "xian", - "tel_aviv" => map == "tel_aviv", - "london" => map == "southbank", - _ => panic!("Unknown city {}. Check your data/config", city), - } - } - let mut remove = Vec::new(); for path in manifest.entries.keys() { // TODO Some hardcoded weird exceptions @@ -235,21 +212,7 @@ fn filter_manifest(mut manifest: Manifest, cities: Cities) -> Manifest { } let parts = path.split("/").collect::>(); - if parts[1] == "input" { - if parts[2] == "raw_maps" { - let map = parts[3].trim_end_matches(".bin"); - if cities - .input - .iter() - .any(|city| map_belongs_to_city(map, city)) - { - continue; - } - } - if cities.input.contains(&parts[2].to_string()) { - continue; - } - } else if parts[1] == "system" { + if parts[1] == "input" || parts[1] == "system" { if cities.input.contains(&parts[2].to_string()) { continue; }