This page looks best with JavaScript enabled

3D Printing a slice of the Copernicus DEM

 ·  ā˜• 3 min read  ·  āœļø Alexandru Munteanu

I noticed that the Copernicus DEM (Digital Elevation Model) for both GLO-30 and GLO-90 is available to download freely at opentopography.org. This peaked my interest to see how Timișoara (altough, having a flat terrain) looks like, and to see if it would be possible to do 3D print of it’s Digital Elevation Model.

Timișoara
Copernicus DEM: Copernicus DEM at different resolutions. Source: spacedata.copernicus.eu

Not only Copernicus DEM is covered on opentopography.org for our AOI:

Timișoara
opentopography.org: Datasets available for the AOI of Timișoara.

I chose to use the GLO-30 DEM for it’s 30 meter resolution. Unfortunately, I did not see the EEA 10m DEM. The GeoTIFF export for our AOI is only 1.8MB once decompressed.

Timișoara
opentopography.org: Copernicus DEM of Timișoara and it's surroundings.

This is the file we end up with, as gdalinfo tells us:

Driver: GTiff/GeoTIFF
Files: output_COP30.tif
       output_COP30.tif.aux.xml
Size is 834, 582
Coordinate System is:
GEOGCRS["WGS 84",
    ENSEMBLE["World Geodetic System 1984 ensemble",
        MEMBER["World Geodetic System 1984 (Transit)"],
        MEMBER["World Geodetic System 1984 (G730)"],
        MEMBER["World Geodetic System 1984 (G873)"],
        MEMBER["World Geodetic System 1984 (G1150)"],
        MEMBER["World Geodetic System 1984 (G1674)"],
        MEMBER["World Geodetic System 1984 (G1762)"],
        MEMBER["World Geodetic System 1984 (G2139)"],
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]],
        ENSEMBLEACCURACY[2.0]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    USAGE[
        SCOPE["Horizontal component of 3D system."],
        AREA["World."],
        BBOX[-90,-180,90,180]],
    ID["EPSG",4326]]
Data axis to CRS axis mapping: 2,1
Origin = (21.127222222222201,45.830138888888882)
Pixel Size = (0.000277777777778,-0.000277777777778)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LZW
  INTERLEAVE=BAND
  LAYOUT=COG
Corner Coordinates:
Upper Left  (  21.1272222,  45.8301389) ( 21d 7'38.00"E, 45d49'48.50"N)
Lower Left  (  21.1272222,  45.6684722) ( 21d 7'38.00"E, 45d40' 6.50"N)
Upper Right (  21.3588889,  45.8301389) ( 21d21'32.00"E, 45d49'48.50"N)
Lower Right (  21.3588889,  45.6684722) ( 21d21'32.00"E, 45d40' 6.50"N)
Center      (  21.2430556,  45.7493056) ( 21d14'35.00"E, 45d44'57.50"N)
Band 1 Block=256x256 Type=Float32, ColorInterp=Gray
  Min=78.133 Max=124.985
  Minimum=78.133, Maximum=124.985, Mean=91.673, StdDev=5.887
  Metadata:
    STATISTICS_MAXIMUM=124.98538970947
    STATISTICS_MEAN=91.672999431603
    STATISTICS_MINIMUM=78.132995605469
    STATISTICS_STDDEV=5.8870346058939
    STATISTICS_VALID_PERCENT=100
Timișoara
QGIS: Copernicus DEM export from OpenTopography.org.

Importing into QGIS, and changing the symbology render type to hillshade:

Timișoara
QGIS: Copernicus DEM export from OpenTopography.org with hillshade.
Timișoara
GRASS GIS: Heatmap of our DEM when loaded in GRASS.

Using the r.report module from GRASS to interrogate the raster:

r.report map=output_COP30 units=k

The output indicates us that the raster covers $510km^2$

+-----------------------------------------------------------------------------+
|                         RASTER MAP CATEGORY REPORT                          |
|LOCATION: world_latlong_wgs84                        Thu Sep 29 18:41:59 2022|
|-----------------------------------------------------------------------------|
|          north: 90N    east: 180E                                           |
|REGION    south: 90S    west: 180W                                           |
|          res:     1    res:     1                                           |
|-----------------------------------------------------------------------------|
|MASK: none                                                                   |
|-----------------------------------------------------------------------------|
|MAP: (untitled) (output_COP30 in timisoaradem)                               |
|-----------------------------------------------------------------------------|
|                      Category Information                       |   square  |
|#|description                                                    | kilometers|
|-----------------------------------------------------------------------------|
|*|no data. . . . . . . . . . . . . . . . . . . . . . . . . . . . |510,065,622|
|-----------------------------------------------------------------------------|
|TOTAL                                                            |510,065,622|
+-----------------------------------------------------------------------------+

In order to produce an 3D STL file, I have used a plugin for QGIS called DEMto3D.

Timișoara
PrusaSlicer: Sliced Copernicus DEM of Timișoara and it's surroundings.
Timișoara
PrusaSlicer: Sliced Copernicus DEM of Timișoara and it's surroundings.

After using a Prusa i3 MK3 3D printer and some 10 hours of patience, the final result is:

Timișoara
Result: 3D Print of GLO-30 DEM for Timișoara.
Timișoara
Result: 3D Print of GLO-30 DEM for Timișoara and it's surroundings.

It is something I would consider a failure. Even with settings as 5x vertical exaggeration, and detail print for PrusaSlicer, the details in the print are pretty much indistinguishable. It would probably be better to span this over multiple physical prints so that details would be more evident. One other interesting thing in the future would be to see if we can print 3D OpenStreetMap features.


Alexandru Munteanu
WRITTEN BY
Alexandru Munteanu
Research Assistant, PhD Student