Question

How to convert a fme_collection(solid) to polygon?

  • 16 September 2021
  • 3 replies
  • 96 views

Hi.

I have some aggregated solids. In 2D view, they are like the attached image. I want to exactly convert them to polygon, keeping the inner lines (not a footprint). Do you know how can I do that?


3 replies

Userlevel 4
Badge +26

Hmm, Have you tried deaggregating, using a surfacefootprintreplacer and the Re Aggregating? Would this give you the result you want?

Another option is to use a 2DForcer, but the result would probably need a bit of cleaning up to remove possible duplicate segments

Hi @virtualcitymatt​  and thank you for your suggestions, but in both I will get a surface at the end. How can I convert a surface to polygon? I tried by many transformers but it was unsuccessful. Actually, I want to differentiate between polygons(roofs) that are constructed from some parts and those which are just one simple polygon. If you have any idea .

Userlevel 4
Badge +26

Hi @virtualcitymatt​  and thank you for your suggestions, but in both I will get a surface at the end. How can I convert a surface to polygon? I tried by many transformers but it was unsuccessful. Actually, I want to differentiate between polygons(roofs) that are constructed from some parts and those which are just one simple polygon. If you have any idea .

To get the roof surfaces out of a solid this is one approach:

First use a GeomeryPartExtractor to extract the faces (this part, geometry type = IFMEFace). This should give you individual faces. You can then feed the faces through a PlanarityFilter which can extract the surface normals. Use a test filter to test for postive z (roof) negative z (ground) z = 0 (wall).

If you want polygons you can use a GeometryCoercer to force the faces to polygons.

You can then use a Matcher (match in the building ID) to get building which are made up of multiple faces, those which have no match will be just single polygons​

Reply