use log::info;
use osm_transit_extractor::*;
use std::path::PathBuf;
use structopt::StructOpt;
#[derive(StructOpt)]
struct Args {
#[structopt(long = "input", short = "i", help = "OSM PBF file")]
input: String,
#[structopt(
long = "import-stops-only",
short = "s",
help = "Imports only stop_points and stop_areas (default is a full extraction)"
)]
import_stops_only: bool,
#[structopt(
long = "dump-all-tags",
short = "t",
help = "Extract all tags from OSM objects"
)]
dump_all_tags: bool,
#[structopt(
long = "output",
short = "o",
default_value = ".",
parse(from_os_str),
help = "Output directory, can be relative (default is current dir)"
)]
output: PathBuf,
}
fn main() {
simple_logger::init().unwrap();
info!("Launching the process !");
let args = Args::from_args();
let mut parsed_pbf = parse_osm_pbf(&args.input);
let osmtc_response = get_osm_tcobjects(&mut parsed_pbf, args.import_stops_only);
write_stop_points_to_csv(
&osmtc_response.stop_points,
&osmtc_response.stop_areas,
&args.output,
args.dump_all_tags,
);
write_stop_areas_to_csv(&osmtc_response.stop_areas, &args.output, args.dump_all_tags);
if osmtc_response.routes.is_some() {
write_routes_to_csv(
osmtc_response.routes.unwrap(),
&args.output,
args.dump_all_tags,
);
}
if osmtc_response.lines.is_some() {
write_lines_to_csv(
osmtc_response.lines.unwrap(),
&args.output,
args.dump_all_tags,
);
}
info!("end of osm-transit-extractor !")
}