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§
pub use blob::*;
pub use block::*;
pub use dense::*;
pub use elements::*;
pub use indexed::*;
pub use mmap_blob::*;
pub use reader::*;
Modules§
- blob
- Read and decode blobs
- block
HeaderBlock
,PrimitiveBlock
andPrimitiveGroup
s- dense
- Iterate over the dense nodes in a
PrimitiveGroup
- elements
- Nodes, ways and relations
- indexed
- Speed up searches by using an index
- mmap_
blob - Iterate over blobs from a memory map
- reader
- High level reader interface
Structs§
- Error
- An error that can occur when reading PBF files.
Enums§
Type Aliases§
- Result
- A type alias for
Result<T, osmpbf::Error>
.