pub struct PMTiles<R> {Show 13 fields
pub tile_type: TileType,
pub tile_compression: Compression,
pub internal_compression: Compression,
pub min_zoom: u8,
pub max_zoom: u8,
pub center_zoom: u8,
pub min_longitude: f64,
pub min_latitude: f64,
pub max_longitude: f64,
pub max_latitude: f64,
pub center_longitude: f64,
pub center_latitude: f64,
pub meta_data: Map<String, Value>,
/* private fields */
}Expand description
A structure representing a PMTiles archive.
Fields§
§tile_type: TileTypeType of tiles
tile_compression: CompressionCompression of tiles
internal_compression: CompressionCompression of directories and meta data
min_zoom: u8Minimum zoom of all tiles this archive
max_zoom: u8Maximum zoom of all tiles this archive
center_zoom: u8Center zoom
Implementations may use this to set the default zoom
min_longitude: f64Minimum longitude of bounds of available tiles
min_latitude: f64Minimum latitude of bounds of available tiles
max_longitude: f64Maximum longitude of bounds of available tiles
max_latitude: f64Maximum latitude of bounds of available tiles
center_longitude: f64Center longitude
Implementations may use the center longitude and latitude to set the default location
center_latitude: f64Center latitude
Implementations may use the center longitude and latitude to set the default location
meta_data: Map<String, Value>JSON meta data of this archive
Implementations§
Source§impl PMTiles<Cursor<&[u8]>>
impl PMTiles<Cursor<&[u8]>>
Sourcepub fn new(tile_type: TileType, tile_compression: Compression) -> Self
pub fn new(tile_type: TileType, tile_compression: Compression) -> Self
Constructs a new, empty PMTiles archive, with no meta data, an internal_compression of GZIP and all numeric fields set to 0.
§Arguments
tile_type- Type of tiles in this archivetile_compression- Compression of tiles in this archive
Source§impl PMTiles<Cursor<&[u8]>>
impl PMTiles<Cursor<&[u8]>>
Sourcepub fn new_async(tile_type: TileType, tile_compression: Compression) -> Self
Available on crate feature async only.
pub fn new_async(tile_type: TileType, tile_compression: Compression) -> Self
async only.Source§impl<R> PMTiles<R>
impl<R> PMTiles<R>
Sourcepub fn add_tile(&mut self, tile_id: u64, data: impl Into<Vec<u8>>) -> Result<()>
pub fn add_tile(&mut self, tile_id: u64, data: impl Into<Vec<u8>>) -> Result<()>
Adds a tile to this PMTiles archive.
Note that the data should already be compressed if Self::tile_compression is set to a value other than Compression::None.
The data will NOT be compressed automatically.
The util-module includes utilities to compress data.
§Errors
Will return Err if data converts into an empty Vec.
Sourcepub fn remove_tile(&mut self, tile_id: u64)
pub fn remove_tile(&mut self, tile_id: u64)
Removes a tile from this archive.
Source§impl<R: Read + Seek> PMTiles<R>
impl<R: Read + Seek> PMTiles<R>
Sourcepub fn get_tile_by_id(&mut self, tile_id: u64) -> Result<Option<Vec<u8>>>
pub fn get_tile_by_id(&mut self, tile_id: u64) -> Result<Option<Vec<u8>>>
Get data of a tile by its id.
The returned data is the raw data, meaning It is NOT uncompressed automatically,
if it was compressed in the first place.
If you need the uncompressed data, take a look at the util-module
Will return Ok with an value of None if no a tile with the specified tile id was found.
§Errors
Will return Err if the tile data was not read into memory yet and there was an error while
attempting to read it.
Source§impl<R: AsyncRead + AsyncReadExt + Send + Unpin + AsyncSeekExt> PMTiles<R>
impl<R: AsyncRead + AsyncReadExt + Send + Unpin + AsyncSeekExt> PMTiles<R>
Sourcepub async fn get_tile_by_id_async(
&mut self,
tile_id: u64,
) -> Result<Option<Vec<u8>>>
Available on crate feature async only.
pub async fn get_tile_by_id_async( &mut self, tile_id: u64, ) -> Result<Option<Vec<u8>>>
async only.Async version of get_tile_by_id.
Get data of a tile by its id.
The returned data is the raw data, meaning It is NOT uncompressed automatically,
if it was compressed in the first place.
If you need the uncompressed data, take a look at the util-module
Will return Ok with an value of None if no a tile with the specified tile id was found.
§Errors
Will return Err if the tile data was not read into memory yet and there was an error while
attempting to read it.
Sourcepub async fn get_tile_async(
&mut self,
x: u64,
y: u64,
z: u8,
) -> Result<Option<Vec<u8>>>
Available on crate feature async only.
pub async fn get_tile_async( &mut self, x: u64, y: u64, z: u8, ) -> Result<Option<Vec<u8>>>
async only.Async version of get_tile.
Returns the data of the tile with the specified coordinates.
See get_tile_by_id_async for further details on the return type.
§Errors
See get_tile_by_id_async for details on possible errors.
Source§impl<R: Read + Seek> PMTiles<R>
impl<R: Read + Seek> PMTiles<R>
Sourcepub fn from_reader(input: R) -> Result<Self>
pub fn from_reader(input: R) -> Result<Self>
Reads a PMTiles archive from a reader.
This takes ownership of the reader, because tile data is only read when required.
§Arguments
input- Reader
§Errors
Will return Err if there was any kind of I/O error while reading from input, the data
stream was no valid PMTiles archive or the internal compression of the archive is set to “Unknown”.
§Example
let mut file = std::fs::File::open(file_path).unwrap();
let pm_tiles = PMTiles::from_reader(file).unwrap();Sourcepub fn from_reader_partially(
input: R,
tiles_filter_range: impl RangeBounds<u64>,
) -> Result<Self>
pub fn from_reader_partially( input: R, tiles_filter_range: impl RangeBounds<u64>, ) -> Result<Self>
Same as from_reader, but with an extra parameter.
Reads a PMTiles archive from a reader, but only parses tile entries whose tile IDs are included in the filter
range. Tiles that are not included in the range will appear as missing.
This can improve performance in cases where only a limited range of tiles is needed, as whole leaf directories may be skipped during parsing.
§Arguments
input- Readertiles_filter_range- Range of Tile IDs to load
§Errors
See from_reader for details on possible errors.
§Example
let mut file = std::fs::File::open(file_path).unwrap();
let pm_tiles = PMTiles::from_reader_partially(file, ..).unwrap();Sourcepub fn to_writer(self, output: &mut (impl Write + Seek)) -> Result<()>
pub fn to_writer(self, output: &mut (impl Write + Seek)) -> Result<()>
Writes the archive to a writer.
The archive is always deduped and the directory entries clustered to produce the smallest possible archive size.
This takes ownership of the object so all data does not need to be copied.
This prevents large memory consumption when writing large PMTiles archives.
§Arguments
output- Writer to write data to
§Errors
Will return Err if Self::internal_compression was set to Compression::Unknown
or an I/O error occurred while writing to output.
§Example
Write the archive to a file.
let pm_tiles = PMTiles::new(TileType::Png, Compression::None);
let mut file = std::fs::File::create(file_path).unwrap();
pm_tiles.to_writer(&mut file).unwrap();Source§impl<T: AsRef<[u8]>> PMTiles<Cursor<T>>
impl<T: AsRef<[u8]>> PMTiles<Cursor<T>>
Sourcepub fn from_bytes(bytes: T) -> Result<Self>
pub fn from_bytes(bytes: T) -> Result<Self>
Reads a PMTiles archive from anything that can be turned into a byte slice (e.g. Vec<u8>).
§Arguments
bytes- Input bytes
§Errors
Will return Err if there was any kind of I/O error while reading from input, the data
stream was no valid PMTiles archive or the internal compression of the archive is set to “Unknown”.
§Example
let bytes = include_bytes!("../test/stamen_toner(raster)CC-BY+ODbL_z3.pmtiles");
let pm_tiles = PMTiles::from_bytes(bytes).unwrap();Sourcepub fn from_bytes_partially(
bytes: T,
tiles_filter_range: impl RangeBounds<u64>,
) -> Result<Self>
pub fn from_bytes_partially( bytes: T, tiles_filter_range: impl RangeBounds<u64>, ) -> Result<Self>
Same as from_bytes, but with an extra parameter.
Reads a PMTiles archive from something that can be turned into a byte slice (e.g. Vec<u8>),
but only parses tile entries whose tile IDs are included in the filter range. Tiles that are not
included in the range will appear as missing.
This can improve performance in cases where only a limited range of tiles is needed, as whole leaf directories may be skipped during parsing.
§Arguments
bytes- Input bytestiles_filter_range- Range of Tile IDs to load
§Errors
See from_bytes for details on possible errors.
§Example
let bytes = include_bytes!("../test/stamen_toner(raster)CC-BY+ODbL_z3.pmtiles");
let pm_tiles = PMTiles::from_bytes_partially(bytes, ..).unwrap();Source§impl<R: AsyncRead + AsyncSeekExt + Send + Unpin> PMTiles<R>
impl<R: AsyncRead + AsyncSeekExt + Send + Unpin> PMTiles<R>
Sourcepub async fn from_async_reader(input: R) -> Result<Self>
Available on crate feature async only.
pub async fn from_async_reader(input: R) -> Result<Self>
async only.Async version of from_reader.
Reads a PMTiles archive from a reader.
This takes ownership of the reader, because tile data is only read when required.
§Arguments
input- Reader
§Errors
Will return Err if there was any kind of I/O error while reading from input, the data
stream was no valid PMTiles archive or the internal compression of the archive is set to “Unknown”.
§Example
let bytes = include_bytes!("../test/stamen_toner(raster)CC-BY+ODbL_z3.pmtiles");
let mut reader = futures::io::Cursor::new(bytes);
let pm_tiles = PMTiles::from_async_reader(reader).await.unwrap();Sourcepub async fn from_async_reader_partially(
input: R,
tiles_filter_range: impl RangeBounds<u64> + Sync + Send,
) -> Result<Self>
Available on crate feature async only.
pub async fn from_async_reader_partially( input: R, tiles_filter_range: impl RangeBounds<u64> + Sync + Send, ) -> Result<Self>
async only.Same as from_async_reader, but with an extra parameter.
Reads a PMTiles archive from a reader, but only parses tile entries whose tile IDs are included in the filter
range. Tiles that are not included in the range will appear as missing.
This can improve performance in cases where only a limited range of tiles is needed, as whole leaf directories may be skipped during parsing.
§Arguments
input- Readertiles_filter_range- Range of Tile IDs to load
§Errors
See from_async_reader for details on possible errors.
§Example
let bytes = include_bytes!("../test/stamen_toner(raster)CC-BY+ODbL_z3.pmtiles");
let mut reader = futures::io::Cursor::new(bytes);
let pm_tiles = PMTiles::from_async_reader_partially(reader, ..).await.unwrap();Sourcepub async fn to_async_writer(
self,
output: &mut (impl AsyncWrite + AsyncSeekExt + Unpin + Send),
) -> Result<()>
Available on crate feature async only.
pub async fn to_async_writer( self, output: &mut (impl AsyncWrite + AsyncSeekExt + Unpin + Send), ) -> Result<()>
async only.Async version of to_writer.
Writes the archive to a writer.
The archive is always deduped and the directory entries clustered to produce the smallest possible archive size.
This takes ownership of the object so all data does not need to be copied.
This prevents large memory consumption when writing large PMTiles archives.
§Arguments
output- Writer to write data to
§Errors
Will return Err if Self::internal_compression was set to Compression::Unknown
or an I/O error occurred while writing to output.
§Example
Write the archive to a file.
let pm_tiles = PMTiles::new_async(TileType::Png, Compression::None);
let mut out_file = tokio::fs::File::create(file_path).await.unwrap().compat();
pm_tiles.to_async_writer(&mut out_file).await.unwrap();Trait Implementations§
Auto Trait Implementations§
impl<R> Freeze for PMTiles<R>where
R: Freeze,
impl<R> RefUnwindSafe for PMTiles<R>where
R: RefUnwindSafe,
impl<R> Send for PMTiles<R>where
R: Send,
impl<R> Sync for PMTiles<R>where
R: Sync,
impl<R> Unpin for PMTiles<R>where
R: Unpin,
impl<R> UnsafeUnpin for PMTiles<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for PMTiles<R>where
R: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.