From 1f53e7b8174910f9a88f193e0519977ba3062a65 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 25 Sep 2025 14:03:02 +0200 Subject: [PATCH] Update pmtiles extraction script --- scripts/generatePmTilesExtracts.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/scripts/generatePmTilesExtracts.ts b/scripts/generatePmTilesExtracts.ts index f19cf85d8..7ba00557c 100644 --- a/scripts/generatePmTilesExtracts.ts +++ b/scripts/generatePmTilesExtracts.ts @@ -1,10 +1,10 @@ import Script from "./Script" import { Tiles } from "../src/Models/TileRange" -import { OfflineBasemapManager } from "../src/service-worker/OfflineBasemapManager" import { spawn } from "child_process" -import { existsSync } from "fs" +import { existsSync, mkdirSync, writeFileSync } from "fs" import { Utils } from "../src/Utils" +import { OfflineBasemapManager } from "../src/Logic/OfflineBasemapManager" class GeneratePmTilesExtracts extends Script { private targetDir: string @@ -79,6 +79,9 @@ class GeneratePmTilesExtracts extends Script { const boundary = 2 << (z - 1) for (let x = 0; x < boundary; x++) { + if (!existsSync(z + "/" + x)) { + mkdirSync(z + "/" + x) + } for (const promise of this.generateColumnIfNeeded(z, x, boundary, maxzoom)) { yield promise } @@ -86,7 +89,7 @@ class GeneratePmTilesExtracts extends Script { } private getFilename(z: number, x: number, y: number) { - return `${z}-${x}-${y}.pmtiles` + return `${z}/${x}/${y}.pmtiles` } private *generateAll(): Generator> { @@ -94,6 +97,9 @@ class GeneratePmTilesExtracts extends Script { for (const key in zoomlevels) { const minzoom: number = Number(key) const maxzoom: number | undefined = zoomlevels[key] + if (!existsSync("" + key)) { + mkdirSync("" + key) + } for (const promise of this.generateField(minzoom, maxzoom)) { yield promise } @@ -125,7 +131,7 @@ class GeneratePmTilesExtracts extends Script { estimate += boundary * boundary } console.log("Target dir is:", this.targetDir) - const numberOfThreads = 512 + const numberOfThreads = 24 const generator = this.generateAll() let batch: Promise[] = [] let done = 0 @@ -149,6 +155,12 @@ class GeneratePmTilesExtracts extends Script { )}` ) } while (batch.length > 0) + writeFileSync("Last_pm_tile_extracts.txt", + [new Date().getTime() + "", + new Date().toISOString(), + "# The script converting the planet-latest.pmtiles into sub-archives has been successfully executed at the stated time", + ].join("\n"), "utf-8", + ) } }