Skip to content

vtvalidate

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

node-cpp-skelBuild Statuscodecov

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

varvtvalidate=require('@mapbox/vtvalidate');
...
// Pass in protocol buffer (uncompressed)vtvalidate.isValid(buffer,function(err,result){if(err)throwerr;// returns empty string if it's a valid tileconsole.log(result);// ''});

Invalid tile

varvtvalidate=require('@mapbox/vtvalidate');
...
// Pass in protocol buffer (uncompressed)vtvalidate.isValid(buffer,function(err,result){if(err)throwerr;// returns string that specifies why the tile is invalidconsole.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

About

Check if a vector tile contains valid/invalid geometries

Resources

Code of conduct

Contributing

Security policy

Stars

15 stars

Watchers

94 watching

Forks

Releases

Packages

Used by

Contributors

Languages