Map2STL
David Bourne david@boomer.org
Find my other Apps, eBooks and an AppleTV app at https://www.pharmpk.com/MyeBooks.html
Privacy Policy Link
Map2STL
is a Topographic Data to 3D Printer File Converter. It is a macOS app I wrote, with a little help from Claude, to solve a problem. I had been able to create STL files for 3D printing of small area of the Earth using a free website. It was fun to see these geographic areas reproduced as solid shapes. While writing this application, after downloading latitude/longitude/altitude data for these areas, I have a better appreciation of why the website stopped working. During development I've found that rate limits on downloading data can make producing higher resolution models more challenging.
v1.2.1 Submitted 12 Jul 2026. Approved 13 Jul 2026
- Bug Fix: Too many zero results from USGS server retrieving a 99x99 grid
- Requested latitude and longitude precision reduced to 6 decimal places for both USGS and Open-Meteo requests
- Added a clean-up step after all points retrieved. Revisited points returning 0.0 and repeat requesting for these points
v1.2 Submitted 9 Jul 2026. Approved
- Added the ability to edit elevation data for grid point closest to feature
Data retrieved from data sources is of limited resolution, ~30m to ~90m. Elevation data retrieved maybe an average for a particular grid. In the case of steep changes in elevation this might mean missing a know peak. The ability to edit the elevation of a few important features can result in an improved 3D printed object.
- Added the ability to automatically repeat retrieval of a data point reported as zero.
Occasionally, the data server will return an elevation value of zero. Maybe over water, maybe just because. The app will now try one more time to get a non-zero value. These zero values can be seen on the 3D Elevation View if you look below the image. These data points can be fixed by carefully editing the Standard CSV file in a text editor. The USGS data source can be queried manually by sending a URL request to the data source.
https://epqs.nationalmap.gov/v1/json?x=grid latitude value&y=grid longitude value&units=Meters&includeDate=false
The return value should be the elevation
v1.1 Submitted 7 Jul 2026. Approved 8 Jul 2026
- Added ability to select area by center and width
- Added export in USDZ file format
- Added import standard CSV file data previously saved
v1.0 Submitted 2 July 2026. Approved 7 July 2026
Data Sources
Elevation data by Open-Meteo.com
Global, free, no API Key, Rate limited to 600 requests/minute, 5,000 requests per hour and 10,000 requests per day.
2. United States Geological Survey - Elevation Point Query Service National Maps
U.S. only, recommended for U.S., free, no API Key, high quality
3. Simulated Data Useful for learning the app
Citation & Acknowledgement
Open-Meteo and Copernicus DEM
United States Geological Survey - Elevation Point Query Service National Maps
USGS vs Open-Meteo comparison
| | Open-Meteo | USGS EPQS |
| Coverage | Global | US only |
| Resolution | ~90 m (SRTM3) global ~30 m U.S. | ~10 m (3DEP) |
| Rate limit | 600 requests/min (free tier) 5,000 requests/hr | No documented rate limit Avoid DOS with some delay |
| Best for | Quick global overview | High-detail US terrain |
Rate Limiting Notes
Open-Meteo
25x25 = 625 points so one model at a time should be OK but no more than 8 models per hour.
49x49 = 2,304 points one model at a time and no more than 2 models per hour
69x69 = 4,900 points maximum is 1 per hour, minimum time about 8-10 minutes
USGS
Requesting 25 points per batch with 2 sec per batch to avoid DOS issues. Slow but steady.
Recommended Approach
Start with Simulated Data and then USGS to generate real data unless you want data outside the US, then use Open-Meteo.
For U.S. data use USGS low resolution to explore the area. For final model use higher resolution but it will take time. Maybe limit to one or two per day. The 3D printer isn't going to be much faster.
Sharp Terrain - Pointy Peaks
With limited resolution, i.e. 30 or 90 m, setting a grid to capture a peak can be a challenge. With one main peak in the area of interest it might be best to the use the 'Enter Coordinates' option. Use the lat/lon of the main peak as the center. This should work BUT, the altitude returned is probably an average for the grid square/rectangle around the peak. You might export the standard csv file, search for the peak lat/lon and replace the value with the known elevation for the main peak. You can then import the edited csv file and generate the STL/USDZ file.
With multiple peaks of interest you might try finding the closest lat/lon for each peak and replacing the returned elevation value with the known height.
Basic Process for Converting Topographical Data to a 3D Image
| Opening View
Top-Left: Map2STL App Title
Top-Center: Map Type Selection
Top-Right: Settings and Reset Buttons
Middle-Right" Zoom in/out Buttons
Bottom-Center: Select Area or Enter Coordinates. Load CSV data if available
|
 |
| Settings View
Select Data Source
Open Meteo: Global
USGS EPQS: U.S. Only
Simulated: Not real data
Resolution - Number of Grid Points
Lower Grid Size is Faster
for exploring
|  |
| Select Area Instructions
Drag to draw a Rectangle
Option-Drag to draw a Square
|  |
| Enter Coordinates View
Center Latitude and Longitude
Size in Km. Note min width
Selector for Square (default)
Probably need to adjusts dimensions with
3D Printer software for non-square shapes
|  |
| View Elevation Data
Map Zooms to Square/Rectangle
Red Dot marks the Center
Mount Blue Sky
Press View Elevation Data Button
or Reset or Load CSV data
|  |
| Elevation Data View 1
Description of Data Used
Region Selected Information
Report on suitability of Election Variation
3D Elevation Preview
Check below for spikes
could be bad data
|  |
| Elevation Data View 2
STL and USDZ Settings:
Base Thickness: 2.0 mm good default
Max Height: 50 mm (~2")
Vertical Exaggeration: 1x good default
Maybe better adjusted with
3D printer software
Save CSV
Standard CSV: Useful for saving or editing
Grid CSV: Could be used by
3D display software for visualization
Generate & Save STL file
Generate and Save USDZ File
both to ~/Downloads Folder
|  |
Editing Elevation Data to Better Represent Geographic Features
| After Loading a CSV File
Ask to Edit the Elevation Data
just Loaded
Yes to Edit
|  |
| Edit Peak Elevation 1
Enter the most accurate
latitude and longitude available
Press 'Find the Nearest Grid Point'
Press 'Done'
|  |
| Edit Peak Elevation 2
Nearest Grid Point Displayed
Enter the Best Estimate for the Elevation
Press 'Apply Correction'
|  |
| Edit Another Peak?
Yes, for another feature
No, to continue>
|  |
| Elevation Data with Corrected Value(s)
Review 3D View for errant peaks
|  |
| A 3D Printed Example - Mt Rainier
|  |