-
Notifications
You must be signed in to change notification settings - Fork 6
/
centroid.js
executable file
·34 lines (29 loc) · 1001 Bytes
/
centroid.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env node
'use strict';
const program = require('commander');
const fs = require('fs');
const turf = require('@turf/turf');
const stringify = require('stringify-stream');
const split = require('split');
const stream = require('stream');
const centroidStream = new stream.Transform( { objectMode: true } );
centroidStream._transform = function (feature, encoding, done) {
// Shave away all attributes except day for centroid features
const centroidFeature = turf.centroid(feature);
centroidFeature.properties = feature.properties;
this.push(centroidFeature);
done();
};
program
.option('-i, --input <f>', 'GeoJSON source file')
.option('-o, --output <f>', 'GeoJSON destination file')
.parse(process.argv);
if (program.input && program.output) {
fs.createReadStream(program.input)
.pipe(split(JSON.parse, null, { trailing: false }))
.pipe(centroidStream)
.pipe(stringify())
.pipe(fs.createWriteStream(program.output));
} else {
program.help();
}