Skip to main content
Question

Dissolve multiple 3D surfaces to get lowest elevation

  • June 8, 2020
  • 6 replies
  • 90 views

Hi!

I have a task for an aviation project where there are multiple 3D surfaces of runway approaches (from DWG). I need to take the multiple surfaces and create a single composite "blanket" object taking all of the lowest elevation information. This is because the client would like to know how high an obstruction can be before it intersects with any of the approach boundaries.

 

I've seen SurfaceDissolver & SurfaceFootprintReplacer, but I'm not the best at FME so I'm unsure of a good workflow.

Any help would be appreciated! Thank you.

This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

6 replies

jdh
Contributor
Forum|alt.badge.img+40
  • Contributor
  • June 8, 2020

One way would be to rasterize each 3D surface and then use a RasterMosaicker with overlapping values set to Minimum.

 

 

Keeping it in 3d surfaces, I would look at things like the SurfaceOnSurfaceOverlayer, CSGBuilder.

 

 

Unfortunately transformers like the TINGenerator drop duplicate x/y points without allowing you to keep the lowest/highest Z.

  • Author
  • June 12, 2020

Thank you for your response @jdh! I tried both the Rasterizing method and the SurfaceOnSurfaceOverlayer methods. The SurfaceOnSurfaceOverlayer helped brainstorm a few more ideas, which went with using the following workflow. However, I'm having trouble turning the HullAccumulator output inside a solid, and there's a bunch of jagged lines. I'm not sure how to fix that. I also tried SolidBuilder to no avail.


virtualcitymatt
Celebrity
Forum|alt.badge.img+47

I really like the raster approach - If you group by surface this should give you a nice set of rasters which you can combine with the RasterMosaicker with overlapping values set to Minimum, Then you can use the RasterDEMGenerator to create a surface. You may lose some information but a visual comparison should let you know how good the process was.

 

 

 

But if you have a process which already gives you the lowest points you want (looks like maybe you do?) then I would suggest just using the TINGenerator to generate a surface from the points.

  • Author
  • June 12, 2020

I really like the raster approach - If you group by surface this should give you a nice set of rasters which you can combine with the RasterMosaicker with overlapping values set to Minimum, Then you can use the RasterDEMGenerator to create a surface. You may lose some information but a visual comparison should let you know how good the process was.

 

 

 

But if you have a process which already gives you the lowest points you want (looks like maybe you do?) then I would suggest just using the TINGenerator to generate a surface from the points.

Thanks for the input @virtualcitymatt! I think the caution with rasterizing it would be potentially losing some accuracy for the data, but I'm against the ropes right now so let me try that process again and see if it yields better results!


  • Author
  • June 12, 2020

Thanks for the input @virtualcitymatt! I think the caution with rasterizing it would be potentially losing some accuracy for the data, but I'm against the ropes right now so let me try that process again and see if it yields better results!

Question for you and @jdh...If I rasterize the surfaces with ImageRasterizer, doesn't that make the data 2D, which fails in RasterDEMGenerator?


jdh
Contributor
Forum|alt.badge.img+40
  • Contributor
  • June 12, 2020

Question for you and @jdh...If I rasterize the surfaces with ImageRasterizer, doesn't that make the data 2D, which fails in RasterDEMGenerator?

Any of the surface modeller transformers consider rasters as a point dataset where the Z is the pixel value.

 

 

Though I think you want the NumericRasterizer not the ImageRasterizer.