[PYTHON] Deux façons de décoder des tuiles vectorielles binaires en GeoJSON

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

Édition supplémentaire

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

Recommended Posts

Deux façons de décoder des tuiles vectorielles binaires en GeoJSON
Deux façons de rendre Ansible portable
Implémentation de l'API pour basculer les valeurs de deux manières (aller)