Peak Printer is a Python project for downloading, processing, and converting Copernicus DEM (Digital Elevation Model) data into 3D printable STL files. The project enables users to select a geographic region, retrieve the corresponding elevation data from the Copernicus DEM S3 bucket, and generate a 3D terrain model suitable for visualization or 3D printing. See my Blog post.
The main goal of PeakPrinter is to make it easy for researchers, educators, hobbyists, and makers to create physical models of real-world terrain. By automating the process of downloading DEM data and converting it to STL format, PeakPrinter helps users quickly turn geographic elevation data into tangible 3D objects.
The Copernicus DEM is a global digital elevation model produced by the European Space Agency (ESA) as part of the Copernicus Programme. It provides high-resolution elevation data derived from satellite imagery, supporting applications in earth observation, environmental monitoring, and geospatial analysis.
PeakPrinter uses the Copernicus DEM data hosted on AWS S3, specifically the copernicus-dem-90m and copernicus-dem-30m buckets, which contain elevation tiles in GeoTIFF format. These tiles can be programmatically accessed and processed to extract elevation information for any region of interest.
The elevation data used in this project comes from the Copernicus DEM collection, available at:
Copernicus DEM Data Collection
Please refer to the official website for more details about the data, licensing, and usage restrictions.
The Copernicus DEM files are hosted on AWS S3. You can find a list of the available buckets and further information at:
AWS Open Data Registry: Copernicus DEM
Below is a screenshot of a 3D terrain model generated for the famous village of Hallstadt in the Austrian alps using PeakPrinter and Copernicus DEM data:
Hallstadt, Austria Alps 3D STL model
Hallstadt, Austria Alps 3D printable terrain model sliced file
This example demonstrates how you can use PeakPrinter to visualize and 3D print real-world terrain data for any region.
- Download Copernicus DEM tiles for a given latitude and longitude
- List available files in the DEM S3 bucket
- Convert GeoTIFF elevation data to STL 3D models
- Skip already downloaded or processed files to save time and bandwidth
- Python 3.8+
- boto3
- rasterio
- numpy
- numpy-stl
- Clone the repository.
- Install the required Python packages.
- Run the provided scripts to list, download, and convert DEM data.
You can run PeakPrinter directly in a GitHub Codespace:
-
Open a Codespace
- On GitHub, click the green "Code" button and select "Open with Codespaces" (or create a new Codespace).
-
Install dependencies
In the Codespace terminal, run:pip install boto3 rasterio numpy numpy-stl -
Run the app
In the terminal, execute:python app.pyFollow the prompts for latitude, longitude, and area size.
-
Download the result STL file
Locate the resulting STL file in the Codespaces file explorer on the right side, right click on download to receive the file.
Tip:
You can also use VS Code's integrated terminal and editor features in Codespaces for development and debugging.
This project is provided for educational and research purposes. Please check the Copernicus DEM data license before using the data for commercial applications.
A huge thank you and endless kudos to the European Space Agency (ESA) and the Copernicus mission for their visionary commitment to open data!
The Copernicus Programme's open data policy empowers researchers, educators, makers, and innovators around the world to access high-quality earth observation data for free. This openness fuels countless scientific discoveries, educational initiatives, and creative projects—like PeakPrinter—that would not be possible without such generous access.
Copernicus stands as a shining example of how open data can drive progress, collaboration, and inspiration across borders and disciplines.
Thank you, ESA Copernicus, for making the world a better, smarter, and more connected place through your dedication to open data!

