use std::path::PathBuf;
use benchmark_rs::stopwatch::StopWatch;
use simple_logger::SimpleLogger;
use osm_io::osm::model::element::Element;
use osm_io::osm::pbf;
pub fn main() -> Result<(), anyhow::Error> {
SimpleLogger::new().init()?;
log::info!("Started count pbf elements");
let mut stopwatch = StopWatch::new();
stopwatch.start();
let input_path = PathBuf::from("./tests/fixtures/niue-230109.osm.pbf");
let reader = pbf::reader::Reader::new(&input_path)?;
let mut nodes = 0usize;
let mut ways = 0usize;
let mut relations = 0usize;
let mut tourism_nodes = 0usize;
let mut tourism_ways = 0usize;
let mut tourism_relations = 0usize;
for element in reader.elements()? {
match element {
Element::Node { node } => {
nodes += 1;
for tag in node.tags() {
if tag.k() == "tourism" {
tourism_nodes += 1;
}
}
}
Element::Way { way } => {
ways += 1;
for tag in way.tags() {
if tag.k() == "tourism" {
tourism_ways += 1;
}
}
}
Element::Relation { relation } => {
relations += 1;
for tag in relation.tags() {
if tag.k() == "tourism" {
tourism_relations += 1;
}
}
}
Element::Sentinel => {
println!("sentinel");
}
}
}
log::info!("nodes: {}", nodes);
log::info!("ways: {}", ways);
log::info!("relations: {}", relations);
log::info!("tourism nodes: {}", tourism_nodes);
log::info!("tourism ways: {}", tourism_ways);
log::info!("tourism relations: {}", tourism_relations);
log::info!("Finished count pbf elements, time: {}", stopwatch);
Ok(())
}