Skip to main content

I have a series of 2D polygons with attributes for slope and aspect. I want to rotate them about a horizontal plane (using a 3DRotator) so that they become 3D shapes with these properties of slope and aspect. However, I want the spatial extent of the shape to stay the same, i.e. if I were to force it to 2D them again, they would look identical to how they did before. Effectively, this means that all of the vertices need to be elevated/dropped in the vertical plane. This is not so much a rotation as a stretch.

 

As an example, if the polygon has a slope attribute of 80 degrees, by the time the shape has been made into a 3D sloping polygon, the planar extent of the shape would be much smaller and, if it were forced to 2D again, it would be also much smaller. The higher the "slope" value, the more the shape would shrink in its planar extent.

 

Does anyone have any suggestions for how to achieve this? I effectively want the reverse of a 2D forcer.

Create a surface that matches your desired "model" and drape the 2D polygons on the surface: SurfaceModeler, SurfaceDraper.


Another option could be to first buffer the areas, perform your rotation and the clip the result with the original 2D polygon.​


Create a surface that matches your desired "model" and drape the 2D polygons on the surface: SurfaceModeler, SurfaceDraper.

Great idea! I'll implement this now


Another option could be to first buffer the areas, perform your rotation and the clip the result with the original 2D polygon.​

Yes, this is a good idea. I think draping on the surface (as suggested by cacadrian) may be quicker but I will try both.


Reply