ES
← Back to Portfolio
3D & Visualization September 2026

Rajo, Open Pits Seen from Orbit

An open observatory of the world's great open-pit mines and lithium evaporation ponds over four decades: a 3D globe with real relief, a yearly time-lapse per site from Landsat 1985 to Sentinel-2 today, spectral and mineral indices computed live in the browser from the raw cloud-optimized GeoTIFFs, a learned mine-footprint segmentation running in the browser, change points on the mined-area signal, and the elevation difference between the 2000 and the 2011 to 2015 global surfaces. Thirty sites, Chilean copper at the core; no backend, no account, nothing uploaded.

Sources
Landsat Collection 2 L2 (Planetary Computer), Sentinel-2 L2A COGs (Earth Search), Maus 2022 and Tang and Werner 2023 polygons, Jasansky 2024 training tiles, SRTM 2000 and Copernicus DEM 2011 to 2015; Cochilco, operator disclosures and the USGS copper table for the facts
Lanes
Replay (frames, masks, series, dense, DEM), live spectral (nine indices, Otsu, k-means, spectral angle, SAM), learned (random forest and U-Net through onnxruntime-web), signal (change points with ruptures, harmonic breaks)
Licences
MIT code; derived polygon layers stay CC BY-SA 4.0 (Maus 2022); the EOX Sentinel-2 cloudless basemap is CC BY-NC-SA 4.0, so Rajo is a non-commercial research showcase with the attribution rendered verbatim; the GRID tailings portal is permission-only and is not redistributed
Gates
Typecheck, frontend and pipeline tests, the fit, chrome, timeline and live gates, a Spanish gate that fails the build on an unaccented form or an English fragment welded around a number, a series gate that screenshots the map under each mask method and fails if the two are equal
Deploy
vps-static on the production VPS under the wildcard domain, TLS by certbot, release directories swapped atomically; live since 2026-09-03, version 0.02.007 served; public, MIT; lifecycle planned in the plan, deployment live in fact
Architecture diagram of Rajo, Open Pits Seen from Orbit
#remote-sensing #landsat #sentinel-2 #mining #open-pit #3d-globe #maplibre #onnx #webgpu #change-points #dem #chile #open-data

Business Context

For a reader the product answers, per site, four questions the Atlas and the Observatory are built around: what am I looking at, how did it grow, where did the rock go, and how sure is the mask. Every number on screen traces to a computation that can be rerun in the browser or to a named, dated source: Cochilco and the operators' own disclosures on the site cards, the USGS copper table by country on the Atlas, the held-out benchmark on the Methods page. It is a research showcase built on Felipe's own visual identity rather than the shared CAOS shell, by his explicit instruction.

Strategic Value

Rajo is live at its own domain as a vps-static deploy since 2026-09-03 and serves version 0.02.007: the four lanes on the thirty sites, the complete dense series, the Spanish surface written with its accents and its numbers formatted in the reader's locale, each held by a gate in CI. The plan keeps its lifecycle at planned because Felipe has not moved it; the deployment facts are recorded as measured. The workflow trigger defect it found (push runs that never registered until the workflow file was renamed) is now a fleet-wide finding.

The Challenge

Open-pit mines are among the largest objects people build, and their growth is recorded in public satellite archives going back forty years, yet nobody can watch a pit grow, measure its footprint or see how much rock moved without a GIS licence and a week of downloads. The reference polygons exist (Maus 2022, Tang and Werner 2023), the imagery is open (Landsat Collection 2, Sentinel-2 L2A as cloud-optimized GeoTIFFs), the elevation models are open (SRTM, Copernicus DEM), and none of it is joined into something a reader can open.

Our Approach

An offline pipeline bakes, for each of thirty sites, the yearly frames from 1985 to today (Landsat, then Sentinel-2), the classical and learned masks, the mined-area series with its change points (ruptures), the dense series of every clear Sentinel-2 date since 2017 with its harmonic breaks, and the elevation difference between the year-2000 radar surface and the 2011 to 2015 Copernicus surface; 7,107 files, validated and checksummed, committed as compact WebP frames and JSON. Two models are trained on the Jasansky 2024 tiles and exported to ONNX: a random forest walked from flat node arrays and a U-Net on WebGPU or WASM. The site is a static replay of those artifacts on a MapLibre globe with 3D terrain, plus three live lanes in the browser: range reads of the latest clear Sentinel-2 scene, nine indices with Otsu, k-means and spectral angle in a Web Worker, and the two learned masks through onnxruntime-web.

Key Performance Indicators

KPIBaselineResultImpact
Four decades per site, replayed and measuredSatellite archives as records in portals30 sites, yearly frames 1985 to today (Landsat then Sentinel-2), the dense Sentinel-2 series since 2017 with harmonic breaks, mined-area series with change points, 7,107 validated filesA pit's growth is a curve a reader can scrub, not a folder of downloads
A learned footprint, benchmarked on held-out tilesA mask nobody scoredU-Net test IoU 0.378 and 0.502 on the catalog, random forest beside it, both exported to ONNX and run in the browser; the classical masks (Otsu, k-means, spectral angle) on the same axesThe mask says how sure it is instead of pretending
Nothing leaves the browserA server, an account, an uploadNo backend and no secret at runtime: range reads of the Sentinel-2 COGs, band math in a Web Worker, ONNX inference on WebGPU or WASM, a static release on the VPS with the last three releases keptOpen data stays open on the way to the reader

Architecture

rajo pipeline

rajo pipeline

Technology Stack

Python rasterio scikit-learn PyTorch ONNX ruptures TypeScript React MapLibre GL geotiff.js onnxruntime-web uPlot Vite

Application Screenshots

Rajo, Open Pits Seen from Orbit
Rajo, Open Pits Seen from Orbit