forked from MapComplete/MapComplete
Scripts(offline): set target dir
This commit is contained in:
parent
34ca5c47d5
commit
903df21824
1 changed files with 23 additions and 15 deletions
|
@ -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>[] = []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue