I have a shapefile with building footprint polygons. Many of the polygons have holes/inner rings within them (I'm not sure of the correct term in Grass). These import correctly into Grass GIS. I aim to drape the polygons over a DEM, extrude and export them and the DEM for use in a realtime 3D visualisation.

The following workflow is functional, except where v.extrude messes up the geometry:

  • import vector (allowing cleaning) and raster data
  • set g.region to the polygon layer
  • drape the polygons on the DEM using v.drape
  • extrude them using v.extrude
  • output the layer using v.out.vtk

My problem is that the extrusion process ignores the holes in the polygons and creates geometry for the outer ring only. This happens whether or not v.drape is used beforehand.

I've tried the following (unsuccessful) ideas already:

  • generating centroids for the 'holes' first (this just creates a new polygon 'separate' from the outer ring).
  • using v.clean with the chbridge option, hoping that might add a bridge from outer to inner ring.

Another idea might be to break all the polygons down to triangles first, but I hate to think how complex the 3D geometry would be afterwards! Likewise, manually adding bridging lines to the polygons is not practical given the size of the dataset.

Am I missing something? I'm happy to use Grass and QGIS. Many thanks

  • Can you make a minimalistic dataset available for testing? – markusN May 8 '14 at 6:48
  • Sorry @markusN for the late reply. I can't make the data available. I found that it was a limitation of v.extrude and that my data was sound. A possible alternative is converting GML to the 3D format directly. – Sorbus Aug 2 '14 at 19:33

Your Answer

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

Browse other questions tagged or ask your own question.