forked from MapComplete/MapComplete
Add generateTileOverview-script
This commit is contained in:
parent
c8b0d8f914
commit
5648d5372a
1 changed files with 51 additions and 0 deletions
51
scripts/generateTileOverview.ts
Normal file
51
scripts/generateTileOverview.ts
Normal file
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* Generates an overview for which tiles exist and which don't
|
||||
*/
|
||||
import ScriptUtils from "./ScriptUtils";
|
||||
import {Tiles} from "../Models/TileRange";
|
||||
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<string, number[]>*/ = {}
|
||||
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)
|
||||
}
|
||||
})
|
Loading…
Reference in a new issue