Abstract Die Substanz der binären Vektorkachel ist eine Gruppe von PBF-Dateien, die auf dem Server für jede Position der XYZ-Kachel installiert sind. Eine PBF-Datei ist ein Standard, der als Protokollpuffer bezeichnet wird (ich kenne die Details nicht), und es sind Binärdaten, die GeoJSON serialisieren. Mit anderen Worten, da das Original GeoJSON ist, kann es wiederhergestellt (dekodiert) werden. Dieses Mal möchte ich versuchen, mit zwei Methoden in GeoJSON zu dekodieren.
tippecanoe-decode Apropos Tippecanoe von Mapbox: Es ist eine berühmte Bibliothek, die zum Generieren von binären Vektorkacheln verwendet wird, hat aber auch eine Dekodierungsfunktion von binären Vektorkacheln zu GeoJSON.
Install
brew install tippecanoe
Usage
tippecanoe-decode <target_pbf> <zoomlevel> <x> <y>
Dies ist die Grundform, und es ist möglich, nur eine bestimmte Quellschicht zu extrahieren.
Konkretes Beispiel
tippecanoe-decode sample.pbf 13 7121 3260 --layer=road
Wenn sich in einem Verzeichnis Vektorkacheln befinden, können Sie diese einfach durch Angabe des Verzeichnisses dekodieren (in diesem Fall erscheint es sicherer, Minzoom und Maxzoom anzugeben). Die Ausgabe ist jedoch etwas schwierig zu verwenden, daher als Referenz (möglicherweise ist dies schneller als die Angabe der PBF-Dateien einzeln).
tippecanoe-decode bvtiles_dir -z 13 -Z 13 --layer=building
Node.js(vector-tile-js) Dies ist auch ein npm-Paket von mapbox.
Install
npm install @mapbox/vector-tile
npm install pbf
npm install fs
Usage Hier ist der Beispielcode.
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) //GeoJSON-Format Funktion
}
}
References