Question

How can i create a 3D City Model from 2D polygons?


Hey,

I have polygons with a height information (in meter) in the attributes. (Those are buildings)

 

How can I use this z value (height) and create a 3D model from my polygons?

 

 

For some Objects i dont have the height information, could I set some default height for all of the Objects which do not have any hight information? - if yes, how?

 

 

Kind Regards!

11 replies

Userlevel 2
Badge +17

Hi @binabina, you can use the Extruder transformer to create 3D solids from a 2D polygons.

Userlevel 1
Badge +11

Hi @binabina,

your question reminded me of this article on 2D to Simple 3D Model: Extrude Building Outlines that might be helpful to check out, as it also hits on the topic of a extruding 2D polygons to 3D buildings . It shows an example of using the Extruder transformer that @takashi suggested.

If you need to set an arbitrary default height for buildings that don't already have the height information, you could probably set up the missing attribute and default value using an AttributeManager before running it through the Extruder. Be sure to filter out those buildings without heights before setting the attributes, so it doesn't replace valid building heights. You can do that filtering process with a Tester.

Hope that helps a bit!

Badge +12

Hi @binabina, I just want to add that when you use an Extruder on the 2D polygons, you extrude them with a z-value, and not to a specific height above ground. In reality, your buildings probably don't have their base on z=0 but are located on different heights. So in order to get a correct model, you first have to get a base height on each of your 2D building polygons (for instance from a DEM), and then extrude them.

Hi @binabina,

your question reminded me of this article on 2D to Simple 3D Model: Extrude Building Outlines that might be helpful to check out, as it also hits on the topic of a extruding 2D polygons to 3D buildings . It shows an example of using the Extruder transformer that @takashi suggested.

If you need to set an arbitrary default height for buildings that don't already have the height information, you could probably set up the missing attribute and default value using an AttributeManager before running it through the Extruder. Be sure to filter out those buildings without heights before setting the attributes, so it doesn't replace valid building heights. You can do that filtering process with a Tester.

Hope that helps a bit!

Thank you.

 

The AttributeManager did not work for me, i tried do choose a default value for those which are empty (tester worked) but he did not but values inside

Hi @binabina, I just want to add that when you use an Extruder on the 2D polygons, you extrude them with a z-value, and not to a specific height above ground. In reality, your buildings probably don't have their base on z=0 but are located on different heights. So in order to get a correct model, you first have to get a base height on each of your 2D building polygons (for instance from a DEM), and then extrude them.

Thank you for your help.

 

Do you know how i could add the basic height?
Badge +12

Thank you for your help.

 

Do you know how i could add the basic height?

This is how I have solved it, @binabina :

Userlevel 1
Badge +11

Thank you.

 

The AttributeManager did not work for me, i tried do choose a default value for those which are empty (tester worked) but he did not but values inside

hmm, can you share what your workspace looks like, perhaps with a screenshot similar to jonas_nelson's? I was imagining a Tester > AttributeManager to set a height attribute with a default value > Extruder to extrude these polygons to the default height by the attribute created in the AttributeManager.

This is how I have solved it, @binabina :

Thank you!

 

What if I dont have any DEM? And what exactly is the minimum and maximum z value?

 

 

Do you maybe know how i could put on a roof on my buildings after the extruder?
Badge +12

Thank you!

 

What if I dont have any DEM? And what exactly is the minimum and maximum z value?

 

 

Do you maybe know how i could put on a roof on my buildings after the extruder?

When you drape a polygon onto a DEM, each vertex of the polygon gets a z-value from the DEM. On a slope, four corners of a building will each get a different z-value. But you usually want the base of the building to be flat, so if you choose the lowest of these values (z_min), then your building polygon will get a base height from the lowest vertex.

 

 

If you do not have any elevation data for the ground, then you can't automatically extract any base heights for the buildings, of course.

 

 

Creating a correct roof shape is very difficult with FME. There are better softwares for that, working with LAS pointclouds or multi-image photogrammetry.

Hi @binabina,

your question reminded me of this article on 2D to Simple 3D Model: Extrude Building Outlines that might be helpful to check out, as it also hits on the topic of a extruding 2D polygons to 3D buildings . It shows an example of using the Extruder transformer that @takashi suggested.

If you need to set an arbitrary default height for buildings that don't already have the height information, you could probably set up the missing attribute and default value using an AttributeManager before running it through the Extruder. Be sure to filter out those buildings without heights before setting the attributes, so it doesn't replace valid building heights. You can do that filtering process with a Tester.

Hope that helps a bit!

This is my workbench and attribute manager.. maybe my attribute manager has wrong setting? The attribute where u want to add values is calculated_height

 

When you drape a polygon onto a DEM, each vertex of the polygon gets a z-value from the DEM. On a slope, four corners of a building will each get a different z-value. But you usually want the base of the building to be flat, so if you choose the lowest of these values (z_min), then your building polygon will get a base height from the lowest vertex.

 

 

If you do not have any elevation data for the ground, then you can't automatically extract any base heights for the buildings, of course.

 

 

Creating a correct roof shape is very difficult with FME. There are better softwares for that, working with LAS pointclouds or multi-image photogrammetry.

I have a question about the surface draper: what if i do not have points or lines?

Reply