Find Earth’s next training ground.
TerraMatch is a NASA Space Apps Challenge 2026 project for exploring planetary terrain and comparing Earth analog candidates. The application contains an interactive Earth/Mars/Moon globe, an animated cargo-lander deployment, an actual controllable six-legged 3D explorer, and evidence-backed terrain comparisons. The application UI is implemented in HTML/CSS/ES modules, with Three.js vendored locally. Generated design images are not used as functioning UI.
Requires Node.js 22 or later. No production dependency installation is needed.
npm start
Open http://127.0.0.1:4173 in a browser with WebGL 2 and hardware acceleration.
The static application is in dist/. It can be served from any ordinary static
web host. Planet textures, the 3D runtime, photographs, ten reference DEM subsets
and the global land mask are served locally. There is no API key requirement.
New manual/automatic searches require internet access to public terrain tiles;
place-name searches additionally use Open-Meteo / GeoNames. Bundled reference
comparisons work without those services. Use HTTPS or localhost for source hashes.
The active imagery comes unchanged from NASA Blue Marble Next Generation (November 2004), NASA/JPL Viking Mars imagery, and the USGS/NASA LROC lunar mosaic. The published delivery resolutions are 5400×2700, 1440×720 and 1024×512. The Mars texture’s exact MDIM revision/control accuracy is not stated by NASA; we verify global layout without claiming survey-grade texture registration.
Numerical geometry uses WGS84 plus NOAA ETOPO1 topography/bathymetry, NASA MOLA absolute radius, and NASA LOLA radial height. The global mesh is a 1° sample, not the full-resolution source. Earth MSL heights are applied to WGS84 without a geoid correction: a disclosed approximation. Ocean terrain is bathymetry, not a moving water surface. Existing finer study-window analysis remains separate. The renderer does not claim a current inertial orientation or sunlight model.
Earth environmental records are historical model/reanalysis, not live weather. Mars pressure comes from actual MEDA sol 29 PDS data with original CSV/XML and hashes retained; the three channels are separate and numerical uncertainties are unavailable. Current global Mars storms, local lunar ice detection and local water classification are not invented. Missing data remain missing.
Reproduction and source detail: imagery,
global geometry, environment.
Re-fetch GIBS references with node scripts/fetch-earth-layer-reference.mjs.
The Exploration task selector changes the comparison, not just the wording:
| Task | Slope weight | Relief weight | Measures shown in Compare |
|---|---|---|---|
| Terrain exploration (default) | 0.65 | 0.35 | Relative relief, mean slope, 90th percentile slope |
| Navigation training | 0.85 | 0.15 | Ground under 10°, ground at 20° or steeper, 90th percentile slope |
| Field operations | 0.50 | 0.50 | Ground under 5°, relative relief, mean slope |
| Thermal environment study | 0.65 | 0.35 | Relative relief, mean slope; temperature stays separate evidence |
Selecting a task re-ranks the loaded candidates, shows the reason for the preset under the selector, and adds a task panel to Compare with task-relevant measures, how the analog can help and what it cannot tell you. An unchecked characteristic stays off. Exports record the task and its preset. The presets are disclosed, project-defined weights for the same terrain-only index; they are not calibrated against field or mission results.
See DATA.md for exact products, projections, byte ranges, source hashes, reproduction commands and formulas. See ASSETS.md for visual credits, licenses and the original procedural hardware model APIs.
See SEARCH-DATA.md for runtime terrain retrieval, PNG decoding, manual/automatic search contracts, real network checks and coverage limits. LANDMASK.md records both coastline assets and their hashes.
On-demand windows use RGB-encoded Mapzen / Tilezen Terrarium mixed-source DEM tiles. Direct PNG decoding avoids color conversion, retains negative land elevations, and samples pixel centers across tile seams. Search supports centers between 84° S and 84° N. A 5 × 5 Natural Earth land-mask screen excludes windows containing mapped non-land samples from scores and inland ranking, while retaining access to Compare, provenance, exports and 3D inspection. It is a coarse screen, not proof that every point is dry land, and it does not reliably classify inland lakes.
The resemblance index compares coarse slope distributions and relative relief. It is a transparent terrain heuristic, not a probability of mission suitability. It does not establish mineral, thermal, ice, biological or engineering equivalence. Material descriptions are qualitative context with linked sources.
Terrain elevation geometry comes from the sourced DEM. Fine ground textures, decorative rocks, sky colors and lighting are visual treatments. The explorer avatar is enlarged for navigation; its speed, gait and the lander arrival sequence are not validated robotics or flight simulations. Decorative rocks do not identify actual planetary hazards. Lunar lighting does not reconstruct permanent shadow. Coarse terrain resemblance supports a shortlist for further investigation; it is not a landing-site, permanent-base or field-safety certification.
npm ci
npm run check
npm test
Tests cover analytical slope calculations, cross-datum relief comparison, interpolation, polar geolocation, data eligibility, model geometry, full expedition state/movement logic, DOM workflows and scientific exports. DOM and expedition logic tests use a DOM environment and a renderer test double; they are not visual or GPU-rendering tests. A desktop-browser visual review is still needed when browser automation is available.
dist/index.html, dist/styles.css: responsive application shell and design.dist/js/app.js: mission workflow, comparisons, notebook, dialogs and exports.dist/js/globe.js: interactive planet globe and hardware preview.dist/js/expedition.js: real-time scene, deployment, controls, minimap and layers.dist/js/models.js: original six-legged robot, cargo rocket and rock meshes.dist/js/science.js: source catalogue, sampling, geolocation and comparison.dist/js/terrain-search.js: on-demand terrain, PNG decoding, place lookup and
bounded grid surveys with cancellation and source hashes.dist/js/search-ui.js, dist/search.css: manual and automatic discovery workflow.dist/js/search-cache.js: validation and local caching of recent search windows.dist/data/: ten sourced terrain subsets and source summary.scripts/fetch-terrain.mjs: reproducible data retrieval and subset pipeline..openai/hosting.json: private Sites project and static hosting configuration.Use of public space-agency data does not imply agency endorsement.
Choose Thermal environment study, then open Compare for source-derived Earth, Moon and Mars temperature records. The 3D Temperature layer distinguishes spatial lunar data from coarse Earth daily-mean context. Rover point observations are not extended over an entire crater. Thermal evidence retains its own statistic and time coverage and does not change the terrain-only ranking. See THERMAL.md, THERMAL-EARTH.md and THERMAL-PLANETARY.md for definitions and limits.