Crate osmpbf[][src]

Expand description

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


Add this to your Cargo.toml:

osmpbf = "0.2"

and if you’re using Rust 2015, add this line to the crate root:

extern crate osmpbf;

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);


pub use blob::*;
pub use block::*;
pub use dense::*;
pub use elements::*;
pub use indexed::*;
pub use mmap_blob::*;
pub use reader::*;


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


An error that can occur when reading PBF files.


An error that occurs when decoding a blob.

The specific type of an error.

Type Definitions

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