Solved

Create 3D voxel or polygon from rasters


Badge

Hi FMErs,

I have 3 rasters of equal extents and cell size (clipped to the same 2D polygon)

a) representing the floor elevation of a sub-surface strata

b) representing the thickness of the same sub-surface strata

c) representing the roof elevation of he same sub-surface strata

Looking for tips on the best / most efficient way to create a 3D polygon in FME similar to ESRI extrude between, and assuming other strata sections are available in the same raster form , iterate through each strata section to create a 3D subsurface model.

Thanks in advance

icon

Best answer by fmelizard 6 July 2018, 08:18

View original

6 replies

Badge
Update: May need to consider something similar to a 3D building with a floor plan and extruding the height of the building. Just not sure how a variable Z height value for extruding would work if the top of building is not flat.

 

 

Userlevel 4
Badge +13

So this was too intriguing not to give a crack at. So I talked to the team and we came up with the following.

The main trick is to use the RasterBandCombiner to get all 3 of your rasters into 1 raster that has 3 bands. Important to know the order, hence the use of a sorter in my example workspace. From there, the RasterToPolygonCoercer is likely the best option - it makes a polygon for each unique value set from the 3 bands. And it gives each polygon a label, which is the values of those bands, that you can then split to get out the 3 values you want to work with. I couldn't figure out what you really wanted to do with all 3, but I gave an example using the Extruder and Offsetter to make 3D buildings.

(I also showed what you'd do if you really wanted each cell on its own...though I suspect merging like cells is a better plan if your final use wants that.)

I faked some data for this -- the entire example is attached as well as a template rasterextrusion.fmwt. (Basically I used a small set of buildings from the recent Bing building dataset on my favourite Hawaiian island and rasterized those with some random #s...)

Hope this helps.

Userlevel 4
Badge +13

So this was too intriguing not to give a crack at. So I talked to the team and we came up with the following.

The main trick is to use the RasterBandCombiner to get all 3 of your rasters into 1 raster that has 3 bands. Important to know the order, hence the use of a sorter in my example workspace. From there, the RasterToPolygonCoercer is likely the best option - it makes a polygon for each unique value set from the 3 bands. And it gives each polygon a label, which is the values of those bands, that you can then split to get out the 3 values you want to work with. I couldn't figure out what you really wanted to do with all 3, but I gave an example using the Extruder and Offsetter to make 3D buildings.

(I also showed what you'd do if you really wanted each cell on its own...though I suspect merging like cells is a better plan if your final use wants that.)

I faked some data for this -- the entire example is attached as well as a template rasterextrusion.fmwt. (Basically I used a small set of buildings from the recent Bing building dataset on my favourite Hawaiian island and rasterized those with some random #s...)

Hope this helps.

PS: The above example was made with FME 2018.0 - but the technique shown here would work with older FMEs as well.

 

 

Badge

Absolutely fantastic concept @daleatsafe ! , and could be used in scenarios where only one surface and a thickness is available from source. Will try to share results where possible.

This technique may have broader application for simple subsurface geology visualisation without going through the pain of creating and then merging voxels or converting rasters to point clouds. However, both of these paths are still available with your suggestion - brilliant !!!

Badge +2

See also this question for a 3D voxel representation.

Badge

See also this question for a 3D voxel representation.

Thanks @MarkAtSafe ! The concept for simple subsurface geology representation here is not to require recalculation or processing of everything in between layers of the same strata type. Generally, a 3D polygon will be good enough.

 

When the 3D geometry of each strata layer is overlayed, the resulting stack of stratum should look great. Potentially could also avoid the need for expensive alternate software.

Reply