Crate osmpbf

source ·
Expand description

A fast reader for the OpenStreetMap PBF file format (*.osm.pbf).

Usage

Add this to your Cargo.toml:

[dependencies]
osmpbf = "0.2"

Example: Count ways

Here’s a simple example that counts all the OpenStreetMap way elements in a file:

use osmpbf::{ElementReader, Element};

let reader = ElementReader::from_path("tests/test.osm.pbf")?;
let mut ways = 0_u64;

// Increment the counter by one for each way.
reader.for_each(|element| {
    if let Element::Way(_) = element {
        ways += 1;
    }
})?;

println!("Number of ways: {ways}");

Example: Count ways in parallel

In this second example, we also count the ways but make use of all cores by decoding the file in parallel:

use osmpbf::{ElementReader, Element};

let reader = ElementReader::from_path("tests/test.osm.pbf")?;

// Count the ways
let ways = reader.par_map_reduce(
    |element| {
        match element {
            Element::Way(_) => 1,
            _ => 0,
        }
    },
    || 0_u64,      // Zero is the identity value for addition
    |a, b| a + b   // Sum the partial results
)?;

println!("Number of ways: {ways}");

Re-exports

Modules

  • Read and decode blobs
  • HeaderBlock, PrimitiveBlock and PrimitiveGroups
  • Iterate over the dense nodes in a PrimitiveGroup
  • Nodes, ways and relations
  • Speed up searches by using an index
  • Iterate over blobs from a memory map
  • High level reader interface

Structs

  • An error that can occur when reading PBF files.

Enums

  • An error that occurs when decoding a blob.
  • The specific type of an error.

Type Aliases

  • A type alias for Result<T, osmpbf::Error>.