A Rust library for reading the OpenStreetMap PBF file format (*.osm.pbf).

123456789101112131415161718192021222324252627
  1. extern crate osmpbf;
  2. use osmpbf::*;
  3. fn main() {
  4. let arg = std::env::args_os().nth(1).expect("need a *.osm.pbf file as argument");
  5. let path = std::path::Path::new(&arg);
  6. let reader = ElementReader::from_path(path).unwrap();
  7. println!("Counting...");
  8. let result = reader.par_map_reduce(
  9. |element| {
  10. match element {
  11. Element::Node(_) | Element::DenseNode(_) => (1, 0, 0),
  12. Element::Way(_) => (0, 1, 0),
  13. Element::Relation(_) => (0, 0, 1),
  14. }
  15. },
  16. || (0u64, 0u64, 0u64),
  17. |a, b| (a.0 + b.0, a.1 + b.1, a.2 + b.2)
  18. ).unwrap();
  19. println!("Nodes: {}", result.0);
  20. println!("Ways: {}", result.1);
  21. println!("Relations: {}", result.2);
  22. }