1 | #!/usr/bin/env node
|
2 | var Protobuf = require('pbf');
|
3 | var VectorTile = require('vector-tile').VectorTile;
|
4 | var VectorTileFeature = require('vector-tile').VectorTileFeature;
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | var fs = require("fs");
|
10 | var zlib = require("zlib");
|
11 |
|
12 | if (process.argv.length < 3) {
|
13 | console.warn('Usage: %s %s [file.vector.pbf]', process.argv[0], process.argv[1]);
|
14 | process.exit(1);
|
15 | }
|
16 |
|
17 | var data = fs.readFileSync(process.argv[2]);
|
18 |
|
19 | zlib.inflate(data, function(err, data) {
|
20 | if (err) throw err;
|
21 |
|
22 | var tile = new VectorTile(new Protobuf(new Uint8Array(data)));
|
23 |
|
24 | var omit = ['osm_id', 'name', 'name_en', 'name_de', 'name_es', 'name_fr', 'maki', 'website', 'address', 'reflen', 'len', 'area'];
|
25 |
|
26 | var stats = { fill: {}, line: {}, point: {} };
|
27 | for (var layer_name in tile.layers) {
|
28 | var layer = tile.layers[layer_name];
|
29 | var tags = {};
|
30 | for (var i = 0; i < layer.length; i++) {
|
31 | var feature = layer.feature(i);
|
32 | var type = VectorTileFeature.mapping[feature._type];
|
33 | if (!(type in tags)) tags[type] = stats[type][layer_name] = { '(all)': 0 };
|
34 | tags[type]['(all)']++;
|
35 | for (var key in feature) {
|
36 | if (feature.hasOwnProperty(key) && key[0] !== '_' && omit.indexOf(key) < 0) {
|
37 | if (!(key in tags[type])) tags[type][key] = {};
|
38 | var val = feature[key];
|
39 | if (tags[type][key][val]) tags[type][key][val]++;
|
40 | else tags[type][key][val] = 1;
|
41 | }
|
42 | }
|
43 | }
|
44 | }
|
45 |
|
46 | console.warn(JSON.stringify(stats.fill.water, null, 4));
|
47 | });
|