Struct osmpbfreader::reader::OsmPbfReader [−][src]
pub struct OsmPbfReader<R> { /* fields omitted */ }
Expand description
The object to manage a pbf file.
Implementations
Creates an OsmPbfReader from a Read object.
Returns an iterator on the OsmObj of the pbf file.
Example
let mut pbf = osmpbfreader::OsmPbfReader::new(std::io::empty());
for obj in pbf.iter().map(Result::unwrap) {
println!("{:?}", obj);
}
Returns a parallel iterator on the OsmObj of the pbf file.
Several threads decode in parallel the file. The memory and CPU usage are guaranteed to be bounded even if the caller stop consuming items.
Example
let mut pbf = osmpbfreader::OsmPbfReader::new(std::io::empty());
for obj in pbf.par_iter().map(Result::unwrap) {
println!("{:?}", obj);
}
Rewinds the pbf file to the begining.
Useful if you want to read several consecutive times the same file.
Example
let mut cursor = std::io::Cursor::new([0, 0, 0]);
cursor.set_position(2);
let mut pbf = osmpbfreader::OsmPbfReader::new(cursor);
pbf.rewind().unwrap();
assert_eq!(pbf.into_inner().position(), 0);
Same as get_objs_and_deps
but generic.
This function give you the ability to find all the objects validating a predicate and all their dependencies. The file will be decoded in parallel.
Example
If you want to extract all the administrative boundaries and all their dependencies you can do something like that:
fn is_admin(obj: &osmpbfreader::OsmObj) -> bool {
// get relations with tags[boundary] == administrative
obj.is_relation() && obj.tags().contains("boundary", "administrative")
}
let mut pbf = osmpbfreader::OsmPbfReader::new(std::io::Cursor::new([]));
let objs = pbf.get_objs_and_deps(is_admin).unwrap();
for (id, obj) in &objs {
println!("{:?}: {:?}", id, obj);
}
Extract the Read object.
Consumes the object.
Returns an iterator on the blobs of the pbf file.
pub fn primitive_blocks(&mut self) -> PrimitiveBlocks<'_, R>ⓘNotable traits for PrimitiveBlocks<'a, R>impl<'a, R> Iterator for PrimitiveBlocks<'a, R> where
R: Read + 'a, type Item = <Map<Blobs<'a, R>, fn(_: Result<Blob>) -> Result<PrimitiveBlock>> as Iterator>::Item;
pub fn primitive_blocks(&mut self) -> PrimitiveBlocks<'_, R>ⓘNotable traits for PrimitiveBlocks<'a, R>impl<'a, R> Iterator for PrimitiveBlocks<'a, R> where
R: Read + 'a, type Item = <Map<Blobs<'a, R>, fn(_: Result<Blob>) -> Result<PrimitiveBlock>> as Iterator>::Item;
impl<'a, R> Iterator for PrimitiveBlocks<'a, R> where
R: Read + 'a, type Item = <Map<Blobs<'a, R>, fn(_: Result<Blob>) -> Result<PrimitiveBlock>> as Iterator>::Item;
Returns an iterator on the blocks of the pbf file.