@mapbox/vtvalidate

0.3.1 • Public • Published

vtvalidate

Validate vector tiles based on the Mapbox Vector Tile Specification 2.x via vtzero.

node-cpp-skel Build Status codecov

Build & Test

git clone git@github.com:mapbox/vtvalidate.git
cd vtvalidate

# Build binaries. This looks to see if there were changes in the C++ code. This does not reinstall deps.
make

# Run tests
make test

# Cleans your current builds and removes potential cache
make clean

# Cleans everything, including the things you download from the network in order to compile (ex: npm packages).
# This is useful if you want to nuke everything and start from scratch.
# For example, it's super useful for making sure everything works for Travis, production, someone else's machine, etc
make distclean

Usage

  • If the tile is valid, vtvalidate will return an empty string.
  • If the tile is invalid, vtvalidate will return the string output from vtzero.
  • vtvalidate will throw an error if there is unexpected behaviour, for example an invalid argument value passed into vtvalidate.isValid() or a corrupt compressed buffer.

Valid tile

var vtvalidate = require('@mapbox/vtvalidate');

...

// Pass in protocol buffer (uncompressed)
vtvalidate.isValid(buffer, function(err, result) {
  if (err) throw err;

  // returns empty string if it's a valid tile
  console.log(result); // ''
});

Invalid tile

var vtvalidate = require('@mapbox/vtvalidate');

...

// Pass in protocol buffer (uncompressed)
vtvalidate.isValid(buffer, function(err, result) {
  if (err) throw err;

  // returns string that specifies why the tile is invalid
  console.log(result); // 'Missing geometry field in feature (spec 4.2)'
});

Type of validation

vtvalidate validates tile data against vtzero:

  • Tile data consistent with the Mapbox vector tile spec - Version 2. Tiles created via Mapbox vector tile spec Version 1 will be flagged invalid.
  • Read tile layer(s) and feature(s)
  • Decode properties
  • Decode geometries

Currently, vtvalidate does not check geometries for self-intersections, but planned in the future. If you'd like to add more extensive tile validation, check out this example.

CLI

Accepts either uncompressed or gzip/zlib compressed tiles

node bin/vtvalidate.js <path-to-vector-tile>

Will output:

  • empty string if it's a valid tile
  • string that specifies why the tile is invalid

Bench

Provide desired iterations and concurrency

node bench/isValid.bench.js --iterations 50 --concurrency 10

Dependents (1)

Package Sidebar

Install

npm i @mapbox/vtvalidate

Weekly Downloads

5

Version

0.3.1

License

ISC

Unpacked Size

90.8 kB

Total Files

40

Last publish

Collaborators

  • mbx-npm-ci-production
  • mbx-npm-ci-staging
  • mbx-npm-advanced-actions-production
  • mbx-npm-advanced-actions-staging
  • mbx-npm-09-production
  • mbx-npm-08-production
  • mbx-npm-07-production
  • mbx-npm-06-production
  • mbx-npm-05-production
  • mbx-npm-04-production
  • mbx-npm-03-production
  • mbx-npm-02-production
  • mbx-npm-01-production
  • mbx-npm-02-staging
  • mapbox-npm-01
  • mapbox-npm-02
  • mapbox-npm-07
  • mapbox-npm-03
  • mapbox-npm-04
  • mapbox-npm-09
  • mapbox-npm-05
  • mapbox-npm-06
  • mapbox-npm-08
  • mapbox-npm-advanced-actions
  • mapbox-npm-ci
  • mapbox-npm
  • mapbox-admin
  • mapbox-machine-user