pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
Translation pending
Explore 3D lunar terrain and plan rover routes
Translation pending
AI summary · README
DataJavaScript · PythonGitHub @jerrywu0507OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A web-based 3D lunar terrain visualization and rover mission route-planning
tool built with Three.js, using a high-resolution
Digital Elevation Model (DEM) of Nobile Rim 2, one of NASA's Artemis III
candidate landing regions. Browse the terrain in real time, query the
elevation at any coordinate, plan a rover route, and analyze slope and
hazardous sections along the way.Read the full README ↗A web-based 3D lunar terrain visualization and rover mission route-planning tool built with Three.js, using a high-resolution Digital Elevation Model (DEM) of Nobile Rim 2, one of NASA's Artemis III candidate landing regions. Browse the terrain in real time, query the elevation at any coordinate, plan a rover route, and analyze slope and hazardous sections along the way.
A key), both labeled X/Y/Z and rotated to
show the Moon's global body-fixed reference frame (MOON_ME: Z = mean
rotational pole, X = toward the prime meridian, Y completes a right-handed
system) rather than the scene's local grid axes or a local compassDelete to remove it; you can also drag directly on the route's white
line to insert a new point exactly where you drop it, without selecting
anything firstCtrl+Z, up to 50 steps back| Item | Description |
|---|---|
| Terrain DEM | Nobile Rim 2 (Artemis III candidate landing region, site code DM2), a ~10 km × 10 km mission-area subset, 5 m/pixel, 2000×2000 grid, South Polar Stereographic projection (MOON_ME/DE421 reference frame) |
| Elevation range | approx. 303 m – 1647 m |
| DEM origin | NASA GSFC PGDA — Barker, M. K., et al., 2021, Planetary and Space Science, Vol. 203, 105119 (DOI: 10.1016/j.pss.2020.105119), pure LOLA laser-altimetry data |
| Moon overview texture | NASA CGI Moon Kit (December 2025 color + elevation maps), credit: NASA's Scientific Visualization Studio |
The source GeoTIFF DEM is converted by QGISDEM.py into the files this
project actually loads: public/heightmap_float32.bin (float32 elevation
grid) and public/heightmap_metadata.json (coordinate transform, extent,
and other metadata).
For the full data-source explanation, how to obtain other candidate
landing regions, data-quality/limitations notes, and licensing, see
DATA_SOURCES.md.
| Document | Contents |
|---|---|
DATA_SOURCES.md | The verified source and citation for the terrain data, how to obtain other candidate landing regions, data-quality/limitations notes, licensing |
TECHNICAL_OVERVIEW.md | Code and logic overview: project architecture, data pipeline, DEM cleaning algorithm, coordinate-transform formulas, route-safety-analysis logic, validation methodology |
QGISDEM.py, offline DEM pre-processing; requires rasterio,
numpy, scipy)npm install
npm run dev
Once started, the terminal prints a local URL (default
http://localhost:5173) — open it in a browser.
Other commands:
npm run build # Build for production (output to dist/)
npm run preview # Preview the production build
The build uses relative asset paths (base: "./" in vite.config.js), so
one build works at a site root or under any subpath (e.g. /terrain/).
Copy the entire contents of dist/ — index.html, assets/,
heightmap_float32.bin, heightmap_metadata.json and moon/ — into the
directory the site is served from. The DEM and texture files are resolved
relative to the page, so they cannot be left at the server root while the
app itself is served from a subpath.
DATA_SOURCES.md has the
full list of available sites and download steps)INPUT_DEM path in QGISDEM.pypython QGISDEM.py — it writes heightmap_float32.bin and
heightmap_metadata.json into public/| Action | Description |
|---|---|
| Left-click drag | Rotate the view (full 360°, including underneath the terrain) |
| Mouse wheel | Zoom |
| Right-click drag | Pan |
| Click the terrain | First click sets the start point; each click after that adds a waypoint in sequence; press R to clear the route and start over |
| Click a waypoint flag | Select/deselect that waypoint |
| Drag a waypoint flag | Move that waypoint's position |
| Click the terrain after selecting a waypoint | Insert a new waypoint after it |
| Drag the route's white line | Insert a new waypoint where you drop it |
Press Delete after selecting a waypoint | Remove that waypoint |
| Key | Function |
|---|---|
G | Show/hide the grid |
A | Show/hide the coordinate axes |
S | Show/hide the slope layer |
E | Show/hide the elevation-band layer |
R | Clear the current route |
Ctrl+Z | Undo the last waypoint change |
Delete / Backspace | Remove the selected waypoint |
Esc | Deselect the selected waypoint |
U | Show/hide the whole interface |
[ / ] | Shrink/enlarge the interface |
├── index.html # Entry point
├── src/
│ ├── main.js # Main program: scene setup, DEM loading,
│ │ # terrain picking, route planning/analysis
│ │ # (incl. undo, drag-to-insert), animation loop
│ ├── dem-cleaning.js # DEM elevation cleaning (pure functions)
│ ├── coordinate-transforms.js # Projected/local/geographic coordinate math
│ ├── loading-overlay.js # Full-screen loading overlay (with download %)
│ ├── view-gizmo.js # 3D direction gizmo, global MOON_ME frame
│ ├── ui-core.js # Shared panel UI (drag/resize, bilingual text, interface scaling)
│ ├── moon-overview.js # Moon overview inset
│ ├── markers.js # Marker (flag/dot) geometry construction utilities
│ └── utils.js # Shared formatting/validation helper functions
├── public/
│ ├── heightmap_float32.bin # Terrain elevation data
│ ├── heightmap_metadata.json # Terrain metadata
│ └── moon/ # Moon overview textures
├── QGISDEM.py # GeoTIFF DEM -> project binary format conversion script
├── DATA_SOURCES.md # Data source and acquisition guide
├── TECHNICAL_OVERVIEW.md # Code and logic technical overview
└── package.json