#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

#209 in WebAssembly

Download history 12/week @ 2024-01-06 154/week @ 2024-01-13 37/week @ 2024-01-20 48/week @ 2024-02-03 94/week @ 2024-02-10 11/week @ 2024-02-17 90/week @ 2024-02-24 120/week @ 2024-03-02 92/week @ 2024-03-09 31/week @ 2024-03-16 20/week @ 2024-03-23 18/week @ 2024-03-30 16/week @ 2024-04-06 25/week @ 2024-04-13 5/week @ 2024-04-20

65 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–3.5MB
~53K SLoC