Crate pmtiles2

source ·
Expand description

PMTiles

A low level implementation of the PMTiles format based on the std::io::Read and std::io::Write traits.

Examples

Reading from a file

use std::fs::File;
use pmtiles2::PMTiles;

fn main () -> std::io::Result<()> {
    let file_path = "./test/stamen_toner(raster)CC-BY+ODbL_z3.pmtiles";
     
    let mut file = File::open(file_path)?; // file implements std::io::Read
    let pm_tiles = PMTiles::from_reader(file)?;

    Ok(())
}

Writing to a file

use std::fs::File;
use pmtiles2::{PMTiles, Compression, TileType};

fn main () -> std::io::Result<()> {
    // create temp directory
    let dir = tempdir::TempDir::new("pmtiles")?;
    let file_path = dir.path().join("foo.pmtiles");
     
    let pm_tiles = PMTiles::new(TileType::Png, Compression::None);

    // TODO: Add tiles to pm_tiles

    let mut file = File::create(file_path)?; // file implements std::io::Write
    pm_tiles.to_writer(&mut file)?;

    Ok(())
}

Building a PMTiles archive from scratch

use pmtiles2::{PMTiles, TileType, Compression, util::tile_id};
use std::io::Cursor;

let mut pm_tiles = PMTiles::new(TileType::Mvt, Compression::GZip);

pm_tiles.add_tile(tile_id(0, 0, 0), vec![0 /* ... */]);
pm_tiles.add_tile(tile_id(1, 0, 0), vec![0 /* ... */]);

Modules

Utilities for reading and writing PMTiles archives.

Structs

A structure representing a directory.
A structure representing a directory entry.
A structure representing a PMTiles header.
A structure representing a PMTiles archive.

Enums

A compression, which is supported in PMTiles archives.
A tile type, which is supported in PMTiles archives.