LANTAW: rendering Philippine terrain in 3D from NASA data, and why the data labels matter more than the render
How LANTAW turns NASA SRTM elevation and satellite imagery into browser-native 3D landscapes of the Philippines, how one Taal prototype became a 28-scene atlas, and why every layer is labelled measured, derived, modeled or authored.
- By
- Viron Gil Estrada
- Published
- Updated
- Read
- 6 min
LANTAW is a browser-native atlas of Philippine terrain. Open a scene and you are flying over Taal, Mayon, Banaue or El Nido in 3D, with real elevation under the imagery and no plugin, app or account. This is the build log: where the data comes from, how one weekend prototype turned into a 28-scene system, and why I now think the data labels are the most important part of the project.
Where the terrain comes from
LANTAW is built on public data.
- Elevation comes from NASA's Shuttle Radar Topography Mission (SRTM), served as terrain tiles from the AWS Terrain Tiles open dataset. Each tile encodes height per pixel, and the renderer turns that height field into a mesh.
- Imagery is cited satellite imagery draped over the mesh, initially Esri World Imagery.
- Rendering is Three.js on WebGL, in the browser, with hill shading, water, a camera system and a cinematic tour per scene.
The first version had no backend, no API keys and no build step. It was one HTML file that fetched tiles and drew a volcano.
The weekend prototype
Taal was the first scene because its geography is absurd: an island in a lake, on an island in a lake, inside a caldera, and it had a major eruption in 2020. I prompted Claude Code to render Taal from real SRTM data, and the first working scene came out of that one session. Manila Bay followed the same way.
The hardest part was under the water. There was no free bathymetry for Manila Bay, so the first seabed was distance-to-shore math: a disclosed approximation, not a measurement. That gap is what pushed the project toward its data vocabulary.
Measured, derived, modeled, authored
A smooth 3D surface can look more precise than the numbers behind it. Once the render is convincing, every layer looks equally certain, and they are not. So LANTAW labels every element by where it came from:
| Label | Meaning | Example |
|---|---|---|
| Measured | Values taken directly from a source dataset | SRTM elevation samples |
| Derived | Calculated from measured data | The 3D mesh, hill shading, slope |
| Modeled | Disclosed approximations where no source exists | The early Manila Bay seabed |
| Authored | Human labels, story routes and context | Place names, tour narration |
The public site says this plainly and directs anyone making safety, engineering, navigation or land decisions to the responsible agencies and current local data. LANTAW is not survey-grade, not a hazard product and not a digital twin. It is a way to feel the shape of a place without pretending the reconstruction is the source.
From one scene to a system
One working scene is a prototype. Copying that page for every new landscape would have multiplied the maintenance, so the second phase was architecture rather than more scenes.
- A shared terrain core holds the renderer, tile loading, terrain and water, camera, tour and UI fragments.
- A scene template is the shell every landscape uses.
- Scene configuration per place carries its own camera, labels, interactions, datasets and stated limitations, plus bespoke hooks where a scene needs them.
- A validation script gates every release on metadata, source disclosures, integrity and the sitemap, so a scene cannot ship without saying where its data came from.
That is how the atlas reached 28 live places, from Taal and Mayon to Banaue, Agusan Marsh and El Nido, without becoming 28 copies of the same file.
What I would tell an engineer building a data product
- Ship the ugly first scene. The prototype proved the idea in a weekend and told me what the real problem was.
- Put the uncertainty on the screen. Labels cost nothing and stop a good render from becoming a false claim.
- Extract the shared core only after the second scene. Before that you are guessing which parts repeat.
- Automate the checks that protect trust, not just the checks that protect the build.