import * as fs from "fs"; function main(args) { if (args.length < 2) { console.log("Given a single geojson file, generates the partitions for every found property") console.log("USAGE: perProperty `file.geojson` `property-key`") return } const path = args[0] const key = args[1] const data = JSON.parse(fs.readFileSync(path, "UTF8")) const perProperty = new Map() console.log("Partitioning", data.features.length, "features") for (const feature of data.features) { const v = feature.properties[key] if (!perProperty.has(v)) { console.log("Found a new category:", v) perProperty.set(v, []) } perProperty.get(v).push(feature) } const stripped = path.substr(0, path.length - ".geojson".length) perProperty.forEach((features, v) => { fs.writeFileSync(stripped + "." + v.replace(/[^a-zA-Z0-9_]/g, "_") + ".geojson", JSON.stringify({ type: "FeatureCollection", features })) }) } let args = [...process.argv] args.splice(0, 2) try { main(args) } catch (e) { console.error("Error building cache:", e) } console.log("All done!")