Question

Raster of surface (buildings) to point cloud extruded to ground


Hi,

 

I guess the title is pretty self explanatory, here's some screenshots.

Went from this surface model, that has been clipped by shapefile of buildings with average Z value of pixels within each of polygons

to this... (tilted view)

and need to extrude the point cloud to preferably ground or at least a fixed value that will go through the ground (might clip them later, not really necessary). Basically trying to to "extend sides to ground" function from Google Earth Pro but with point cloud (I do have the terrain DEM as well, doing this approach because I don't want vegetation in my final result and the terrain DEM has better resolution)

I'm pretty new to FME, so simpler, more begginner-ish solutions would probably be better.


5 replies

Badge +12

Hi @adam5514

 

I'm not sure I understood what part of your data was stored as pointcloud? The DEM or the buildings?

 

If it is the buildings, you might want to transform them to polygons instead, using a HullReplacer.

 

 

Unfortunately, the Extruder only extrudes with a value, not to a (z)value. And it can't extrude different vertices with different amounts either, so you can't use an equation to compute how much each vertice on the buildings should be extruded downwards to reach the ground.

 

 

One (computer heavy) solution is to extrude the building polygons well below ground level (say -1000 m), then extrude the DTM upwards so that it is well above the tallest buildings (say +1000 m) - and then use a Clipper to clip the building volumes with the DTM volume. This will create buildings with walls extended to the ground.

Hi @adam5514

 

I'm not sure I understood what part of your data was stored as pointcloud? The DEM or the buildings?

 

If it is the buildings, you might want to transform them to polygons instead, using a HullReplacer.

 

 

Unfortunately, the Extruder only extrudes with a value, not to a (z)value. And it can't extrude different vertices with different amounts either, so you can't use an equation to compute how much each vertice on the buildings should be extruded downwards to reach the ground.

 

 

One (computer heavy) solution is to extrude the building polygons well below ground level (say -1000 m), then extrude the DTM upwards so that it is well above the tallest buildings (say +1000 m) - and then use a Clipper to clip the building volumes with the DTM volume. This will create buildings with walls extended to the ground.

Might have described my problem wrong. The final product should be a point cloud, the input data is a raster of surface and a shapefile of buildings in the same area. I clipped the raster with the shapefile, filtering out everything but the buildings.

Nevertheless you gave me an idea. Would it be possible to... either assign any one of the raster value to each polygon on top of it (like a value from cell that is in the polygons centroid) or... somehow looping an offsetter to the point cloud in my second screenshot to extrude it that way?

Badge +12

Might have described my problem wrong. The final product should be a point cloud, the input data is a raster of surface and a shapefile of buildings in the same area. I clipped the raster with the shapefile, filtering out everything but the buildings.

Nevertheless you gave me an idea. Would it be possible to... either assign any one of the raster value to each polygon on top of it (like a value from cell that is in the polygons centroid) or... somehow looping an offsetter to the point cloud in my second screenshot to extrude it that way?

If you could upload a sample of your input data, I am pretty sure that someone could help you to get what you want.

If you could upload a sample of your input data, I am pretty sure that someone could help you to get what you want.

Very well, here's some sample data. I wish to create a point cloud of the terrain and buildings (with flat rooftops for simplicity). The sample is just two tiff files of mentioned inputs. sample_data.zip

Hi @adam5514, if you are okay with using the elevation of the polygon centroid as the ground elevation for the buildings, the attached workspace may work for you. So I offset the polygons using the centroids elevation, and extrude them into solids with the building heights, then convert to point clouds. Hope this helps.

 

rastertopointcloud.fmw

Reply