57 lines
2.3 KiB
JavaScript
57 lines
2.3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
var commander = require("commander"),
|
|
graticule = require("d3-geo").geoGraticule(),
|
|
write = require("./write");
|
|
|
|
commander
|
|
.version(require("../package.json").version)
|
|
.usage("[options]")
|
|
.description("Generate a GeoJSON graticule.")
|
|
.option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
|
|
.option("--extent <value>", "the major and minor extent", parseExtent)
|
|
.option("--extent-minor <value>", "the minor extent; defaults to " + graticule.extentMajor(), parseExtent)
|
|
.option("--extent-major <value>", "the major extent; defaults to " + graticule.extentMinor(), parseExtent)
|
|
.option("--step <value>", "the major and minor step", parseStep)
|
|
.option("--step-minor <value>", "the minor step; defaults to " + graticule.stepMinor(), parseStep)
|
|
.option("--step-major <value>", "the major step; defaults to " + graticule.stepMajor(), parseStep)
|
|
.option("--precision <value>", "the precision; defaults to " + graticule.precision(), graticule.precision())
|
|
.parse(process.argv);
|
|
|
|
if (commander.args.length !== 0) {
|
|
console.error();
|
|
console.error(" error: unexpected arguments");
|
|
console.error();
|
|
process.exit(1);
|
|
}
|
|
|
|
if (commander.extent != null) {
|
|
if (commander.extentMinor == null) commander.extentMinor = commander.extent;
|
|
if (commander.extentMajor == null) commander.extentMajor = commander.extent;
|
|
}
|
|
if (commander.step != null) {
|
|
if (commander.stepMinor == null) commander.stepMinor = commander.step;
|
|
if (commander.stepMajor == null) commander.stepMajor = commander.step;
|
|
}
|
|
if (commander.extentMinor != null) graticule.extentMinor(commander.extentMinor);
|
|
if (commander.extentMajor != null) graticule.extentMajor(commander.extentMajor);
|
|
if (commander.stepMinor != null) graticule.stepMinor(commander.stepMinor);
|
|
if (commander.stepMajor != null) graticule.stepMajor(commander.stepMajor);
|
|
if (commander.precision != null) graticule.precision(commander.precision);
|
|
|
|
var writer = write(commander.out);
|
|
writer.write(JSON.stringify(graticule()) + "\n");
|
|
writer.end().catch(abort);
|
|
|
|
function parseStep(x) {
|
|
return x = x.split(","), x.length === 1 ? [+x[0], +x[0]] : [+x[0], +x[1]];
|
|
}
|
|
|
|
function parseExtent(x) {
|
|
return x = x.split(","), [[+x[0], +x[1]], [+x[2], +x[3]]];
|
|
}
|
|
|
|
function abort(error) {
|
|
console.error(error.stack);
|
|
}
|