Simply checks if a vector tile contains valid/invalid geometries
Validate vector tiles based on the Mapbox Vector Tile Specification 2.x via vtzero.



shell
git clone git@github.com:mapbox/vtvalidate.git
cd vtvalidateBuild binaries. This looks to see if there were changes in the C++ code. This does not reinstall deps.
makeRun tests
make testCleans your current builds and removes potential cache
make cleanCleans 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
`js
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
`js
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 geometriesCurrently, 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
`
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
``