Skip to content

Instantly share code, notes, and snippets.

@stepankuzmin
Created June 26, 2018 11:00
Show Gist options
  • Save stepankuzmin/5270b484cd3455fe5a0e9f0aeb42d753 to your computer and use it in GitHub Desktop.
Save stepankuzmin/5270b484cd3455fe5a0e9f0aeb42d753 to your computer and use it in GitHub Desktop.
Reading vector tiles from PostGIS
const zlib = require("zlib");
const Protobuf = require("pbf");
const postgis = require("tilelive-postgis");
const tilelive = require("@mapbox/tilelive");
const VectorTile = require("@mapbox/vector-tile").VectorTile;
postgis.registerProtocols(tilelive);
const uri =
"postgis://postgres@localhost/test?table=test&layerName=myLayer&geometry_field=geom";
tilelive.load(uri, (error, source) => {
console.error("error", error);
console.log("source", source);
source.getTile(0, 0, 0, (err, buffer, headers) => {
console.error("err", err);
console.log("buffer", buffer);
console.log("headers", headers);
source.close();
zlib.unzip(buffer, (err, buffer) => {
const tile = new VectorTile(new Protobuf(buffer));
const layers = tile.layers;
Object.keys(layers).forEach(layerId => {
const layer = layers[layerId];
console.log(layerId, layer.length);
for (let index = 0; index < layer.length; index++) {
const feature = layer.feature(index);
console.log(feature.id, feature);
}
});
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment