Abstract La substance de la tuile vectorielle binaire est un groupe de fichiers PBF installés sur le serveur pour chaque position de la tuile XYZ. Un fichier PBF est un standard appelé tampon de protocole (je ne connais pas les détails), et ce sont des données binaires qui sérialisent GeoJSON. En d'autres termes, puisque l'original est GeoJSON, il peut être restauré (décodé). Cette fois, je voudrais essayer de décoder en GeoJSON en utilisant deux méthodes.
tippecanoe-decode En parlant de tippecanoe fabriqué par mapbox, c'est une célèbre bibliothèque utilisée pour générer des tuiles vectorielles binaires, mais elle possède également une fonction de décodage des tuiles vectorielles binaires vers GeoJSON.
Install
brew install tippecanoe
Usage
tippecanoe-decode <target_pbf> <zoomlevel> <x> <y>
Il s'agit de la forme de base, et il est possible d'extraire uniquement une couche source spécifique.
Exemple concret
tippecanoe-decode sample.pbf 13 7121 3260 --layer=road
Si vous avez des tuiles vectorielles dans un répertoire, vous pouvez les décoder simplement en spécifiant le répertoire (dans ce cas, il semble plus sûr de spécifier minzoom et maxzoom). Cependant, la sortie est un peu difficile à utiliser, donc pour référence (probablement plus rapide que de spécifier les fichiers PBF individuellement).
tippecanoe-decode bvtiles_dir -z 13 -Z 13 --layer=building
Node.js(vector-tile-js) Il s'agit également d'un package npm créé par mapbox.
Install
npm install @mapbox/vector-tile
npm install pbf
npm install fs
Usage Voici l exemple de code.
sample.js
var Pbf = require('pbf')
var VectorTile = require('@mapbox/vector-tile')
var fs = require('fs')
let pbfdata = fs.readFileSync(PBFFILE_PATH)
let pbf = new Pbf(pbfdata)
const layer = new VectorTile.VectorTile(pbf).layers[SOURCE_LAYER_NAME];
if (layer) {
for (let i = 0; i < layer.length; i++) {
const feature = layer.feature(i).toGeoJSON(X, Y, ZOOM_LEVEL);
console.log(feature) //Fonctionnalité de format GeoJSON
}
}
References