Unified multi-layer PMTiles batch builder script #34

Closed
opened 2026-10-14 22:28:33 +00:00 by yuris · 1 comment
Owner

What to build

Upgrade scripts/build-pmtiles.sh to compile core vector tile archives from cleaned spatial layers using tippecanoe. Standardize layer names, zoom levels, simplification limits, and attribute compression across all layers.

Technical specifications

  1. Target files:
    • scripts/build-pmtiles.sh: Comprehensive batch compilation script.
  2. Target archives:
    • public/tiles/peat_soil.pmtiles: Peat depth polygons (z3–z12, --drop-densest-as-needed).
    • public/tiles/khg.pmtiles: KHG boundaries (z3–z12, --coalesce-densest-as-needed).
    • public/tiles/concessions.pmtiles: HGU & HTI concessions (z5–z14, --coalesce-densest-as-needed).
    • public/tiles/drainage_canals.pmtiles: Drainage canals (z11–z14, --extend-zooms-if-still-dropping).
    • public/tiles/burn_scars_historical.pmtiles: Historic burn scars (z4–z12).
  3. Execution safety:
    • Verify source files exist in .cache/ before initiating compile.
    • Run pmtiles verify on each generated archive.

Acceptance criteria

  • Running ./scripts/build-pmtiles.sh produces verified .pmtiles archives in public/tiles/.
  • Every archive verifies cleanly with the pmtiles CLI.
  • Total disk space for all generated archives is under 300 MB.

Blocked by

  • Issue 20: [Backend] Geometry validation & GEOS topology repair (rustgis clean).

Authoritative Specifications & Reference Documentation

  • Titik Gambut Architecture & Subsystem Contract: docs/ARCHITECTURE.md
  • Upstream RustGIS Engine & CLI: opengeos/RustGIS Repository — fast pure-Rust GIS with rustgis-cli, GeoLibre integration, and native FlatGeobuf/PMTiles/COG pipelines.
  • RustGIS Documentation: rustgis.app
  • Protomaps PMTiles Specification: protomaps/PMTiles GitHub — cloud-optimized single-file vector/raster tile format using HTTP 206 byte-range requests.
  • Protomaps Basemaps Style & Docs: protomaps.com/docs
  • Kementerian ATR/BPN Satu Peta HGU: Satu Peta Geoportal — Official cadastral HGU plantation concessions.
  • KLHK Geoportal PBPH-HTI / PBPH-HA: KemenLHK WebGIS — Forestry and pulpwood concession boundaries.
  • Global Forest Watch Indonesia Concessions: GFW Open Data — Reference timber and palm oil concessions.
  • BRGM PRIMS (Peatland Restoration Information & Monitoring System): prims.brgm.go.id — Peat drainage canals, canal blocks (sekat kanal), and deep wells (sumur bor).
  • Pantau Gambut Canal Network: pantaugambut.id — Field verification data on drainage canal degradation.
  • Copernicus Sentinel-2 STAC API: Earth Search STAC API — AWS Element84 Sentinel-2 L2A STAC catalog.
  • Normalized Burn Ratio (NBR) Standard: USGS Landsat NBR — Formula: (B8 - B12) / (B8 + B12).
  • European Forest Fire Information System (EFFIS): EFFIS Burn Severity Classification — Delta-NBR fire damage scoring.
  • Cloudflare R2 Object Storage: developers.cloudflare.com/r2 — Zero-egress HTTP 206 byte-range object storage.
  • Cloudflare CDN Cache-Control: developers.cloudflare.com/cache — Edge caching and Range header behavior.
### What to build Upgrade `scripts/build-pmtiles.sh` to compile core vector tile archives from cleaned spatial layers using `tippecanoe`. Standardize layer names, zoom levels, simplification limits, and attribute compression across all layers. ### Technical specifications 1. **Target files**: - `scripts/build-pmtiles.sh`: Comprehensive batch compilation script. 2. **Target archives**: - `public/tiles/peat_soil.pmtiles`: Peat depth polygons (z3–z12, `--drop-densest-as-needed`). - `public/tiles/khg.pmtiles`: KHG boundaries (z3–z12, `--coalesce-densest-as-needed`). - `public/tiles/concessions.pmtiles`: HGU & HTI concessions (z5–z14, `--coalesce-densest-as-needed`). - `public/tiles/drainage_canals.pmtiles`: Drainage canals (z11–z14, `--extend-zooms-if-still-dropping`). - `public/tiles/burn_scars_historical.pmtiles`: Historic burn scars (z4–z12). 3. **Execution safety**: - Verify source files exist in `.cache/` before initiating compile. - Run `pmtiles verify` on each generated archive. ### Acceptance criteria - [ ] Running `./scripts/build-pmtiles.sh` produces verified `.pmtiles` archives in `public/tiles/`. - [ ] Every archive verifies cleanly with the `pmtiles` CLI. - [ ] Total disk space for all generated archives is under 300 MB. ### Blocked by - Issue 20: [Backend] Geometry validation & GEOS topology repair (`rustgis clean`). --- ### Authoritative Specifications & Reference Documentation - **Titik Gambut Architecture & Subsystem Contract**: [`docs/ARCHITECTURE.md`](https://git.nokopia.com/yuris/titik-gambut-next/src/branch/main/docs/ARCHITECTURE.md) - **Upstream RustGIS Engine & CLI**: [opengeos/RustGIS Repository](https://github.com/opengeos/RustGIS) — fast pure-Rust GIS with `rustgis-cli`, GeoLibre integration, and native FlatGeobuf/PMTiles/COG pipelines. - **RustGIS Documentation**: [rustgis.app](https://rustgis.app) - **Protomaps PMTiles Specification**: [protomaps/PMTiles GitHub](https://github.com/protomaps/PMTiles) — cloud-optimized single-file vector/raster tile format using HTTP 206 byte-range requests. - **Protomaps Basemaps Style & Docs**: [protomaps.com/docs](https://docs.protomaps.com/basemaps/) - **Kementerian ATR/BPN Satu Peta HGU**: [Satu Peta Geoportal](https://satupeta.atrbpn.go.id/) — Official cadastral HGU plantation concessions. - **KLHK Geoportal PBPH-HTI / PBPH-HA**: [KemenLHK WebGIS](https://geoportal.menlhk.go.id/) — Forestry and pulpwood concession boundaries. - **Global Forest Watch Indonesia Concessions**: [GFW Open Data](https://data.globalforestwatch.org/) — Reference timber and palm oil concessions. - **BRGM PRIMS (Peatland Restoration Information & Monitoring System)**: [prims.brgm.go.id](https://prims.brgm.go.id/) — Peat drainage canals, canal blocks (*sekat kanal*), and deep wells (*sumur bor*). - **Pantau Gambut Canal Network**: [pantaugambut.id](https://pantaugambut.id/) — Field verification data on drainage canal degradation. - **Copernicus Sentinel-2 STAC API**: [Earth Search STAC API](https://earth-search.aws.element84.com/v1) — AWS Element84 Sentinel-2 L2A STAC catalog. - **Normalized Burn Ratio (NBR) Standard**: [USGS Landsat NBR](https://www.usgs.gov/landsat-missions/normalized-burn-ratio) — Formula: $(B8 - B12) / (B8 + B12)$. - **European Forest Fire Information System (EFFIS)**: [EFFIS Burn Severity Classification](https://effis.jrc.ec.europa.eu/) — Delta-NBR fire damage scoring. - **Cloudflare R2 Object Storage**: [developers.cloudflare.com/r2](https://developers.cloudflare.com/r2/) — Zero-egress HTTP 206 byte-range object storage. - **Cloudflare CDN Cache-Control**: [developers.cloudflare.com/cache](https://developers.cloudflare.com/cache/) — Edge caching and Range header behavior.
yuris changed title from Issue 21: [Backend] Unified multi-layer PMTiles batch builder script to [Backend] Unified multi-layer PMTiles batch builder script 2026-10-14 22:31:29 +00:00
yuris changed title from [Backend] Unified multi-layer PMTiles batch builder script to Unified multi-layer PMTiles batch builder script 2026-10-14 22:38:35 +00:00
Author
Owner

Closing as redundant. The repository has standardized on modular tile compilation scripts (build-concessions-pmtiles.sh, build-canals-pmtiles.sh, build-pmtiles.sh), tested via Vitest and orchestrated cleanly by .forgejo/workflows/sync-tiles-r2.yml. Merging them into a single monolithic script introduces unnecessary coupling.

Closing as redundant. The repository has standardized on modular tile compilation scripts (`build-concessions-pmtiles.sh`, `build-canals-pmtiles.sh`, `build-pmtiles.sh`), tested via Vitest and orchestrated cleanly by `.forgejo/workflows/sync-tiles-r2.yml`. Merging them into a single monolithic script introduces unnecessary coupling.
yuris closed this issue 2026-10-15 05:59:08 +00:00
Sign in to join this conversation.
No labels
backend
frontend
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/titik-gambut-next#34
No description provided.