cli/
import_scenario.rs

1use serde::Deserialize;
2
3use abstutil::{prettyprint_usize, Timer};
4use map_model::Map;
5use synthpop::{ExternalPerson, Scenario};
6
7pub fn run(input: String, map: String, skip_problems: bool) {
8    let mut timer = Timer::new("import traffic demand data");
9    let map = Map::load_synchronously(map, &mut timer);
10    let input: Input = abstio::read_json(input, &mut timer);
11
12    let mut s = Scenario::empty(&map, &input.scenario_name);
13    // Include all buses/trains
14    s.only_seed_buses = None;
15    let orig_num = input.people.len();
16    s.people = ExternalPerson::import(&map, input.people, skip_problems).unwrap();
17    // Always clean up people with no-op trips (going between the same buildings)
18    s = s.remove_weird_schedules(true);
19    println!(
20        "Imported {}/{} people",
21        prettyprint_usize(s.people.len()),
22        prettyprint_usize(orig_num)
23    );
24    s.save();
25}
26
27#[derive(Deserialize)]
28struct Input {
29    scenario_name: String,
30    people: Vec<ExternalPerson>,
31}