forked from MapComplete/MapComplete
Scripts(offline): skip already existing columns
This commit is contained in:
parent
7cd31b204d
commit
a23b829e44
1 changed files with 19 additions and 2 deletions
|
@ -3,6 +3,7 @@ import { Tiles } from "../src/Models/TileRange"
|
|||
import { OfflineBasemapManager } from "../src/service-worker/OfflineBasemapManager"
|
||||
|
||||
import { spawn } from "child_process"
|
||||
import { existsSync } from "fs"
|
||||
|
||||
|
||||
class GeneratePmTilesExtracts extends Script {
|
||||
|
@ -33,18 +34,27 @@ class GeneratePmTilesExtracts extends Script {
|
|||
if(maxzoom !== undefined){
|
||||
maxzoomflag = " --maxzoom="+maxzoom
|
||||
}
|
||||
return this.startProcess(`extract planet-latest.pmtiles --download-threads=1 --minzoom=${z}${maxzoomflag} --bbox=${[min_lon, min_lat + 0.0001, max_lon, max_lat].join(",")} ${z}-${x}-${y}.pmtiles`)
|
||||
return this.startProcess(`extract planet-latest.pmtiles --download-threads=1 --minzoom=${z}${maxzoomflag} --bbox=${[min_lon, min_lat + 0.0001, max_lon, max_lat].join(",")} ${this.getFilename(z, x, y)}`)
|
||||
}
|
||||
|
||||
private* generateField(z: number, maxzoom?: number): Generator<Promise<void>> {
|
||||
const boundary = 2 << (z - 1)
|
||||
for (let x = 0; x < boundary; x++) {
|
||||
if (existsSync(this.getFilename(z, x, boundary))) {
|
||||
// Skip this column, already exists
|
||||
console.log("Skipping column ", x, "at zoom", z)
|
||||
continue
|
||||
}
|
||||
for (let y = 0; y < boundary; y++) {
|
||||
yield this.generateArchive(z, x, y, maxzoom)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private getFilename(z: number, x: number, y: number) {
|
||||
return `${z}-${x}-${y}.pmitles`
|
||||
}
|
||||
|
||||
private* generateAll(): Generator<Promise<void>> {
|
||||
const zoomlevels: Record<number, number> = OfflineBasemapManager.zoomelevels
|
||||
for (const key in zoomlevels) {
|
||||
|
@ -74,6 +84,12 @@ class GeneratePmTilesExtracts extends Script {
|
|||
console.log("Please specify a target directory")
|
||||
return
|
||||
}
|
||||
let estimate = 0
|
||||
for (const key in OfflineBasemapManager.zoomelevels) {
|
||||
const z: number = Number(key)
|
||||
const boundary = 2 << (z - 1)
|
||||
estimate += boundary * boundary
|
||||
}
|
||||
console.log("Target dir is:", this.targetDir)
|
||||
const numberOfThreads = 512
|
||||
const generator = this.generateAll()
|
||||
|
@ -83,7 +99,8 @@ class GeneratePmTilesExtracts extends Script {
|
|||
batch = this.createBatch(generator, numberOfThreads)
|
||||
await Promise.all(batch)
|
||||
done += batch.length
|
||||
console.log("Completed", numberOfThreads, "processes; finished: " + done)
|
||||
const perc = ("" + ((done / estimate) / 100)).substring(0, 5)
|
||||
console.log("Completed", numberOfThreads, `processes; ${done} / ${estimate}, ${perc}%`)
|
||||
} while (batch.length > 0)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue