There is some really good open-source software available to work with 2D vectors. For example QGIS has operations like buffer / clip / dissolve / select by location / join attributes by location... But is there something allowing these operations in 3D?

The closest from what I have tried so far seems to be GRASS. It handles 3D points, 3D lines and... Possibly 3D areas as boundaries? There are 3D faces but from GRASS manual it doesn't seem to be supported by v.select etc. And according to http://grasswiki.osgeo.org/wiki/Help_with_3D the volumes doesn't seem to be supported at all at this moment.

For operations with surfaces (3d areas) raster is proven to be reasonably good alternative and are well supported. But for volumes I even can't find a way how to convert closed face mesh / volume to 3D raster + the processing time and data amount.

Specifically is there any open source tool able to do operation "3d points within volume"? (volume defined by faces in DXF format)

Maybe PostGis or some Python libraries able to load volumes?

But furthermore tool able to do volume overlays, buffers, join attributes by location, clip by plane, clip lines / points / areas by volume etc.?

  • Last I heard 3d in QGIS was still under development. It would be nice to have good 3d GIS tools (open source would be nice) as of late I'm seeing more requests for 3d data and the tools (including Esri) are a little clunky for editing 3d.. Commented Jun 3, 2015 at 5:00

3 Answers 3


You should check out SFCGAL, which is a C++ wrapper library around CGAL with the aim of supporting ISO 19107:2013 and OGC Simple Features Access 1.2 for 3D operations.

You can use it from a specialised version of PostGIS, here are the functions for PostGIS 2.1. Also, check out the existing functions that matches \df ST_3D*, which doesn't require SFCGAL.

However, it's all pretty cutting edge and not 100% complete (yet). For instance, I see SFCGAL::algorithm::volume to compute the volume of a geometry in the Public C++ API, but I don't see it in the Public C API or as a PostGIS function (which uses the C API). I'm sure it will get there eventually.

Also, see the PostGIS 3D video and workshop from FOSS4G.


I started to dive into VTK - The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics. It is pretty powerful and robust tool, seems to be able to do all the operations I asked for though I can't confirm it all yet. On the other hand it doesn't support datum and projection as is expected from GIS software.


Because of my convenience I am using it as Python installation of Anaconda - http://continuum.io/downloads - portable, extendable easily with VTK package and many other handy packages like shapely, fiona, gdal...

Lots of examples can be found here:

http://www.vtk.org/Wiki/VTK/Examples/Python - one of them: Computes the intersection of two spheres - http://www.vtk.org/Wiki/VTK/Examples/Python/PolyData/BooleanOperationPolyDataFilter

There is also very nice open-source GUI build around it for visualization called Paraview:

http://www.vtk.org/Wiki/ParaView - it can also help with writing python scripts because the scene states can be saved as python file


take a look at shapely and Pyshp

These a two python libraries that can deal with 3d data.

Also you should use matplotlib for display

  • I have tried shapely and it is nowhere close to 3D. It can barely define 3D points, lines and polygons by 3D vertices and that is it. Operations like point_a.intersect(line_a) run only in 2D and gives True even when testing point (1,1,0) to line [(0,0,0),(2,2,2)]. Pyshp is just library for read/write shapefiles. Nothing about 3D.
    – Miro
    Commented Jun 4, 2015 at 14:18
  • Shapely and GEOS are sometimes termed "2.5D", since there are very few operations that use the Z dimension. Most operations are 2D, with simple storage of the third. Only "interpolate" and a few others properly deal with true 3D data.
    – Mike T
    Commented Jun 4, 2015 at 23:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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