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!")