I'd like to generate a 3d terrain model moving from a DEM dataset (currently in shp and GeoTIFF format).

As far as I understand it, the first step of the better path would be generating a TIN, but I can't find the way to do.

I found a lot of references to ArcGIS 3D Analyst, but no tools in MacOSX/Unix world.

Are there any?


You have a few options:

  1. PostGIS 2 has support for TIN and some other 3D objects.
  2. GRASS has support via an add-on. See this how-to document.
  3. QGIS has an Interpolation plugin (see here)
  4. Roll-your-own by importing the GDAL libraries into a 3D modelling package such as Blender (I do it this way a lot because I want interactive 3D model rather than for analysis - but you can always export the result to DXF or Collada).

All these approaches should be possible on Linux and I think on Mac too.

EDIT: I've just remembered another two for you: Terragen (commercial and free versions) and LD3T. LD3T theoretically works on Linux but they recognize that there are issues. I've only ever run it under Windows. It's worth noting that the Terragen format is readable/writeable by Blender, Landserf (see SS_Rebelious' post) and LD3T.

  • Unfortunately, QGIS needs a vector layer as in input for the "TIN interpolation" to work. Do you know any plugin that can take a raster as the input of a TIN computation and that will output a mesh? – swiss_knight Jan 16 '20 at 11:55

Also for this purpose at your service:

  1. SAGA GIS (has TIN module and a lot of tools for DEM analysis and manipulation)
  2. LandSerf (java-based, concentrated on DEM and TIN manipulation)
  • Good point - I always forget SAGA GIS! Landserf was great but is it still being maintained? The last update is from a couple of years ago I think. – MappaGnosis Sep 15 '12 at 7:49
  • I don't know, but it still works ;-) – SS_Rebelious Sep 15 '12 at 8:19

Also: FME (commercial) QGIS 1.8 + GRASS plugin

and for bonus: lastool has very fast tool for DEM and TIN from pointclouds


There are now more open source, lightweight tools to achieve the DEM-to-TIN process. hmm is a fast C++ implementation of TIN generation using Delaunay triangulation, and it has a CLI. I've made Python bindings to it, and a separate JavaScript implementation exists.

Another algorithm that's faster but produces a less efficient mesh (more triangles) is Martini (JavaScript). I've also implemented a Python port of that.

Any of these libraries will convert a raster array to a TIN.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.