Question

How to edit Roof Surface based on a new Ground surface

  • 29 April 2021
  • 1 reply
  • 0 views

Hi. I have a cityGML file containing Roof, Ground and wall surfaces.

The Ground Surface has been changed, so I should Change the Roof Surface now. But I cant find a way to do it. Can someone help me?


1 reply

Userlevel 4
Badge +26

This is pretty tricky - one possible approach could be to use an AffineWarper (or RubberSheeter). For each ground surface you will need to calculate the vertex movement from the original ground surface to the new ground surface - these will be the control vectors (you can try and use a NeigborFinder for this on the vertices where the base it the original and the candidate is the new). The control vectors will be used to calculate an Affine/Transformation Matrix. This matrix will then be applied to the roof surface. The affined surfaces will not aligned perfectly so you might need to use a CoordianteRounder to 3 decimal places.

If the new ground surfaces have more vertices than the original then this wont work

Reply