#pbf #mvt #rust

mvt-reader

A library for decoding and reading mapbox vector tiles in Rust and WebAssembly

6 releases (3 stable)

1.2.0 Oct 26, 2023
1.1.0 Jun 20, 2023
1.0.0 Jun 11, 2023
1.0.0-alpha.3 May 29, 2023
1.0.0-alpha.2 May 27, 2023

#182 in WebAssembly

Download history 9/week @ 2023-12-11 19/week @ 2023-12-18 7/week @ 2023-12-25 20/week @ 2024-01-08 177/week @ 2024-01-15 6/week @ 2024-01-22 55/week @ 2024-02-05 88/week @ 2024-02-12 15/week @ 2024-02-19 95/week @ 2024-02-26 153/week @ 2024-03-04 57/week @ 2024-03-11 27/week @ 2024-03-18 32/week @ 2024-03-25

270 downloads per month

MIT license

30KB
430 lines

mvt-reader

Mapbox vector tile reader in Rust
A library for decoding and reading mapbox vector tiles in Rust and WebAssembly

Features

  • Decodes and reads Mapbox vector tiles in Rust
  • Provides an API for accessing layer names and features within a vector tile
  • Can be used as a WebAssembly module in JavaScript (enabled by the wasm feature)

Build the project

cargo build --release

Run tests

cargo test
wasm-pack build --release --target nodejs -d pkg/node -- --features wasm && npm test

Usage

To use the mvt-reader library in your Rust project, add the following to your Cargo.toml file:

[dependencies]
mvt-reader = "1.2.0"

Then, you can import and use the library in your code:

use mvt_reader::{Reader, ParserError};

fn main() -> Result<(), ParserError> {
  // Read a vector tile from file or data
  let data = vec![/* Vector tile data */];
  let reader = Reader::new(data)?;

  // Get layer names
  let layer_names = reader.get_layer_names()?;
  for name in layer_names {
    println!("Layer: {}", name);
  }

  // Get features for a specific layer
  let layer_index = 0;
  let features = reader.get_features(layer_index)?;
  for feature in features {
    todo!()
  }

  Ok(())
}

WebAssembly Usage

To use the mvt-reader library as a WebAssembly module in JavaScript, you can install it with npm and use it in your JavaScript code:

const { Reader } = require('mvt-reader')
const fs = require('fs')

// Example usage
const reader = new Reader(fs.readFileSync('path/to/tile.mvt'))
const layerNames = reader.getLayerNames()
console.log(layerNames)

// More code...

License

This project is licensed under the MIT License.

Dependencies

~1.8–4.5MB
~79K SLoC