Cuts a file pyramid of static vector tiles (.mvt) from a geojson file
We are using mapboxGL in The Capital Planning Platform, and needed an alternative to downloading large static data files for local rendering on the map. We didn't want to put them into a service that would require $ and maintenance, so static vector tiles seemed like a useful alternative for data that will not change very often.
Install
npm install geojson2mvt
geojson2mvt
takes a config object with the GeoJSONs to encode and other options, and builds the pyramid in the specified output directory
var fs = require('fs');
var geojson2mvt = require('geojson2mvt');
var options = {
layers: {
layer0: JSON.parse(fs.readFileSync('bus_routes.geojson', "utf8")),
layer1: JSON.parse(fs.readFileSync('stops.geojson', "utf8"))
},
rootDir: 'tiles',
bbox : [40.426042,-74.599228,40.884448,-73.409958], //[south,west,north,east]
zoom : {
min : 8,
max : 18,
}
};
// build the static tile pyramid
geojson2mvt(options);
Check out /example
for a test project that you can try locally
layers
- Object<string,Object> (required) - GeoJSONs to create a vector tileset from. Keys are the layer names that will be used to access data from the respective GeoJSON when displaying data from the MVT.
rootDir
- string (required) - the filepath of the directory that will be the root of the file pyramid. It will be created if it doesn't exist.
bbox
- array (required) - array of lat/lon bounds like [s,w,n,e]
zoom
- object (required) - object with min
and max
properties for the desired zoom levels in the tile pyramid
Instead of providing a single config object, you can provide two arguments: a geoJson and config object without a layers
property, but instead with a layerName
property for the name for the imported geoJson in the MVT.