My task is to generate 3D polygons from line data, which will then be imported into TerraExplorer 3D presentation software. Problems arise when there are overlapping lines in 2D space, but which have different Z values.

I am primarily using GeoMedia, but I also have access to FME.

The line features are divided into four categories: 'Roof edge', 'Building line' (generalised), 'Top of sloping roof', 'Roof edge inside the building body' and 'Bottom of roof edge inside building body'. (This is data from Norway, by the way. The names are way snappier in norwegian.)

The first three are easy to polygonize. But to ensure the 3D polygon is correct with sloping roofs, I need to make the lines join to each other based not only on X and Y coordinates, but also on Z value.

enter image description here

This is the starting situation. The red, purple and orange lines are 'Roof edge', 'Building line' and 'Top of sloping roof'

Green is 'Roof edge inside building body' and underneath it is 'Bottom of roof edge inside building body'. The labels are the Z values for each nodepoint in the lines.

I need to make sure that 'Roof edge' connects to either 'Roof edge IBB' or 'Bottom of roof edge IBB' based on which of those it has the same Z value as.

enter image description here

This is what happens when I generate polygons from all available lines in GeoMedia. It extracts the Z value from the top or bottom line seemingly at random. I could do this manually and select only the relevant line for the polygon part, but that is not an option when I'm supposed to generate 3D buildings for a medium sized city.

I'm not sure GeoMedia will help me any further in this process.

Can FME help with 3D object generating from 3D lines and snapping to 2D-equal 3D lines?

I am not Python fluent.


Since you have FME I would try running the data through the LineJoiner transformer. There is a parameter in there (called "Consider Node Elevation) that lets you control whether to connect based on just X/Y or whether to include the Z value too.

This is just joining lines, not creating polygons, and when three lines meet at a single point it's not certain which one will get joined. But what I'm hoping is that this will pre-process the data enough that the GeoMedia polygon generator will produce better results.

I think it's worth a try. It should only take a few seconds to confirm whether it helps or not.

The alternative is to try the AreaBuilder transformer, which will actually create polygon features. But it doesn't have the option to control Z value, so I'm not certain if the results would be better or not. Again, I think it's worth a try if nothing else works.

Your Answer

