UNPKG

1.47 kBJavaScriptView Raw
1#!/usr/bin/env node
2var assert = require('assert');
3var Protobuf = require('pbf');
4var vt = require('vector-tile'),
5 VectorTile = vt.VectorTile,
6 VectorTileFeature = vt.VectorTileFeature;
7var rbush = require('../js/lib/rbush.js');
8
9
10// Script for displaying tags/frequency in a vector tile
11
12var fs = require("fs");
13var zlib = require("zlib");
14
15if (process.argv.length < 3) {
16 console.warn('Usage: %s %s [file.vector.pbf]', process.argv[0], process.argv[1]);
17 process.exit(1);
18}
19
20var data = fs.readFileSync(process.argv[2]);
21
22zlib.inflate(data, function(err, data) {
23if (err) throw err;
24
25var tile = new VectorTile(new Protobuf(new Uint8Array(data)));
26
27
28var tree = rbush(9, ['.x1', '.y1', '.x2', '.y2']);
29
30for (var layer_name in tile.layers) {
31 var layer = tile.layers[layer_name];
32 for (var i = 0; i < layer.length; i++) {
33 var feature = layer.feature(i);
34
35 var bbox = feature.bbox();
36 bbox.index = i;
37 bbox.layer = layer_name;
38 tree.insert(bbox);
39
40 assert(bbox.x1 <= bbox.x2);
41 assert(bbox.y1 <= bbox.y2);
42 }
43}
44
45var radius = 16;
46var x = 126 * 16;
47var y = 72 * 16;
48var result = tree.search([ x - radius, y - radius, x + radius, y + radius ]);
49
50for (var i = 0; i < result.length; i++) {
51 var layer = tile.layers[result[i].layer];
52 var feature = layer.feature(result[i].index);
53
54 console.warn(result[i].layer, feature._type, feature['class'], feature.contains({ x: x, y: y }, radius));
55}
56
57
58
59});