/** * 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) } })