How to Dissolve Geometry Solids

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2022.0

Introduction

Dissolving geometry solids is a 3D transformation in FME that removes common boundaries of smaller solids to create larger solids. This technique is commonly used to remove additional solid faces to improve rendering performance. In FME 2022.0, we’ve added a SolidDissolver transformer that can perform this task easily. In previous versions of FME, this could be achieved by using the Clipper transformer and a 3D bounding box, or by using the SolidDissolver custom transformer from the FME Hub, which has been deprecated in FME 2022 and replaced with the shipped transformer. 

Note that upgrades to the Clipper in FME 2022.0, result in the Clipper method of dissolving solids no longer working. Previous versions of the Clipper performed a preprocessing step on solid Clipper geometries where they would be dissolved together. In FME 2022.0 the preprocessing step was removed as the Clipper now clips solids individually. If this is not the desired result, please use the SolidDissolver method listed below. 
 

Step-by-step Instructions

Method 1: SolidDissolver - FME 2022 or Newer 


1. Read in Buildings 
Open FME Workbench and start a blank workspace. Add an FME Feature Store (FFS) reader to the canvas and browse to the NY_Test2_Solids_Sample.ffs dataset that is available for download from the Files section of this article. 
FFSReader.png

2. Inspect Dataset
Click on the NY_Test2_Solids_Sample reader feature type to open the popup menu, then click on View Source Data to open the dataset in Visual Preview. 
ViewSourceData.png

This dataset contains five individual solids that make up a small cluster of buildings in New York City. To help render these solids quicker in a later project, we want to combine them (dissolve) into a single solid. 
StartingVP.png

3. Dissolve Solids
Add a SolidDissolver transformer to the canvas and connect it to the reader feature type. We can accept the default parameters. The SolidDissover is new for FME 2022, but previously, a custom transformer was available on the FME Hub of the same name and had similar functionality. 
SolidDissolver.png

4. Run Workspace
Add an Inspector to the SolidDissolver Solid output port then run the workspace. View the results in Visual Preview. 
SolidDissoverOutput.png

 

Method 2: Clipper with 3D Bounding Box - FME 2021.2 and Prior

Note that this method will not work in FME 2022.0 or newer due to changes with the Clipper, please use Method 1. Alternatively, if you need to clip the dissolved solid, you can add the SolidDissolver prior to the Clipper in FME 2022.0, then continue your workspace as before. 


1. Read in Buildings 
Open FME Workbench and start a blank workspace. Add an FME Feature Store (FFS) reader to the canvas and browse to the NY_Test2_Solids_Sample.ffs dataset that is available for download from the Files section of this article. 
FFSReader.png

2. Inspect Dataset
Click on the NY_Test2_Solids_Sample reader feature type to open the popup menu, then click on View Source Data to open the dataset in Visual Preview. 
ViewSourceData.png

This dataset contains five individual solids that make up a small cluster of buildings in New York City. To help render these solids quicker in a later project, we want to combine them (dissolve) into a single solid. 
StartingVP.png


3. Create Bounding Box
Before using the Clipper to dissolve the solids, we need to create a bounding box to contain them. Add an Aggregator to the canvas and connect it to the reader feature type. We can accept the default parameters. The Aggregator combines the solids into a single solid, but there are still faces within the solid that we need to remove to improve performance. 

Next, we’ll use the BoundingBoxReplacer to replace the solids with a bounding box. Add a BoundingBoxReplacer to the canvas and connect it to the Aggregator. In the parameters, set Replace With to 3D Bounding Cube,
BoundingBoxReplacer.png

4. Clip Solids with Bounding Box
Next, we need to clip the solids with the bounding box to create a single solid. Add a Clipper to the canvas, connect the Clipper input port to the reader feature type, and connect the Clippee input port to the BoundingBoxReplacer. We can accept the default parameters for the Clipper.
ClipperConnections.png

5. Run Workspace
Add a Logger to the <Rejected> output port on the Clipper or set Workspace Rejected Feature Handling to Continue by right-clicking on the <Rejected> port. 

Add an Inspector to the Inside output port, then run the workspace. The Inside port will be the single solid created from the inside of the bounding box. 
ClipperOutput.png
 

Data Attribution

The original data was downloaded from OpenStreetMap under the Open Data Commons Open Database License and was modified and provided to us by HOK
 

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.