What is geojson-vt?
The geojson-vt package is a library for slicing GeoJSON into vector tiles on the fly. It's primarily designed to handle large amounts of data by cutting them into smaller, more manageable pieces called 'tiles'. These tiles can then be used for efficient rendering and manipulation on map interfaces.
What are geojson-vt's main functionalities?
Slicing GeoJSON into vector tiles
This feature allows you to convert a GeoJSON object into vector tiles. You can then retrieve specific tiles by their x, y, and z coordinates.
const geojsonVt = require('geojson-vt');
const geojsonData = {
type: 'FeatureCollection',
features: [...]
};
const options = {};
const tileIndex = geojsonVt(geojsonData, options);
const tile = tileIndex.getTile(z, x, y);
Custom tile generation options
This feature allows you to customize how the GeoJSON data is sliced into vector tiles, including the level of detail, simplification tolerance, and tile dimensions.
const options = {
maxZoom: 17, // max zoom to preserve detail on; can't be higher than 24
tolerance: 3, // simplification tolerance (higher means simpler)
extent: 4096, // tile extent (both width and height)
buffer: 64, // tile buffer on each side
debug: 0, // logging level (0 to disable, 1 or 2)
lineMetrics: false, // whether to enable line metrics tracking for LineString/MultiLineString features
promoteId: null, // name of a feature property to promote to feature.id
generateId: false, // whether to generate feature ids. Cannot be used with promoteId
indexMaxZoom: 5, // max zoom in the initial tile index
indexMaxPoints: 100000 // max number of points per tile in the index
};
const tileIndex = geojsonVt(geojsonData, options);
On-the-fly tile generation
This feature allows you to generate tiles on demand, rather than processing an entire set of tiles upfront. This can be more efficient when dealing with large datasets.
const tile = tileIndex.getTile(z, x, y);
if (!tile) {
console.log('Tile not found');
} else {
console.log('Generated tile:', tile);
}
Other packages similar to geojson-vt
mapshaper
Mapshaper is a tool for editing and converting vector map data. It has a web interface and a command-line tool. While it can simplify and convert data formats, it doesn't specifically slice data into vector tiles like geojson-vt does, but it can be used for preprocessing data before using it with geojson-vt.
GeoJSON Vector Tiles
A highly efficient JavaScript library for slicing GeoJSON data
into vector tiles
(or rather their JSON equivalent) on the fly,
primarily for rendering purposes.
Created to power GeoJSON rendering in Mapbox GL JS,
but can be useful for other data visualization purposes.
Usage
var tileIndex = geojsonvt(geoJSON, {
baseZoom: 14,
maxZoom: 14,
maxPoints: 100,
debug: 0
});
var features = tileIndex.getTile(z, x, y).features;
Demo
To see a geojson-vt in action, run npm run build-dev
,
then open debug/index.html
in your browser and drag any GeoJSON on the page.
It was tested on files up to 100Mb: