/** * Generates an overview for which tiles exist and which don't */ import ScriptUtils from "./ScriptUtils" import { writeFileSync } from "fs" function main(args: string[]) { const directory = args[0] let zoomLevel = args[1] const files = ScriptUtils.readDirRecSync(directory, 1).filter((f) => f.endsWith(".geojson")) const indices /* Map*/ = {} for (const path of files) { const match = path.match(".*_([0-9]*)_([0-9]*)_([0-9]*).geojson") if (match === null) { continue } const z = match[1] if (zoomLevel === undefined) { zoomLevel = z } else if (zoomLevel !== z) { throw "Mixed zoomlevels detected" } const x = match[2] const y = match[3] if (indices[x] === undefined) { indices[x] = [] } indices[x].push(Number(y)) } indices["zoom"] = zoomLevel const match = files[0].match("(.*)_([0-9]*)_([0-9]*)_([0-9]*).geojson") const path = match[1] + "_" + zoomLevel + "_overview.json" writeFileSync(path, JSON.stringify(indices)) console.log("Written overview for", files.length, " tiles at", path) } let args = [...process.argv] args.splice(0, 2) args.forEach((file) => { try { main(args) } catch (e) { console.error("Could not handle file ", file, " due to ", e) } })