Scripts(offline): set target dir

This commit is contained in:
Pieter Vander Vennet 2025-07-31 01:11:12 +02:00
parent 34ca5c47d5
commit 903df21824

View file

@ -4,33 +4,36 @@ import { OfflineBasemapManager } from "../src/service-worker/OfflineBasemapManag
import { spawn } from "child_process"
function startProcess(script: string): Promise<void> {
return new Promise((resolve, reject) => {
const child = spawn("node", [script], { stdio: "ignore" })
child.on("close", (code) => {
if (code === 0) resolve()
else reject(new Error(`Process exited with code ${code}`))
})
child.on("error", reject)
})
}
class GeneratePmTilesExtracts extends Script {
private targetDir: string
constructor() {
super("Generates many pmtiles-archive from planet-latest.pmtiles. Must be started from the directory where planet-latest.pmtiles resides, archives will be created next to it")
}
startProcess(script: string): Promise<void> {
return new Promise((resolve, reject) => {
const child = spawn("node", [script],
{ stdio: "ignore", cwd: this.targetDir })
child.on("close", (code) => {
if (code === 0) resolve()
else reject(new Error(`Process exited with code ${code}`))
})
child.on("error", reject)
})
}
private generateArchive(z: number, x: number, y: number, maxzoom?: number): Promise<void> {
const [[max_lat, min_lon], [min_lat, max_lon]] = Tiles.tile_bounds(z, x, y)
let maxzoomflag = ""
if(maxzoom !== undefined){
maxzoomflag = " --maxzoom="+maxzoom
}
return startProcess(`./pmtiles 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(`./pmtiles 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`)
}
private* generateField(z: number, maxzoom?: number): Generator<Promise<void>> {
@ -65,7 +68,12 @@ class GeneratePmTilesExtracts extends Script {
return batch
}
async main(): Promise<void> {
async main(args: string[]): Promise<void> {
this.targetDir = args[0]
if (!this.targetDir) {
console.log("Please specify a target directory")
return
}
const numberOfThreads = 512
const generator = this.generateAll()
let batch: Promise<void>[] = []