Terrain STL generator: 3D print real-world terrain from coordinates

2026-09-245 min read
STLterrain3D printingDEMCuraPrusaSlicer

To 3D-print real-world terrain you export the terrain mesh for your coordinates as STL, set a vertical exaggeration so the landform actually reads, and add a base so the surface becomes a printable solid. That is the whole recipe; the rest of this article is the detail — the valley you hiked, an island, a volcano, the slope behind your house.

Terrain and buildings are two different exports

3D terrain is the ground surface built from the global Copernicus GLO-30 elevation model (30 m): hills, gorges, slopes, not a single house. 3D buildings are OpenStreetMap footprints extruded by floor count, standing on a flat plane with no relief. This article is about the ground: printing the built environment is covered in 3D printing city maps, and city relief together with the CNC and laser-engraving routes in STL relief of a city.

Step 1. Pick the area and the exaggeration

Select the patch and order the 3D terrain with the STL subformat. The parameter that decides everything is vertical exaggeration (0.1-10):

  • mountains, volcanoes, fjords — 1, the real proportions are dramatic enough;
  • hilly country — 2-3;
  • plains, river valleys, coastline — 3-5, otherwise the model reads as a flat slab.

The arithmetic shows why. A patch 10 km wide printed 150 mm long is roughly 1:67,000. A 120 m elevation span becomes 1.8 mm: you can feel it, but barely see it. With a factor of 4 the same 120 m becomes 7 mm and the landform reads. More on the parameter is in the 3D terrain model guide.

Keep the detail ceiling in mind: one DEM cell is 30 m, which on that model is 0.45 mm — about a nozzle width. A footpath or a 10 m gully will not show up; it is not in the data.

Step 2. Scale in the slicer

STL stores no units — it is just numbers. Our mesh is computed in metres from the centre of the area, and the slicer reads those numbers as millimetres, so a 10 km patch arrives in Cura as an object 10,000 mm wide. That is expected, not a bug: scale it.

The formula: scale percentage = target size in mm ÷ area width in metres × 100. For 150 mm and 10 km that is 1.5 %. Scale uniformly on all axes, otherwise the exaggeration you chose at export drifts.

Step 3. Make the model printable

The export gives the terrain surface — a thin skin with no floor or side walls. A slicer wants a closed volume, so load the STL and see what it says: Cura flags problematic models, PrusaSlicer reports open geometry and offers to repair it.

If the model comes in open, give the body thickness:

  1. In Blender: File → Import → STL, then a Solidify modifier with 3-5 mm of thickness (in model units, i.e. metres) and Apply. You get a slab with relief on top.
  2. Or select the boundary edges, extrude them downwards (E, Z axis) and cap the bottom with a face (F).
  3. Without Blender: Microsoft 3D Builder or Meshmixer turn a surface into a solid automatically.

A base also gives a flat seat on the bed and room for an engraved caption with the place name and coordinates.

Step 4. Printing

  • 150-200 mm on the long side is the sweet spot between detail and print time.
  • Layer height 0.15-0.2 mm for PLA; finer only pays off on rocky terrain.
  • Supports are usually unnecessary: with a base the model sits flat, and natural slopes are rarely overhangs.
  • Infill of 10-15 % is plenty — the model carries no load.

Large areas go in tiles

A whole mountain range will not fit on one bed. Split it into tiles: select adjacent rectangles on a shared grid so the edges line up. The non-negotiable conditions are the same vertical exaggeration and the same scale percentage for every tile, otherwise you get a step at the seam. Print them one by one, join with magnets or dowels, sand the seam if you care.

That is how wall-sized 3×3 panels are made: each tile prints overnight, together a metre of landscape.

Other formats of the same mesh

If printing is not the only goal: the same mesh ships as other subformats of the same 3D terrain export — OBJ for Blender and 3ds Max, GLB for the web. Take the terrain subformat specifically: the standalone STL and OBJ exports build the volume of the buildings, not the ground surface. A breakdown of the STL container itself is in the STL deep dive.

Easier — get a ready file straight away

Select an area on osm2cdr.ru, choose 3D terrain with the STL subformat (or OBJ if the model is heading into Blender), set the exaggeration and download the file. Free, worldwide, the high Arctic included. When you publish, credit the elevation source with the exact line produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved.

In short

  • Terrain and buildings are separate exports; this one is the ground.
  • Exaggeration: 1 for mountains, 3-5 for plains; the detail ceiling is the 30 m DEM cell.
  • STL carries no units: scale percentage = mm ÷ area width in metres × 100.
  • A surface needs a base: Solidify in Blender, or "make solid" in 3D Builder.
  • Print large areas as tiles with identical exaggeration and identical scale.
  • Elevation credit when publishing: produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved.
← All articles