pub struct PMTilesReader<R: Reader> { /* private fields */ }Expand description
§(S2) PMTiles Reader
§Description
A V3.0 PMTiles reader for reading standard WebMercator Tile data and V1.0 S2 Tile data.
A Modified implementation of the PMTiles library. It is backwards compatible but offers support for the S2 Projection.
You can learn more about the S2PMTiles Specification here.
§Usage
PMTilesReader utilizes any struct that implements the Reader trait.
Options are crate::parsers::BufferReader, crate::parsers::FileReader, crate::parsers::MMapReader, and crate::parsers::FetchReader.
The methods you have access to:
PMTilesReader::new: Create a new PMTilesReaderPMTilesReader::get_header: Get the PMTiles headerPMTilesReader::get_s2_metadata: Get the S2 PMTiles metadataPMTilesReader::get_metadata: Get the PMTiles metadataPMTilesReader::get_tile_s2: Get an S2 TilePMTilesReader::get_tile_wm: Get an WM TilePMTilesReader::get_tile: Get a Tile irregardless of the projection type
use gistools::{parsers::FileReader, readers::PMTilesReader};
use std::path::PathBuf;
let path = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("tests/readers/pmtiles/fixtures/test_fixture_1.pmtiles");
let file_reader = FileReader::new(path).unwrap();
let mut reader = PMTilesReader::new(file_reader, None);
smol::block_on(async {
// pull out the header
let header = reader.get_header().await;
// get the metadata
let metadata = reader.get_metadata();
// S2 specific functions
let tile = reader.get_tile_s2(0.into(), 0, 0, 0).await;
// WM functions
let tile = reader.get_tile_wm(0, 0, 0).await.unwrap();
});§Links
Implementations§
Source§impl<R: Reader> PMTilesReader<R>
impl<R: Reader> PMTilesReader<R>
Sourcepub fn new(reader: R, max_size: Option<usize>) -> Self
pub fn new(reader: R, max_size: Option<usize>) -> Self
Given an input path, read in the header and root directory
Sourcepub async fn get_header(&mut self) -> S2PMHeader
pub async fn get_header(&mut self) -> S2PMHeader
fetch the s2 metadata as needed
Sourcepub fn get_s2_metadata(&mut self, data: &[u8], header: &mut S2PMHeader)
pub fn get_s2_metadata(&mut self, data: &[u8], header: &mut S2PMHeader)
If S2, we need to build the other face’s root directories
Sourcepub fn get_metadata(&mut self) -> &Metadata
pub fn get_metadata(&mut self) -> &Metadata
get the metadata
Sourcepub async fn get_tile_s2(
&mut self,
face: Face,
zoom: u8,
x: u64,
y: u64,
) -> Option<Vec<u8>>
pub async fn get_tile_s2( &mut self, face: Face, zoom: u8, x: u64, y: u64, ) -> Option<Vec<u8>>
get an S2 tile
Trait Implementations§
Auto Trait Implementations§
impl<R> Freeze for PMTilesReader<R>where
R: Freeze,
impl<R> RefUnwindSafe for PMTilesReader<R>where
R: RefUnwindSafe,
impl<R> Send for PMTilesReader<R>where
R: Send,
impl<R> Sync for PMTilesReader<R>where
R: Sync,
impl<R> Unpin for PMTilesReader<R>where
R: Unpin,
impl<R> UnwindSafe for PMTilesReader<R>where
R: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more