Skip to main content
Question

How to extract triangles from CityGML MultiSurfaces


Hello!

 

I have a CityGML dataset consisting of MultiSurfaces - atleast that is what FME tells me:

geometrytypes 

an example of a surface:

 

billedeI would like to extract the surfaces' triangles, so each triangle has its own feature/record in the output.

 

So far i have tried 3 methods:

  1. using the deaggregator. Looks like it didnt do anything.
  2. using the geometryPartExtractor. I have extracted the "IFMEface" geometry-type from the surface, but this just looks like original geometry, where all triangles are one geometry. Afterwards i added another geometryPartextractor and tried to extract the IFMEPolygon - but this seemed to just remove the triangles from the geometry.
  3. using the Triangulator. Using the triangles output, input these into a geometryPartExtractor where you extract the newly created faces. This worked somewhat, however the triangles it made do not always correspond with the original triangles. the example from above gets a new triangle:

billedeIf possible i would like the original triangles, or atleast be sure the new triangles if combined, match the original geometry.

3 replies

daveatsafe
Safer
Forum|alt.badge.img+19
  • Safer
  • May 17, 2022

Hi @jonasenok​,

Deaggregating a MultiSurface or extracting the Faces from it will give you the base surface geometry. The triangles edges displayed within a Face in the Data Inspector are an artifact created by the rendering process. If you want to use the Triangulator to create triangular Faces instead, please try the following process:

  • Send surfaces to Triangulator to replace surfaces with triangulated mesh
  • Send TINSurface to Deaggregator set to Flatten All Levels
  • Send Deaggregated to GeometryCoercer to coerce to fme_composite_surface
  • Send Coerced to Deaggregator set to Flatten All Levels and Split Composites

The output faces from this process should match the Data Inspector display


  • Author
  • May 19, 2022

Hi @daveatsafe​,

 

thanks for the suggestion!

I tried it, but it doesnt behave as i expected; I expected it would create an object/feature/row for each triangle. However it still retrieves the "entire" face:

billede(notice the number of features does not change throughout the process)

 

billede(1 feature from deaggregator_2)

 

So far my original method 3 seems to be the best option. And if you say the triangles in data inspector are simply "rendering" artifacts, maybe i shouldnt be so worried.

 

 


daveatsafe
Safer
Forum|alt.badge.img+19
  • Safer
  • May 19, 2022
jonasenok wrote:

Hi @daveatsafe​,

 

thanks for the suggestion!

I tried it, but it doesnt behave as i expected; I expected it would create an object/feature/row for each triangle. However it still retrieves the "entire" face:

billede(notice the number of features does not change throughout the process)

 

billede(1 feature from deaggregator_2)

 

So far my original method 3 seems to be the best option. And if you say the triangles in data inspector are simply "rendering" artifacts, maybe i shouldnt be so worried.

 

 

Hi @jonasenok​,

Would you mind posting your workspace?


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings