SRTM-Viewer is a JavaFX application designed to visualize and analyze topographical data from NASA's Shuttle Radar Topography Mission (SRTM) STS-99. Users can graphically select and evaluate SRTM tiles, save them as PNG files, and analyze elevation data. The application supports both SRTM3 (3 arc-second resolution) and SRTM1 (1 arc-second resolution) files. A high-performance JavaFX and OpenGL desktop application designed to parse, render, and analyze 3D Digital Elevation Models (DEM) from raw NASA SRTM (.hgt) data tiles in real-time.
| Feature | Description |
|---|---|
| SRTM3 & SRTM1 Support | Loads both 3 arc-second (~90m) and 1 arc-second (~30m) .hgt files |
| Real-Time SRTM 3D-Engine | Accelerated terrain generation via OpenGL shaders |
| Worldwide Tile Grid Overlay | Interactive map with full 1°×1° SRTM tile grid clearly displayed and color-coded by availability |
| Heightmap PNG Export | 16-bit grayscale or colored heightmaps (with customizable color ramps) |
| Wavefront OBJ Export | Blender-ready high-quality triangulated mesh |
| POV-Ray Scene Export | Generates ready-to-render .pov + .png files with height_field terrain, camera, lighting, and atmospheric effects |
- A stable internet connection is required to run the application.
- Java Runtime Environment (JRE) or Java Development Kit (JDK) version 24 is required.
- JavaFX SDK is necessary for GUI functionality (JavaFX).
SRTM files (.hgt) contain 16-bit signed integer values representing elevation data, with no header or trailer. File names follow the format N50E010.hgt.
North X=0,Y=1200 ********************* X=1200,Y=1200
*********************
*********************
*********************
South X=0,Y=0 ********************* X=1200,Y=0
West East
North X=0,Y=3600 ********************* X=3600,Y=3600
*********************
*********************
*********************
South X=0,Y=0 ********************* X=3600,Y=0
West East
- Move the mouse over the map to select an SRTM tile (e.g., for a specific city).
- Displays tile boundaries, file name, northern/southern longitude, and elevation.
- Accounts for Earth's curvature in calculations.
- Calculates the tile's area in square kilometers.
- Visualize
.hgtfiles from a local directory as a grid on OpenStreetMap. - File names appear at a certain zoom level.
- Two tables on the right allow showing or hiding individual tiles or entire regions.
- Grid view uses only file names, not file contents.
- Store files in a single folder without subdirectories (e.g.,
Europe,Asia,North America,Japan).
- Import an SRTM3 or SRTM1 tile for color-coded visualization based on a configurable color table.
- Edit the color table to adjust tile coloring; changes are saved to the configuration file.
- At higher zoom levels, hover to display elevation in meters above sea level.
- Enable the alpha channel for semi-transparency to view underlying map features (e.g., cities or highways).
- Right-click to place a marker; copy/paste longitude and latitude from Google Maps using
CTRL+Vto update coordinates. - Save options:
- Export the tile as a black-and-white elevation profile or colored PNG (with or without a marker).
- Preview is provided before saving; markers outside the tile are ignored.
- 3D visualization via POV export:
- Generates a black-and-white elevation profile and a POV file for the POV-Ray ray tracer.
- Set POV-Ray image size to at least Full HD (1920x1080 pixels).
- 3D visualization via Blender export:
- Generates a clean, high-quality Wavefront
.obj(opens perfectly in Blender without any fixes). - Triangulated mesh
- Ready for immediate rendering, texturing (satellite imagery, procedural materials), animation, or 3D printing.
- Recommended import settings in Blender: just drag & drop or File → Import → Wavefront (.obj) — no rotation or scale fixes needed.
- Generates a clean, high-quality Wavefront
Interact with the real-time Live 3D viewport using your mouse and keyboard combinations:
-
Rotate / Orbit View:
Click + Dragwith the Left Mouse Button (LMB) inside the viewport to rotate around the terrain mesh. -
Height Control: Use
Scroll Wheelto dynamically change the height of the camera ($Y$ -axis) on the fly.
Enable the WASD checkbox in the top control panel to unlock free-fly camera movement:
W/S- Move camera forward and backward.A/D- Strafe camera left and right.Reset- Click the top-panel reset button to snap the camera back to its initial position.
- Resolution Dropdown: Choose the structural density of the terrain mesh to balance rendering performance and detail.
- Wireframe Toggle: Switch to a structural wireframe view to analyze vertex displacement, triangle distribution, and geometry.
-
Axis Scaling Sliders (
$X, Y, Z$ ): Fine-tune the horizontal bounds or dramatically accentuate elevation layout profiles.
- Show Toggle: Toggle a dynamic water plane surface over the map bounds.
- Height Control: Input an absolute value in meters or slide the Adjust bar to visualize flood risks, sea-level changes, or catchment baselines.
-
Light Source Coordinates: Reposition the target illumination vector using independent
$X, Y, Z$ sliders. -
Material Properties: * Ambient: Adjust overall baseline environmental lighting.
- Diffuse: Enhance surface depth gradients and slope contours.
- Specular: Define the highlight glare reflection strength off structural surfaces.
- Map specific elevation steps to distinct color values.
- Custom rules allow you to seamlessly add, delete, or update color thresholds (e.g., deep blue for water beds, vibrant greens for valleys, warm browns for cliffs, and stark whites for mountain peaks).
- IDE: Apache NetBeans 27 (NetBeans 27)
- Java SDK: Java 24 (JDK 24)
- GUI Development: Gluon Scene Builder (Scene Builder)
- Framework: JavaFX (JavaFX)
The digital elevation models utilized by this software are provided courtesy of NASA and the National Geospatial-Intelligence Agency (NGA), collected during the Shuttle Radar Topography Mission (STS-99).



