A web-based service that converts publicly available HGT files to useful STL files.
HTML C++ JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A web-based service that converts publicly available HGT files to useful STL files.

###Try it Out! This project is running on a Google Compute Engine server at jthatch.com. It's updated soon after any commit to this repository.

You can also download everything here and start the server with:

node terrainServer.js

It will run at localhost:8080.

A few .HGT files are included, but not the whole set. You can get the rest from the USGS, or I could send you few.

###To-Do List

  • Add a resolution slider Box size is in multiples of 120, so allowable downscales are 2,3,4,5,6,8,.. Actually DEM resolution is 1/3, allowable downscales are 2,4,5,8 Probably 1/8 resolution is minimum desirable
  • Draw the northern and southern boundaries of the data set
  • Add a negative version for molds
  • Make a manifold surface option (bigger file, but better performance)

###Descriptions of Files

  • /hgt_files

    • This directory contains some sample HGT files for testing. Included are Mt. Everest; Rockport, Maine; and San Franciso Bay.
    • The whole dataset is 40GB, so only a few files are included.
  • /src

    • This is the source code for the part of the program that actually creates the STL files

    • /src/elevstl.cpp - STL-creation program. Accept command line arguments

  • terrain2stl-proto.html

    • The prototype for the HTML source of the website. Must be edited to contain API keys.
  • terrainServer.js

    • Node.js server. Takes parameters from the HTML page and passes them to elevstl to create the STL.
    • Also handles client downloading of pages and files.


(Previously on to-do list)

  • Make dataset voids not just a fixed negative value.
  • Make models watertight.
    • Fix voids in edges of models
  • Increase maximum box size.
  • Fill voids in dataset.
  • Make the 3 arcsecond resolution available in all sizes.
  • Add ability to cross tiles. !!!
  • Make Print and Download buttons disappear or defocus when the selection box is moved
  • Make the selection box reflect changes in the Lat/Long boxes
  • Decide on a maximum file size
  • Add longitude compensation to correct for the distortion caused by the Mercator Projection
  • Normalize model height to remove vertical offset
  • Change view to fit lat/long
  • Vertical scale slider
    • Increase scale range (maybe to 4x)
  • Compress STL files