[PYTHON] Zwei Möglichkeiten, binäre Vektorkacheln in GeoJSON zu dekodieren

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

Sonderedition

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

Recommended Posts

Zwei Möglichkeiten, binäre Vektorkacheln in GeoJSON zu dekodieren
Zwei Möglichkeiten, Ansible portabel zu machen
Implementierung der API zum Umschalten von Werten auf zwei Arten (go)